docs & feat: update project plan to E2E encrypted server storage & initialize monorepo client/server codebases

This commit is contained in:
2026-05-27 21:22:02 +02:00
parent d4b3cc2d74
commit db8b454a9e
43 changed files with 10646 additions and 206 deletions
+25
View File
@@ -0,0 +1,25 @@
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
import LanguageDetector from 'i18next-browser-languagedetector'
import enTranslation from './locales/en.json'
import deTranslation from './locales/de.json'
i18n
.use(LanguageDetector)
.use(initReactI18next)
.init({
resources: {
en: enTranslation,
de: deTranslation
},
fallbackLng: 'en',
interpolation: {
escapeValue: false // React already escapes values (prevents XSS)
},
detection: {
order: ['localStorage', 'navigator'],
caches: ['localStorage']
}
})
export default i18n
+49
View File
@@ -0,0 +1,49 @@
{
"translation": {
"app": {
"name": "Kapteins Daagbox",
"tagline": "Privates Yacht-Logbuch"
},
"nav": {
"dashboard": "Dashboard",
"vessel": "Schiffsdaten",
"crew": "Crew-Liste",
"deviation": "Ablenkungstabelle",
"logs": "Logbucheinträge",
"settings": "Einstellungen"
},
"auth": {
"welcome": "Willkommen bei Kapteins Daagbox",
"tagline": "Sicheres, E2E-verschlüsseltes maritimes Logbuch.",
"register": "Mit Passkey registrieren",
"login": "Mit Passkey anmelden",
"recovery_title": "Ihr Wiederherstellungsschlüssel",
"recovery_warning": "WICHTIG: Schreiben Sie diese 12 Wörter auf. Wenn Sie Ihren Passkey und diese Wörter verlieren, können Ihre Daten nicht wiederhergestellt werden.",
"confirm_recovery": "Ich habe die Wörter aufgeschrieben",
"status_logged_in": "Angemeldet",
"status_logged_out": "Abgemeldet"
},
"sync": {
"status_synced": "Synchronisiert",
"status_offline": "Offline-Cache",
"status_unsynced": "Unsynchronisierte Änderungen"
},
"vessel": {
"title": "Schiffs-Stammdaten",
"name": "Yachtname",
"port": "Heimathafen",
"owner": "Eigner",
"callsign": "Funk-Rufzeichen",
"mmsi": "MMSI-Nr"
},
"logs": {
"title": "Logbuch-Journal",
"new_entry": "Neuer Eintrag",
"date": "Datum",
"route": "Reise von/nach",
"coordinates": "Koordinaten",
"weather": "Wetterbedingungen",
"save": "Eintrag speichern"
}
}
}
+49
View File
@@ -0,0 +1,49 @@
{
"translation": {
"app": {
"name": "Kapteins Daagbox",
"tagline": "Private Yacht Logbook"
},
"nav": {
"dashboard": "Dashboard",
"vessel": "Vessel Profile",
"crew": "Crew List",
"deviation": "Deviation Table",
"logs": "Logbook Entries",
"settings": "Settings"
},
"auth": {
"welcome": "Welcome to Kapteins Daagbox",
"tagline": "Secure, E2E encrypted maritime logbook.",
"register": "Register with Passkey",
"login": "Login with Passkey",
"recovery_title": "Your Recovery Phrase",
"recovery_warning": "IMPORTANT: Write down these 12 words. If you lose your Passkey and these words, your data cannot be recovered.",
"confirm_recovery": "I have written down the recovery phrase",
"status_logged_in": "Logged in",
"status_logged_out": "Logged out"
},
"sync": {
"status_synced": "Synced",
"status_offline": "Offline Cache",
"status_unsynced": "Unsynced changes"
},
"vessel": {
"title": "Vessel Master Data",
"name": "Yacht Name",
"port": "Home Port",
"owner": "Owner",
"callsign": "Call Sign",
"mmsi": "MMSI Number"
},
"logs": {
"title": "Logbook Journal",
"new_entry": "New Log Entry",
"date": "Date",
"route": "Route",
"coordinates": "Coordinates",
"weather": "Weather Conditions",
"save": "Save Entry"
}
}
}