Initial commit: Music Hub collaboration platform

Full-stack music production collaboration tool with:
- SvelteKit frontend with Design System (CSS vars, 8 shared components)
- Hono API with auth, projects, tracks, versions, comments
- PostgreSQL + Drizzle ORM (8 tables, roles, permissions)
- S3-compatible storage with presigned upload URLs
- wavesurfer.js audio player with waveform visualization
- A/B version comparison with synchronized playback
- Timestamped comments with threading and resolve workflow
- Magic Link authentication with Resend email integration
- Background audio processing (ffmpeg transcode + waveform peaks)
- Role-based access control (Owner, Engineers, Artist, Label, Management, Viewer)
- Toast notifications, skeleton loading, responsive layout
- Docker deployment setup (API + Web + Postgres)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Robin Choice
2026-04-02 13:23:10 +02:00
commit e420ed198b
88 changed files with 7306 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
<script lang="ts">
import { onMount } from 'svelte';
import { goto } from '$app/navigation';
import { page } from '$app/stores';
import { verifyToken } from '$lib/stores/auth.js';
let error = $state('');
onMount(async () => {
const token = $page.url.searchParams.get('token');
if (!token) {
error = 'No token provided';
return;
}
try {
await verifyToken(token);
goto('/dashboard');
} catch (err) {
error = err instanceof Error ? err.message : 'Verification failed';
}
});
</script>
<div class="verify-page">
{#if error}
<div class="error-card">
<h2>Login Failed</h2>
<p>{error}</p>
<a href="/">Try again</a>
</div>
{:else}
<p>Verifying...</p>
{/if}
</div>
<style>
.verify-page {
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
color: #888;
}
.error-card {
text-align: center;
}
.error-card h2 {
color: #ef4444;
}
a {
color: #6366f1;
}
</style>