166 lines
12 KiB
TypeScript
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"
|
|
};
|