Files
Calbook/lib/constants.ts

166 lines
12 KiB
TypeScript

export const SETTING_KEYS = {
COMPANY_NAME: "company_name",
COMPANY_LOGO_URL: "company_logo_url",
BRANDING_ACCENT_COLOR: "branding_accent_color",
FRONTEND_HEADER_TEXT: "frontend_header_text",
FRONTEND_HEADER_LOGO_URL: "frontend_header_logo_url",
FOOTER_PRIVACY_LABEL: "footer_privacy_label",
FOOTER_PRIVACY_URL: "footer_privacy_url",
FOOTER_IMPRINT_LABEL: "footer_imprint_label",
FOOTER_IMPRINT_URL: "footer_imprint_url",
FOOTER_COPYRIGHT_TEXT: "footer_copyright_text",
PRIVACY_PAGE_TITLE: "privacy_page_title",
PRIVACY_PAGE_CONTENT: "privacy_page_content",
IMPRINT_PAGE_TITLE: "imprint_page_title",
IMPRINT_PAGE_CONTENT: "imprint_page_content",
CONTACT_EMAIL: "contact_email",
DEFAULT_DURATION_MINUTES: "default_duration_minutes",
BUFFER_MINUTES: "buffer_minutes",
BOOKING_LEAD_HOURS: "booking_lead_hours",
BOOKING_WINDOW_DAYS: "booking_window_days",
BOOKING_ALLOWED_WEEKDAYS: "booking_allowed_weekdays",
BOOKING_DAY_START_TIME: "booking_day_start_time",
BOOKING_DAY_END_TIME: "booking_day_end_time",
BOOKING_NOTICE_TEXT: "booking_notice_text",
CANCEL_LIMIT_HOURS: "cancel_limit_hours",
REMINDER_PRIMARY_HOURS: "reminder_primary_hours",
REMINDER_SECONDARY_HOURS: "reminder_secondary_hours",
JITSI_MEETING_MODE: "jitsi_meeting_mode",
JITSI_BASE_URL: "jitsi_base_url",
JITSI_ROOM_PREFIX: "jitsi_room_prefix",
SMTP_HOST: "smtp_host",
SMTP_PORT: "smtp_port",
SMTP_USER: "smtp_user",
SMTP_PASS: "smtp_pass",
SMTP_FROM_NAME: "smtp_from_name",
SMTP_FROM: "smtp_from",
EMAIL_SUBJECT_CUSTOMER_CONFIRM: "email_subject_customer_confirm",
EMAIL_SUBJECT_STAFF_NOTIFY: "email_subject_staff_notify",
EMAIL_SUBJECT_CANCELLATION_CUSTOMER: "email_subject_cancellation_customer",
EMAIL_SUBJECT_CANCELLATION_STAFF: "email_subject_cancellation_staff",
EMAIL_SUBJECT_REMINDER_CUSTOMER: "email_subject_reminder_customer",
EMAIL_SUBJECT_REMINDER_STAFF: "email_subject_reminder_staff",
EMAIL_SUBJECT_REMINDER_CUSTOMER_PRIMARY: "email_subject_reminder_customer_primary",
EMAIL_SUBJECT_REMINDER_CUSTOMER_SECONDARY: "email_subject_reminder_customer_secondary",
EMAIL_SUBJECT_REMINDER_STAFF_PRIMARY: "email_subject_reminder_staff_primary",
EMAIL_SUBJECT_REMINDER_STAFF_SECONDARY: "email_subject_reminder_staff_secondary",
EMAIL_SUBJECT_SMTP_TEST: "email_subject_smtp_test",
EMAIL_TEMPLATE_CUSTOMER_CONFIRM: "email_template_customer_confirm",
EMAIL_TEMPLATE_STAFF_NOTIFY: "email_template_staff_notify",
EMAIL_TEMPLATE_CANCELLATION: "email_template_cancellation",
EMAIL_TEMPLATE_CANCELLATION_CUSTOMER: "email_template_cancellation_customer",
EMAIL_TEMPLATE_CANCELLATION_STAFF: "email_template_cancellation_staff",
EMAIL_TEMPLATE_REMINDER_CUSTOMER: "email_template_reminder_customer",
EMAIL_TEMPLATE_REMINDER_STAFF: "email_template_reminder_staff",
EMAIL_TEMPLATE_REMINDER_CUSTOMER_PRIMARY: "email_template_reminder_customer_primary",
EMAIL_TEMPLATE_REMINDER_CUSTOMER_SECONDARY: "email_template_reminder_customer_secondary",
EMAIL_TEMPLATE_REMINDER_STAFF_PRIMARY: "email_template_reminder_staff_primary",
EMAIL_TEMPLATE_REMINDER_STAFF_SECONDARY: "email_template_reminder_staff_secondary",
EMAIL_TEMPLATE_SMTP_TEST: "email_template_smtp_test",
EMAIL_STYLE_TEMPLATE_ID: "email_style_template_id",
EMAIL_TEMPLATE_ACTIVE_ID: "email_template_active_id",
EMAIL_TEMPLATE_CUSTOM_LIBRARY: "email_template_custom_library",
EMAIL_TEMPLATE_VERSION_LIBRARY: "email_template_version_library",
EMAIL_TEMPLATE_LIVE_VERSION_ID: "email_template_live_version_id",
EMAIL_TEMPLATE_DRAFT_VERSION_ID: "email_template_draft_version_id",
LATEST_BOOKINGS_ARCHIVED_KEYS: "latest_bookings_archived_keys",
INSTANT_MEETING_EMAIL_SUBJECT: "instant_meeting_email_subject",
INSTANT_MEETING_EMAIL_TEMPLATE: "instant_meeting_email_template",
INSTANT_MEETING_EMAIL_CACHE: "instant_meeting_email_cache",
UI_COLOR_MODE: "ui_color_mode"
} as const;
export const DEFAULT_SETTINGS: Record<string, string> = {
[SETTING_KEYS.COMPANY_NAME]: "CalBook",
[SETTING_KEYS.COMPANY_LOGO_URL]: "",
[SETTING_KEYS.BRANDING_ACCENT_COLOR]: "#4f46e5",
[SETTING_KEYS.FRONTEND_HEADER_TEXT]: "Gespräch",
[SETTING_KEYS.FRONTEND_HEADER_LOGO_URL]: "",
[SETTING_KEYS.FOOTER_PRIVACY_LABEL]: "Datenschutz",
[SETTING_KEYS.FOOTER_PRIVACY_URL]: "/datenschutz",
[SETTING_KEYS.FOOTER_IMPRINT_LABEL]: "Impressum",
[SETTING_KEYS.FOOTER_IMPRINT_URL]: "/impressum",
[SETTING_KEYS.FOOTER_COPYRIGHT_TEXT]: "© {{year}} {{companyName}}",
[SETTING_KEYS.PRIVACY_PAGE_TITLE]: "Datenschutz",
[SETTING_KEYS.PRIVACY_PAGE_CONTENT]:
"Diese Seite ist eine Vorlage. Bitte ergänze hier deine vollständige Datenschutzerklärung gemäß DSGVO.\n\nVerantwortlich:\n{{companyName}}\n\nZur Terminbuchung werden Kontaktdaten und Terminangaben verarbeitet, damit das Gespräch geplant und durchgeführt werden kann.",
[SETTING_KEYS.IMPRINT_PAGE_TITLE]: "Impressum",
[SETTING_KEYS.IMPRINT_PAGE_CONTENT]:
"Diese Seite ist eine Vorlage. Bitte trage hier die rechtlich notwendigen Angaben für dein Unternehmen ein.\n\nAngaben gemäß § 5 TMG\n{{companyName}}\nStraße und Hausnummer\nPLZ Ort\n\nKontakt\nE-Mail: kontakt@example.com",
[SETTING_KEYS.CONTACT_EMAIL]: process.env.ADMIN_EMAIL ?? "kontakt@calbook.local",
[SETTING_KEYS.DEFAULT_DURATION_MINUTES]: process.env.DEFAULT_DURATION_MINUTES ?? "60",
[SETTING_KEYS.BUFFER_MINUTES]: process.env.DEFAULT_BUFFER_MINUTES ?? "10",
[SETTING_KEYS.BOOKING_LEAD_HOURS]: process.env.DEFAULT_BOOKING_LEAD_HOURS ?? "2",
[SETTING_KEYS.BOOKING_WINDOW_DAYS]: process.env.DEFAULT_BOOKING_WINDOW_DAYS ?? "60",
[SETTING_KEYS.BOOKING_ALLOWED_WEEKDAYS]:
process.env.DEFAULT_BOOKING_ALLOWED_WEEKDAYS ?? "0,1,2,3,4",
[SETTING_KEYS.BOOKING_DAY_START_TIME]:
process.env.DEFAULT_BOOKING_DAY_START_TIME ?? "09:00",
[SETTING_KEYS.BOOKING_DAY_END_TIME]:
process.env.DEFAULT_BOOKING_DAY_END_TIME ?? "17:00",
[SETTING_KEYS.BOOKING_NOTICE_TEXT]:
"Erzähl uns kurz, worum es bei dir geht - damit wir uns optimal vorbereiten können.",
[SETTING_KEYS.CANCEL_LIMIT_HOURS]: process.env.DEFAULT_CANCEL_HOURS ?? "24",
[SETTING_KEYS.REMINDER_PRIMARY_HOURS]:
process.env.DEFAULT_REMINDER_PRIMARY_HOURS ?? "24",
[SETTING_KEYS.REMINDER_SECONDARY_HOURS]:
process.env.DEFAULT_REMINDER_SECONDARY_HOURS ?? "1",
[SETTING_KEYS.JITSI_MEETING_MODE]: process.env.JITSI_MEETING_MODE ?? "public",
[SETTING_KEYS.JITSI_BASE_URL]: process.env.JITSI_BASE_URL ?? "https://meet.jit.si",
[SETTING_KEYS.JITSI_ROOM_PREFIX]: process.env.JITSI_ROOM_PREFIX ?? "calbook",
[SETTING_KEYS.SMTP_HOST]: process.env.SMTP_HOST ?? "",
[SETTING_KEYS.SMTP_PORT]: process.env.SMTP_PORT ?? "587",
[SETTING_KEYS.SMTP_USER]: process.env.SMTP_USER ?? "",
[SETTING_KEYS.SMTP_PASS]: process.env.SMTP_PASS ?? "",
[SETTING_KEYS.SMTP_FROM_NAME]: process.env.SMTP_FROM_NAME ?? "CalBook",
[SETTING_KEYS.SMTP_FROM]: process.env.SMTP_FROM ?? "no-reply@calbook.local",
[SETTING_KEYS.EMAIL_SUBJECT_CUSTOMER_CONFIRM]: "Dein Termin am {{date}} um {{time}} - Bestätigung",
[SETTING_KEYS.EMAIL_SUBJECT_STAFF_NOTIFY]: "Neue Buchung: {{customerName}} am {{date}} um {{time}}",
[SETTING_KEYS.EMAIL_SUBJECT_CANCELLATION_CUSTOMER]: "Termin storniert: {{date}} um {{time}}",
[SETTING_KEYS.EMAIL_SUBJECT_CANCELLATION_STAFF]: "Termin storniert: {{customerName}}",
[SETTING_KEYS.EMAIL_SUBJECT_REMINDER_CUSTOMER]: "Erinnerung: Dein Termin am {{date}} um {{time}}",
[SETTING_KEYS.EMAIL_SUBJECT_REMINDER_STAFF]: "Erinnerung: Termin mit {{customerName}} am {{date}} um {{time}}",
[SETTING_KEYS.EMAIL_SUBJECT_REMINDER_CUSTOMER_PRIMARY]: "Erinnerung: Dein Termin am {{date}} um {{time}}",
[SETTING_KEYS.EMAIL_SUBJECT_REMINDER_CUSTOMER_SECONDARY]: "Dein Termin startet bald: {{time}}",
[SETTING_KEYS.EMAIL_SUBJECT_REMINDER_STAFF_PRIMARY]: "Erinnerung: Termin mit {{customerName}} am {{date}} um {{time}}",
[SETTING_KEYS.EMAIL_SUBJECT_REMINDER_STAFF_SECONDARY]: "Termin startet bald: {{customerName}} um {{time}}",
[SETTING_KEYS.EMAIL_SUBJECT_SMTP_TEST]: "SMTP-Test von {{companyName}}",
[SETTING_KEYS.EMAIL_TEMPLATE_CUSTOMER_CONFIRM]:
"Hallo {{customerName}},\n\ndein Gespräch am {{date}} um {{time}} wurde bestätigt.\n\nZugewiesene Person(en): {{staffNames}}\nDauer: {{duration}} Minuten\n\n{{meetingButton}}\n\nFalls du absagen musst: {{cancelUrl}}\nFalls du umbuchen möchtest: {{rescheduleUrl}}\n\nViele Grüße\n{{companyName}}",
[SETTING_KEYS.EMAIL_TEMPLATE_STAFF_NOTIFY]:
"Neue Buchung für dich:\n\nKunde: {{customerName}}\nTermin: {{date}} um {{time}}\nTelefon: {{phone}}\nE-Mail: {{email}}\nNotizen: {{notes}}\n\n{{meetingButton}}\n\nDashboard: {{dashboardUrl}}",
[SETTING_KEYS.EMAIL_TEMPLATE_CANCELLATION]:
"Der Termin am {{date}} um {{time}} wurde storniert.\n\nKunde: {{customerName}}\nPerson(en): {{staffNames}}\n\nViele Grüße\n{{companyName}}",
[SETTING_KEYS.EMAIL_TEMPLATE_CANCELLATION_CUSTOMER]:
"Hallo {{customerName}},\n\ndein Termin am {{date}} um {{time}} wurde storniert.\n\nPerson(en): {{staffNames}}\n\nViele Grüße\n{{companyName}}",
[SETTING_KEYS.EMAIL_TEMPLATE_CANCELLATION_STAFF]:
"Hallo {{staffName}},\n\nder Termin mit {{customerName}} am {{date}} um {{time}} wurde storniert.\n\nPerson(en): {{staffNames}}\n\nViele Grüße\n{{companyName}}",
[SETTING_KEYS.EMAIL_TEMPLATE_REMINDER_CUSTOMER]:
"Hallo {{customerName}},\n\ndein Gespräch startet {{reminderLabel}}.\n\nDatum: {{date}}\nUhrzeit: {{time}}\nDauer: {{duration}} Minuten\nPerson(en): {{staffNames}}\n\n{{meetingButton}}\n\nFalls du absagen musst: {{cancelUrl}}\nFalls du umbuchen möchtest: {{rescheduleUrl}}\n\nViele Grüße\n{{companyName}}",
[SETTING_KEYS.EMAIL_TEMPLATE_REMINDER_STAFF]:
"Hallo {{staffName}},\n\nkurze Erinnerung: Der Termin mit {{customerName}} startet {{reminderLabel}}.\n\nDatum: {{date}}\nUhrzeit: {{time}}\nDauer: {{duration}} Minuten\nTelefon: {{phone}}\nE-Mail: {{email}}\nNotizen: {{notes}}\n\n{{meetingButton}}\n\nDashboard: {{dashboardUrl}}\n\nViele Grüße\n{{companyName}}",
[SETTING_KEYS.EMAIL_TEMPLATE_REMINDER_CUSTOMER_PRIMARY]:
"Hallo {{customerName}},\n\ndein Gespräch startet {{reminderLabel}}.\n\nDatum: {{date}}\nUhrzeit: {{time}}\nDauer: {{duration}} Minuten\nPerson(en): {{staffNames}}\n\n{{meetingButton}}\n\nFalls du absagen musst: {{cancelUrl}}\nFalls du umbuchen möchtest: {{rescheduleUrl}}\n\nViele Grüße\n{{companyName}}",
[SETTING_KEYS.EMAIL_TEMPLATE_REMINDER_CUSTOMER_SECONDARY]:
"Hallo {{customerName}},\n\nkurze Erinnerung: Dein Gespräch startet {{reminderLabel}}.\n\nDatum: {{date}}\nUhrzeit: {{time}}\n\n{{meetingButton}}\n\nFalls du absagen musst: {{cancelUrl}}\n\nViele Grüße\n{{companyName}}",
[SETTING_KEYS.EMAIL_TEMPLATE_REMINDER_STAFF_PRIMARY]:
"Hallo {{staffName}},\n\nkurze Erinnerung: Der Termin mit {{customerName}} startet {{reminderLabel}}.\n\nDatum: {{date}}\nUhrzeit: {{time}}\nDauer: {{duration}} Minuten\nTelefon: {{phone}}\nE-Mail: {{email}}\nNotizen: {{notes}}\n\n{{meetingButton}}\n\nDashboard: {{dashboardUrl}}\n\nViele Grüße\n{{companyName}}",
[SETTING_KEYS.EMAIL_TEMPLATE_REMINDER_STAFF_SECONDARY]:
"Hallo {{staffName}},\n\nder Termin mit {{customerName}} startet {{reminderLabel}}.\n\nUhrzeit: {{time}}\nTelefon: {{phone}}\nE-Mail: {{email}}\nNotizen: {{notes}}\n\n{{meetingButton}}\n\nDashboard: {{dashboardUrl}}",
[SETTING_KEYS.EMAIL_TEMPLATE_SMTP_TEST]:
"Diese Testmail bestätigt, dass SMTP in CalBook funktioniert.\n\nEmpfänger: {{recipientEmail}}\nZeitpunkt: {{timestamp}}\n\nViele Grüße\n{{companyName}}",
[SETTING_KEYS.EMAIL_STYLE_TEMPLATE_ID]: "minimal",
[SETTING_KEYS.EMAIL_TEMPLATE_ACTIVE_ID]: "standard:klassisch",
[SETTING_KEYS.EMAIL_TEMPLATE_CUSTOM_LIBRARY]: "[]",
[SETTING_KEYS.EMAIL_TEMPLATE_VERSION_LIBRARY]: "[]",
[SETTING_KEYS.EMAIL_TEMPLATE_LIVE_VERSION_ID]: "",
[SETTING_KEYS.EMAIL_TEMPLATE_DRAFT_VERSION_ID]: "",
[SETTING_KEYS.LATEST_BOOKINGS_ARCHIVED_KEYS]: "[]",
[SETTING_KEYS.INSTANT_MEETING_EMAIL_SUBJECT]:
"Sofort-Meeting: {{companyName}}",
[SETTING_KEYS.INSTANT_MEETING_EMAIL_TEMPLATE]:
"Hallo {{recipientName}},\n\nhier ist dein spontaner Meeting-Link:\n\n{{meetingButton}}\n\nMeeting-Link: {{meetingUrl}}\nAuswahl: {{scopeLabel}}\nGesendet von: {{initiatorName}}\n\n{{customMessage}}\n\nViele Grüße\n{{companyName}}",
[SETTING_KEYS.INSTANT_MEETING_EMAIL_CACHE]: "[]",
[SETTING_KEYS.UI_COLOR_MODE]: "light"
};