Full MVP: workspace layout, visual refresh, PWA, production deploy

Major changes since initial commit:

Schema: version branching (parentVersionId, branchLabel), share links,
guest comments, track status enum (sketch/in_progress/final/released),
track sections, cover art for projects and tracks.

API: 29+ endpoints — auth, projects, tracks, versions, comments, share
links (public + management), uploads (cover), activity feed, onboarding
demo seed. Email templates in German with brand styling.

Web: SvelteKit 5 workspace layout with persistent sidebar, breadcrumb
top-bar, collapsible right panel. SoundCloud-style waveform player with
round play button, avatar comment markers, keyboard shortcuts (Space/JKL/C).
Full German UI. Cover art with gradient fallback. Track status pills.
Activity feed dashboard. Welcome modal with demo-seed trigger. Landing
page with 7-section scroll layout. Login on /login. Public /listen/:token
page for guest feedback.

Visual: Inter Variable font, Magenta→Orange gradient accent, warm dark
neutrals, Lucide-style inline SVG icon set, spring animations on modals,
glass-effect toasts, responsive from 360px to 2560px+.

PWA: manifest, service worker, icons, iOS/Android installable.

Production: adapter-node, server-side API proxy hook, docker-compose with
Postgres + MinIO + auto-migration + health checks. Env example included.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Robin Choice
2026-04-10 11:47:48 +02:00
parent 4dc095463f
commit 8bf72c2482
78 changed files with 8216 additions and 1386 deletions

27
.env.production.example Normal file
View File

@@ -0,0 +1,27 @@
# === PFLICHT ===
# Öffentliche URL der App (ohne Trailing-Slash)
APP_URL=https://hub.mydrugismusic.com
# Postgres-Passwort — lang und zufällig, z.B.: openssl rand -hex 24
POSTGRES_PASSWORD=CHANGE_ME
# Magic-Link-Secret — lang und zufällig, z.B.: openssl rand -hex 32
MAGIC_LINK_SECRET=CHANGE_ME
# === EMAIL (ohne = Magic Links nur in API-Log) ===
# Resend API-Key (kostenlos bis 3000 Mails/Mo): https://resend.com
RESEND_API_KEY=re_xxxxxxxxxxxx
EMAIL_FROM=Music Hub <noreply@mydrugismusic.com>
# === S3 / MINIO (Defaults passen für eingebautes MinIO) ===
S3_ACCESS_KEY=minioadmin
S3_SECRET_KEY=minioadmin
S3_BUCKET=music-hub
# === OPTIONAL ===
# Externer Port (Coolify mappt das auf die Domain)
PORT=3000