Alexander Bocken 8dd1e3852e refactor: consolidate formatting utilities and add testing infrastructure
- Replace 8 duplicate formatCurrency functions with shared utility
- Add comprehensive formatter utilities (currency, date, number, etc.)
- Set up Vitest for unit testing with 38 passing tests
- Set up Playwright for E2E testing
- Consolidate database connection to single source (src/utils/db.ts)
- Add auth middleware helpers to reduce code duplication
- Fix display bug: remove spurious minus sign in recent activity amounts
- Add path aliases for cleaner imports ($utils, $models)
- Add project documentation (CODEMAP.md, REFACTORING_PLAN.md)

Test coverage: 38 unit tests passing
Build: successful with no breaking changes
2025-11-18 15:24:22 +01:00
2023-06-24 15:35:36 +02:00
2023-06-24 15:35:36 +02:00
2023-06-24 15:33:41 +02:00
2024-02-18 15:23:14 +01:00
2023-06-24 15:35:36 +02:00
2025-09-04 11:52:28 +02:00

Personal Homepage

My own homepage, bocken.org, built with svelte-kit.

TODO

General

  • Admin user management -> move to authentik via oIDC
    • login to authentik
    • only let rezepte_users edit recipes -> currently only letting them log in, should be changed
    • get user info from authentik (more than email and name)
    • upload pfp
  • upload/change pfp
  • registration only with minimal permissions
  • logout without /logout page
  • preferences page
  • change password
  • css dark mode @media (prefers-color-scheme: dark) {}
  • dark mode toggle

Rezepte

  • Do not list recipes that are all-year as "seasonal"
  • nutrition facts
  • verify randomize arrays based on day
  • 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?
    • do not blur images without js
    • 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

  • create LDAP and OpenID

E-Mail

  • emailwiz setup
  • fail2ban
  • LDAP?

Dendrite

  • setup dendrite
  • Connect to LDAP/OIDC (waiting on upstream)
  • Serve some web-frontend -> Just element?

Gitea

  • consistent theming
  • OpenID Connect
  • sane landing page

Jellyfin

  • connect to LDAP
  • consitent theming

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 (waiting on upstream)

Nextcloud

  • consistent theming
  • collabora integration

Transmission

  • move behind authentik
Description
My personal website built to learn SvelteKit. The largest part is the Recipes subsection.
https://bocken.org
Readme AGPL-3.0 81 MiB
Languages
Svelte 72.5%
TypeScript 25.1%
CSS 1.3%
Python 0.7%
Shell 0.2%
Other 0.2%