Refactor to generic ERP base

Remove influencer-specific features (campaigns, TikTok, gifts, shadow ledger,
contracts, briefings) and consolidate into a clean ERP foundation with core
bookkeeping, invoicing, receipts, tax reporting, and calendar functionality.
Reorganize database migrations into a clean numbered sequence.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jakob Wennberg
2026-02-13 15:39:13 +01:00
co-authored by Claude Opus 4.6
parent a25d10a528
commit 0aecf5b41c
184 changed files with 1418 additions and 24763 deletions
+1 -30
View File
@@ -7,7 +7,7 @@ import webpush from 'web-push'
// Configure web-push with VAPID keys
const vapidPublicKey = process.env.NEXT_PUBLIC_VAPID_PUBLIC_KEY
const vapidPrivateKey = process.env.VAPID_PRIVATE_KEY
const vapidSubject = process.env.VAPID_SUBJECT || 'mailto:support@influencer-biz.se'
const vapidSubject = process.env.VAPID_SUBJECT || 'mailto:support@erp-base.se'
if (vapidPublicKey && vapidPrivateKey) {
webpush.setVapidDetails(vapidSubject, vapidPublicKey, vapidPrivateKey)
@@ -191,35 +191,6 @@ export function createInvoicePayload(
}
}
/**
* Create notification payload for campaign deadline
*/
export function createCampaignDeadlinePayload(
campaignName: string,
deliverableTitle: string,
dueDate: string,
daysUntil: number,
deadlineId: string
): NotificationPayload {
const urgencyText = daysUntil === 0 ? 'IDAG!' : daysUntil === 1 ? 'imorgon' : `om ${daysUntil} dagar`
return {
title: `🎬 ${campaignName}`,
body: `${deliverableTitle} - leverans ${urgencyText}`,
icon: '/icons/icon-192.png',
badge: '/icons/badge-72.png',
tag: `campaign-deadline-${deadlineId}`,
data: {
url: '/calendar',
type: 'campaign_deadline',
id: deadlineId,
},
actions: [
{ action: 'view', title: 'Visa' },
],
}
}
/**
* Format date for notifications
*/