About this project

AMOTIF is an asynchronous music collaboration platform that bridges the gap between local DAWs and generic file-sharing platforms. Inspired by distributed versioning concepts, it works like a "Git for musicians", allowing musicians, producers, and composers to create projects, record versions of tracks and stems, and collaborate without the need for simultaneous contact. Main features: - Music project management with technical parameters: BPM (20-300), key, genre (ROCK, POP, JAZZ, CLASSICAL, ELECTRONIC, MPB, OTHER), and guide audio - Independent audio layers with synchronization offset in milliseconds, optional per-layer BPM override, and an approval flow (pending/approved/rejected) controlled by the project creator - Email invitation system with 7-day expiration, acceptance/decline with automatic notification, and management of active collaborators per project - User profiles with biography, instruments, and statistics; follower system (follow/unfollow); real-time notifications; per-project communication board - Search by users (filtering by instrument) and projects (query, genre, BPM min/max) - Virtual studio with mixer (volume, pan, mute per layer), waveform visualization, global and individual play/pause controls Architecture: Backend in Fastify v5 + Bun with a flat plugin-based architecture (no traditional MVC), validation via TypeBox with JIT compilation, JWT authentication, and authorization via hooks. Prisma v7 ORM with PostgreSQL (Neon). Frontend in React 19 + Vite + TypeScript with React Compiler. Audio upload via streaming to Supabase Storage (maximum 40MB). Deploy on Render. The data model includes User entities (with CPF validation for future copyright protection), Project (composition in development), Layer (audio contribution with authorship traceability and temporal alignment), as well as Invite, Collaboration, Follow, Notification, and Favorite. A maintenance endpoint (POST /api/cleanup) removes expired invitations and read notifications older than 7 days, protected by a secret header.