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>
25 lines
513 B
TypeScript
25 lines
513 B
TypeScript
export const SUPPORTED_AUDIO_FORMATS = [
|
|
'audio/wav',
|
|
'audio/x-wav',
|
|
'audio/mp3',
|
|
'audio/mpeg',
|
|
'audio/flac',
|
|
'audio/x-flac',
|
|
'audio/aiff',
|
|
'audio/x-aiff',
|
|
] as const;
|
|
|
|
export const SUPPORTED_EXTENSIONS = ['.wav', '.mp3', '.flac', '.aiff', '.aif'] as const;
|
|
|
|
export const MAX_FILE_SIZE = 500 * 1024 * 1024; // 500 MB
|
|
|
|
export const VERSION_STATUSES = [
|
|
'uploaded',
|
|
'processing',
|
|
'ready',
|
|
'approved',
|
|
'rejected',
|
|
] as const;
|
|
|
|
export type VersionStatus = (typeof VERSION_STATUSES)[number];
|