Problem: Users need a central place to customize their reading experience — font size, theme, language, translation preference, and account management.
Solution: A comprehensive settings page organized into clear sections: Display, Language, Bible Translation, Account, Data, and About. All settings persist to localStorage and take effect immediately.
Not included: Advanced settings like custom CSS, notification preferences, or keyboard remapping. This is focused on reading experience and account basics.
A single page at /settings with organized sections for all user preferences.
Sections:
User flow:
/settingsEdge cases:
Layout: Vertical sections with clear headings (Display, Language, etc.) Controls: Button groups for discrete options (theme, font size, language), dropdown for translation Live preview: Shows Genesis 1:1-2 at the selected font size and theme Responsive: Same layout on mobile, controls stack vertically
Route: /settings — apps/web/src/routes/(app)/settings/+page.svelte
State: All settings in settings.svelte.ts, persisted to localStorage under key bibleweb_settings. Includes: theme, fontSize, language, translation, comfortProfile.
Translation dropdown: Fetches /api/translations on mount to populate the select options.
Tier gating: Export notes uses TierGate component with feature="noteExport".
Files:
apps/web/src/routes/(app)/settings/+page.svelte — the pageapps/web/src/lib/stores/settings.svelte.ts — settings state + persistenceCurrent: DONE Milestone: Foundation (pre-v1) Priority: Core — central configuration hub
Dependencies: