Password auth, artist folders, timezone fix

Add password-based registration + login alongside existing magic links.
New /register and updated /login with tabs (password default, magic link
as alternative). Bun.password.hash/verify for bcrypt. Auto-login on
register. Landing page CTAs point to /register.

Add projects.artist field for grouping projects by artist in sidebar.
Sidebar shows collapsible artist sections (▸ Anna Berger) with project
counts, "Ohne Zuordnung" for ungrouped projects. Search filters across
artist names. New/edit project forms include artist field.

Fix timezone bug: set postgres connection timezone to UTC so magic link
expiry works correctly in CEST and other non-UTC timezones.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Robin Choice
2026-04-12 19:06:06 +02:00
parent 8bf72c2482
commit 09e47d8800
19 changed files with 2335 additions and 76 deletions

View File

@@ -3,6 +3,7 @@
import { page } from '$app/stores';
import { checkAuth, authLoading } from '$lib/stores/auth.js';
import ToastContainer from '$lib/components/ui/ToastContainer.svelte';
// @ts-ignore — no types shipped for fontsource
import '@fontsource-variable/inter';
let { children } = $props();
@@ -11,7 +12,9 @@
const isPublic = $derived(
$page.url.pathname === '/' ||
$page.url.pathname === '/login' ||
$page.url.pathname.startsWith('/listen/'),
$page.url.pathname === '/register' ||
$page.url.pathname.startsWith('/listen/') ||
$page.url.pathname.startsWith('/auth/'),
);
onMount(() => {