Loading repository data…
Loading repository data…
Braian-de-Liz / repository
AMOTIF - Colaboração Musical Assíncrona. Diferente de redes sociais voltadas ao conteúdo finalizado, o AMOTIF atua durante o processo criativo. A plataforma permite que músicos participem na construção de uma obra sem a necessidade de contato direto ou simultâneo.
Plataforma de desenvolvimento musical colaborativo e assincrono. Inspirada em conceitos de versionamento distribuido, funciona como um "Git para musicos".
O AMOTIF nasce da lacuna existente entre ferramentas de DAW locais e plataformas genericas de compartilhamento de arquivos. A plataforma oferece um ambiente nativo para o fluxo de trabalho colaborativo da musica moderna, permitindo que musicos, produtores e compositores criem projetos, registrem versoes de faixas e stems, colaborem de forma assincrona e sincronizem camadas de audio com controle preciso de offset temporal.
O funcionamento baseia-se na ideia de projetos musicais compartilhados. Cada projeto representa uma composicao em desenvolvimento e contem informacoes tecnicas fundamentais como andamento (BPM), tonalidade, descricao artistica e uma faixa guia inicial. A partir desse ponto, outros musicos podem adicionar novas camadas instrumentais -- vocais, guitarra, bateria, sintetizadores.
Cada contribuicao e registrada como uma camada independente (layer), mantendo rastreabilidade completa de autoria, tempo de entrada na musica e alinhamento com a faixa original. O modelo garante que a obra evolua sem sobrescrever contribuicoes anteriores, preservando o historico criativo.
O sistema adota um mecanismo de aprovacao controlado pelo criador do projeto, que decide quais contribuicoes passam a integrar oficialmente a composicao. Equilibra-se colaboracao aberta com direcao artistica centralizada.
O objetivo principal e remover barreiras geograficas e logisticas da producao musical colaborativa, permitindo que artistas de diferentes locais contribuam para uma mesma obra de forma organizada, tecnica e segura.
A aplicacao adota uma arquitetura de microsservicos hibridos com separacao clara de responsabilidades.
Backend responsavel por toda a logica de negocio: autenticacao JWT, autorizacao via hooks, gestao de entidades (projetos, layers, colaboradores, follows, notificacoes), buscas e integracao com o banco de dados.
A arquitetura interna segue o modelo de plugins do Fastify, onde cada dominio e encapsulado como um plugin autonomo com suas rotas e schemas associados. A validacao de requisicoes e feita via schemas TypeBox com compilacao JIT, garantindo type-safety em runtime e eliminando codigo boilerplate.
Microsservico dedicado ao trafego de arquivos de audio. Utiliza goroutines para processamento paralelo e streaming direto ao Supabase Storage, evitando o carregamento completo do binario em memoria (zero-RAM loading). O servico valida a assinatura JWT gerada pela API principal antes de processar qualquer upload.
Essa separacao garante que operacoes I/O-intensivas de upload nao impactem a performance da API principal, mantendo o event loop do Bun responsivo para requisicoes de logica de negocio.
O trafego de audio segue um caminho otimizado para evitar gargalos:
Detalhes: documents/Architecture.md
| Componente | Tecnologia | Funcao |
|---|---|---|
| Backend API | Fastify v5 + Bun | API REST com validacao JIT e plugins encapsulados |
| Upload Service | Go (Fiber) | Streaming e upload de audio com concorrencia nativa |
| Banco de Dados | PostgreSQL (Neon) | Persistencia relacional com branching serverless |
| ORM | Prisma v7 | Type-safe access layer com migrations versionadas |
| Validacao | TypeBox | Schemas executaveis com geracao automatica de tipos |
| Frontend | React 19 + Vite + TypeScript | Interface com React Compiler e CSS modular |
| Armazenamento | Supabase Storage | Entrega global de arquivos binarios |
| Deploy | Render | PaaS com deploys automaticos via Git |
Identidade do musico com validacao de CPF. Cada campo tem funcao tecnica ou social:
Composicao em desenvolvimento com parametros tecnicos:
Camada independente de audio:
A aplicacao nao utiliza o padrao MVC com camadas de Controllers, Services e Repositories. A estrutura e flat: cada rota e um plugin Fastify que acessa o Prisma diretamente. Hooks reutilizaveis cuidam de autenticacao e autorizacao.
Em uma estrutura MVC tradicional, a requisicao percorre Controller -> Service -> Repository -> Prisma. No AMOTIF: Rota -> Prisma.
Detalhes: documents/organization.md
A combinacao Bun + Fastify + TypeBox proporciona type-safety em todas as camadas:
| Abordagem | Linhas de codigo (validar 5 campos) |
|---|---|
| Manual (if/else) | ~30 linhas |
| Yup/Joi | ~15 linhas |
| TypeBox + Fastify | ~5 linhas |
Detalhes: documents/typebox-fastify-bun.md
AMOTIF/
├── back_end/
│ ├── src/
│ │ ├── server.ts # Entrypoint do servidor
│ │ ├── hooks/ # Middlewares (JWT, verificacao de dono)
│ │ ├── lib/ # Prisma client, error handler global
│ │ ├── routers/ # Rotas por dominio
│ │ │ ├── user/ # Cadastro, login, perfil, instrumentos
│ │ │ ├── projetos/ # CRUD, feed, mural, favoritos
│ │ │ ├── layers/ # Criar, editar, autorizar, deletar
│ │ │ ├── colaboration/ # Convites, accept/reject, gestao
│ │ │ ├── follows/ # Follow/unfollow, listagem
│ │ │ ├── likes/ # Curtir projetos
│ │ │ ├── notification/ # Listagem e mark-all-read
│ │ │ ├── search/ # Busca por usuarios e projetos
│ │ │ └── health/ # Health check e benchmark
│ │ └── schemas/ # Definicoes TypeBox por dominio
│ ├── prisma/
│ │ ├── schema.prisma # Modelo de dados
│ │ └── migrations/ # Migrations versionadas
│ └── tests/ # Testes de integracao (Bun test)
├── front_end/
│ ├── src/
│ │ ├── pages/ # Paginas da aplicacao
│ │ ├── components/ # Componentes React
│ │ ├── styles/ # CSS modular por pagina
│ │ ├── schemas/ # Validacao Zod no frontend
│ │ └── utility/ # Helpers e utilitarios
│ └── public/