diff --git a/README.md b/README.md index 19eb17c..8d7d319 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,35 @@ # Personal Homepage -My own homepage, bocken.org, built with svelte-kit. +My own homepage, [bocken.org](https://bocken.org), built with SvelteKit and Svelte 5. + +## Features + +### Recipes (`/rezepte` · `/recipes`) +Bilingual recipe collection with search, category filtering, and seasonal recommendations. Authenticated users can add recipes and mark favorites. Recipes are browsable offline via service worker caching. + +### Faith (`/glaube` · `/faith`) +Catholic prayer collection in German, English, and Latin. Includes an interactive Rosary with scroll-synced SVG bead visualization, mystery images (sticky column on desktop, draggable PiP on mobile), decade progress tracking, and a daily streak counter. Adapts prayers for liturgical seasons like Eastertide. + +### Expense Sharing (`/cospend`) +Shared expense tracker with balance dashboards, debt breakdowns, monthly bar charts with category filtering, and payment management. + +### Self-Hosted Services +Landing pages and themed integrations for Gitea, Jellyfin, SearxNG, Photoprism, Jitsi, Webtrees, and more — all behind Authentik SSO. + +### Technical Highlights +- **PWA with offline support** — service worker with network-first caching, offline recipe browsing, and intelligent prefetching +- **Bilingual routing** — language derived from URL (`/rezepte` vs `/recipes`, `/glaube` vs `/faith`) with seamless switching +- **Nord theme** — consistent color palette with light/dark mode support +- **Auth** — Auth.js with OIDC/LDAP via Authentik, role-based access control +- **Progressive enhancement** — core functionality works without JavaScript ## TODO ### General -- [ ] Admin user management -> move to authentik via oIDC - - [x] login to authentik - - [x] only let rezepte_users edit recipes -> currently only letting them log in, should be changed - - [x] get user info from authentik (more than email and name) - - [ ] upload pfp -- [ ] upload/change pfp -- [x] registration only with minimal permissions -- [ ] logout without /logout page -- [ ] preferences page -- [x] change password -- [x] css dark mode `@media (prefers-color-scheme: dark) {}` -- [ ] dark mode toggle ### Rezepte -- [x] Do not list recipes that are all-year as "seasonal" -- [ ] nutrition facts -- [x] verify randomize arrays based on day -- [x] notes for next time -- [ ] refactor, like, a lot -- [ ] expose json-ld for recipes https://json-ld.org/ https://schema.org/Recipe -- [ ] reference other recipes in recipe - - [ ] add a link to the recipe - - [ ] add ingredients to the ingredients list - - [ ] include steps? -- [ ] add favoriting ability when logged in - - [ ] favorite button on recipe - - [ ] store favorites in DB -> add to user object - - [ ] favorite API endpoint (requires auth of user) - - [ ] set - - [ ] retrieve - - [ ] favorite page/MediaScroller -- [ ] graceful degradation for JS-less browsers - - [ ] use js-only class with display:none and remove it with JS - - [ ] disable search -> use form action instead on submit? - - [x] do not blur images without js - - [x] correct Recipe Card rendering - ### Glaube -- [ ] just keep it md rendered -- [ ] Google Speech to Text API integration? -- [ ] Gebete -### Outside of this sveltekit project but planned to run on the server as well -- [x] create LDAP and OpenID #### E-Mail - [x] emailwiz setup @@ -60,15 +41,6 @@ My own homepage, bocken.org, built with svelte-kit. - [ ] Connect to LDAP/OIDC (waiting on upstream) - [x] Serve some web-frontend -> Just element? -#### Gitea -- [ ] consistent theming -- [x] OpenID Connect -- [x] sane landing page - -#### Jellyfin -- [x] connect to LDAP -- [x] consitent theming - #### Webtrees - [x] setup Oauth2proxy -> not necessary, authentik has proxy integrated - [x] connect to OIDC using Oauth2proxy (using authentik) @@ -86,11 +58,4 @@ My own homepage, bocken.org, built with svelte-kit. #### Photoprism - [ ] consistent theming -- [ ] OIDC integration (waiting on upstream) - -#### Nextcloud -- [x] consistent theming -- [x] collabora integration - -#### Transmission -- [x] move behind authentik +- [x] OIDC integration