Add all 5 PPL+Upper/Lower templates matching the target split, with Day 3 (Legs) adjusted to include Bulgarian split squats and standing calf raises, and Day 5 (Lower) reworked with front squats, hip thrusts, and goblet squats — all equipment-free of machines. Also adds incline row, decline crunch, flat leg raise, and nordic hamstring curl to the exercise list, and updates the WorkoutTemplate model to use exerciseId instead of name for exercise references.
Personal Homepage
My own homepage, 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 (
/rezeptevs/recipes,/glaubevs/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
Rezepte
Glaube
- emailwiz setup
- fail2ban
- LDAP?
Dendrite
- setup dendrite
- Connect to LDAP/OIDC (waiting on upstream)
- Serve some web-frontend -> Just element?
Webtrees
- setup Oauth2proxy -> not necessary, authentik has proxy integrated
- connect to OIDC using Oauth2proxy (using authentik)
- consistent theming
- auto-login if not logged in
Jitsi
- consistent theming
- move away from docker
- find a way to improve max video quality without jitsi becoming unreliable
Searx
- investigate SearxNG as more reliable alternative
- consistent theming
Photoprism
- consistent theming
- OIDC integration