feat: birthday tracking, dashboard KPIs, and app name customization (#88)
- Add Birthdays module: CRUD with calendar/reminder auto-sync, photo upload, age notes - Add DB migration 18 (birthdays table with calendar_event_id, trigger, indexes) - Add dashboard widgets: birthdays, family participants, budget overview - Add Settings > General: admins can set a custom app name (reflected in title/sidebar/login) - Improve service worker: network-first caching for mutable JS/CSS assets - Add translations for 16 locales (birthday keys) Fixes applied during integration: - innerHTML replaced with insertAdjacentHTML/replaceChildren throughout birthdays.js and dashboard.js - docker-compose.yml personal dev changes reverted Co-authored-by: Rafael Foster <rafaelgfoster@gmail.com> Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
"shopping": "Shopping",
|
||||
"notes": "Anteckningar",
|
||||
"contacts": "Kontakter",
|
||||
"birthdays": "Födelsedagar",
|
||||
"budget": "Budget",
|
||||
"settings": "Inställningar",
|
||||
"main": "Huvudnavigering",
|
||||
@@ -82,6 +83,19 @@
|
||||
"allDay": "Hela dagen",
|
||||
"shoppingMore": "+{{count}} till",
|
||||
"weather": "Väder",
|
||||
"familyMembers": "Familjemedlemmar",
|
||||
"participantsAdded": "deltagare tillagda",
|
||||
"upcomingBirthdays": "Kommande födelsedagar",
|
||||
"noBirthdays": "Inga födelsedagar ännu",
|
||||
"daysLeft": "{{count}} dagar",
|
||||
"budgetOverview": "Budgetöversikt",
|
||||
"monthlyIncome": "Inkomster",
|
||||
"monthlyExpenses": "Utgifter",
|
||||
"monthlyBalance": "Saldo",
|
||||
"savingsRate": "Sparandegrad",
|
||||
"topExpense": "Största utgift",
|
||||
"budgetEntries": "Poster",
|
||||
"noBudgetData": "Ingen budgetdata denna månad.",
|
||||
"customize": "Anpassa",
|
||||
"customizeTitle": "Anpassa widgets",
|
||||
"customizeReset": "Återställ",
|
||||
@@ -537,6 +551,7 @@
|
||||
"tabAccount": "Konto",
|
||||
"tabsAriaLabel": "Inställningsavsnitt",
|
||||
"sectionDesign": "Utseende",
|
||||
"sectionAppName": "Appnamn",
|
||||
"sectionShopping": "Inköp",
|
||||
"shoppingCategoriesLabel": "Inköpskategorier",
|
||||
"shoppingCategoriesHint": "Lägg till, byt namn, ta bort eller sortera om kategorier.",
|
||||
@@ -554,6 +569,16 @@
|
||||
"sectionCalendarSync": "Kalendersynkronisering",
|
||||
"sectionFamily": "Familjemedlemmar",
|
||||
"cardAppearance": "Visa",
|
||||
"appNameTitle": "Appnamn",
|
||||
"appNameLabel": "Appnamn",
|
||||
"appNameHint": "Det här namnet visas i sidomenyn, webbläsarens titel och inloggningsskärmen.",
|
||||
"appNamePlaceholder": "Oikos",
|
||||
"appNameSavedToast": "Appnamn sparat.",
|
||||
"sectionDate": "Datum",
|
||||
"dateFormatTitle": "Datumformat",
|
||||
"dateFormatLabel": "Önskat datumformat",
|
||||
"dateFormatHint": "Välj hur datum visas i appen.",
|
||||
"dateFormatSavedToast": "Datumformat sparat.",
|
||||
"themeSystem": "System",
|
||||
"themeSysLabel": "Använd systeminställning",
|
||||
"themeLight": "Ljus",
|
||||
@@ -760,6 +785,34 @@
|
||||
"placeholder": "Sök…",
|
||||
"noResults": "Inga resultat hittades."
|
||||
},
|
||||
"birthdays": {
|
||||
"title": "Födelsedagar",
|
||||
"addButton": "Lägg till födelsedag",
|
||||
"searchPlaceholder": "Sök födelsedagar…",
|
||||
"upcomingTitle": "Kommande födelsedagar",
|
||||
"upcomingHint": "Nästa firanden, redan synkade med kalendern.",
|
||||
"peopleTitle": "Personer",
|
||||
"peopleHint": "Sök, granska och redigera alla sparade födelsedagar.",
|
||||
"emptyTitle": "Inga födelsedagar ännu",
|
||||
"emptyDescription": "Lägg till en födelsedag så att den syns i kalendern och påminnelserna.",
|
||||
"newTitle": "Ny födelsedag",
|
||||
"editTitle": "Redigera födelsedag",
|
||||
"nameLabel": "Namn",
|
||||
"birthDateLabel": "Födelsedatum",
|
||||
"photoLabel": "Profilbild",
|
||||
"removePhoto": "Ta bort bild",
|
||||
"notesLabel": "Anteckningar",
|
||||
"notesPlaceholder": "Presentidéer, favoritårta, familjeanteckningar…",
|
||||
"calendarHint": "Varje födelsedag läggs automatiskt till i kalendern och påminnelsesystemet.",
|
||||
"requiredFields": "Namn och födelsedatum krävs.",
|
||||
"createdToast": "Födelsedag sparad.",
|
||||
"updatedToast": "Födelsedag uppdaterad.",
|
||||
"deletedToast": "Födelsedag borttagen.",
|
||||
"deleteConfirm": "Ta bort födelsedagen för \"{{name}}\"?",
|
||||
"ageNoteToday": "Fyller {{age}} år idag.",
|
||||
"ageNoteTomorrow": "Fyller {{age}} år i morgon.",
|
||||
"ageNoteDays": "Fyller {{age}} år om {{days}} dagar."
|
||||
},
|
||||
"reminders": {
|
||||
"sectionTitle": "Påminnelse",
|
||||
"enableLabel": "Ange påminnelse",
|
||||
|
||||
Reference in New Issue
Block a user