corrigindo upload

This commit is contained in:
JotaChina committed 2026-04-04 12:42:42 -03:00
1 parent d2a68fa744
commit 1c37cc4b80
13 files changed
+6848492 -979754

No files matched your search

+39 -45
View File
@@ -1,4 +1,15 @@
# mmpCreator - Documentação Técnica
# mmpCreator & MMPSearch - Documentação Técnica
---
## 🏗️ Arquitetura do Sistema
O sistema é um ecossistema completo para submissão, processamento e colaboração em projetos musicais (LMMS), estruturado nos seguintes pilares:
1. **Banco de Dados e Autenticação (Flask / SQLite):** Gestão segura de usuários (Bcrypt, Flask-Login), controle de propriedade de projetos e samples, além de um painel de administração (`Flask-Admin`).
2. **Motor de Renderização Headless (Python):** Processamento assíncrono via biblioteca `multiprocessing`. Utiliza o binário do LMMS em modo `offscreen` para extrair dados do XML (`.mmp` / `.mmpz`) e exportar o áudio gerado nativamente no servidor.
3. **MMPSearch (Catálogo Front-end):** Biblioteca estática gerada via Jekyll a partir de arquivos JSON/YAML, focada em leveza, indexação e busca de projetos com renderização via Web Audio API.
4. **MMPCreator (Colaboração em Tempo Real):** Sequenciador interativo hospedado em Node.js. Utiliza WebSockets para sincronizar edições simultâneas (áudio e MIDI) entre múltiplos usuários em salas virtuais.
---
@@ -6,9 +17,7 @@
O site está sendo desenvolvido em um ambiente virtual Python (`venv`). Para executá-lo corretamente, ative o ambiente com o comando:
```bash
source venv/bin/activate
```
`source venv/bin/activate`
Isso garante que todas as dependências do projeto sejam utilizadas corretamente.
@@ -28,66 +37,49 @@ Dessa forma, os arquivos de manifesto serão gerados, contendo as informações
---
## 👁️ Serviço de Monitoramento (Watchdog)
## 📤 Servidor de Upload, Samples e Build (Flask)
Um serviço systemd foi criado para monitorar alterações na pasta `src/samples`:
- **Serviço:** `/etc/systemd/system/mmpCreator-upload-server.service`
- **Nome do serviço:** `mmpCreator-upload-server.service`
- **Frequência:** A cada 5 segundos
- **Tecnologia utilizada: ** Python
### Funcionalidade:
Sempre que houver mudanças na pasta de samples, o serviço irá:
1. Detectar alterações via `watchdog`.
2. Executar um novo build do site.
3. Atualizar automaticamente o conteúdo do site em tempo real.
> **Nota:** O build atual está sendo feito apenas na parte de testes. Verificar e ajustar o caminho correto do build.
---
## 📤 Servidor de Upload de Samples
O servidor `upload_server.py` é responsável por receber arquivos de áudio (samples) para a plataforma. Ele é construído com:
O servidor `upload_server.py` atua como a API central do sistema. Ele recebe arquivos, gerencia a sessão dos usuários (Login/Registro) e automatiza a reconstrução da plataforma.
- **Framework:** Flask
- **Monitoramento:** Biblioteca `watchdog`
- **Banco de Dados:** SQLite (com SQLAlchemy)
- **Automação de Build:** Uso de Threads em segundo plano (Background Tasks) acionadas via rotas HTTP.
### Funcionamento:
1. Após qualquer modificação nas pastas de samples:
- O script atualiza os arquivos `samples-manifest.json` e `mmp-manifest.json`.
- Os caminhos dos arquivos são ajustados para garantir exibição e execução corretas.
Sempre que um novo upload (Projeto ou Sample) é processado via API:
1. O arquivo é sanitizado e validado.
2. O sistema verifica a dependência de samples externos no XML.
3. Os manifestos (`samples-manifest.json`, metadados de projetos) são atualizados em tempo real no servidor.
4. Uma thread secundária segura (com Lock) dispara o comando `bundle exec jekyll build`, reconstruindo o frontend estático do MMPSearch para refletir a submissão imediatamente.
### Acesso:
### Acesso da API:
- `http://127.0.0.1:5000`
- `http://127.0.0.1:33002`
> ⚠️ **Importante:** Avaliar a segurança do servidor antes de validar como ferramenta oficial do projeto. Atualmente está sendo usado apenas para testes.
> ⚠️ **Importante:** A estabilidade da reconstrução em produção depende do caminho absoluto do binário Ruby e do pacote Bundle configurados no script (`upload_server.py`).
---
## 💻 Backend para controle das salas online (Colaboração)
Um serviço systemd foi criado para hospedar o backend de um servidor em nodeJS responsável por gerenciar as salas e a colaboração online:
Um serviço systemd foi criado para hospedar o backend de um servidor em nodeJS responsável por gerenciar as salas e a colaboração online do MMPCreator:
- **Serviço:** `/etc/systemd/system/backend-MMPCreator.service`
- **Nome do serviço:** `backend-MMPCreator.service`
- **Frequência:** Tempo integral
- **Tecnologia utilizada: ** NodeJS
- **Tecnologia utilizada:** NodeJS (Socket.io)
### Funcionalidade:
- Seu intuíto é deixar o backend online em tempo integral, possibilitando a utilização da plataforma em qualquer momento.
- Para isso foi necessário inserir meu usuário no grupo de "ssl-cert" para acesso ao certificado
- Essa abordagem foi escolhida, pois a "não" utilização do apache traz algumas variáveis a mais para a implementação de um proxy reverso para a comunicação via wss e https nas salas.
- Para isso foi necessário inserir meu usuário no grupo de "ssl-cert" para acesso aos certificados (Let's Encrypt).
- Essa abordagem foi escolhida, pois a "não" utilização do apache traz algumas variáveis a mais para a implementação de um proxy reverso para a comunicação segura via `wss://` e `https://` nas salas de colaboração.
### Acesso:
- `http://127.0.0.1:33001`
---
## ✅ Funcionalidades Já Implementadas
@@ -107,6 +99,8 @@ Um serviço systemd foi criado para hospedar o backend de um servidor em nodeJS
- [x] Salas online e colaboração em tempo real
- [x] Botões de modo global e local para controle do editor de samples (controla play/pause/stop, loop e janela de loop)
- [x] Exibição de notificações em alterações nos projetos em tempo real
- [x] Gestão de usuários (Login, Registro, Perfis e painel Admin)
- [x] Identificação automática de samples externos faltantes no upload de projetos.
---
@@ -114,16 +108,16 @@ Um serviço systemd foi criado para hospedar o backend de um servidor em nodeJS
### 🛠️ Funcionalidades
- [ x ] Validar projetos MMP antes de aceitar uploads:
- [ x ] Verificar se os samples são nativos
- [x] Validar projetos MMP antes de aceitar uploads:
- [x] Verificar se os samples são nativos
- [ ] Corrigir caminhos dos samples (evitar problemas de execução)
- [ x ] Para downloads dos zip de projetos;
- [ x ] Para enviar projetos para a plataforma;
- [x] Para downloads dos zip de projetos;
- [x] Para enviar projetos para a plataforma;
- [ ] Reconhecer os caminhos atualizados no MMPCreator;
- [ ] Fazer com que os caminhos atualizados permaneçam após cada build.
- [ x ] Permitir envio de samples gravados com microfone:
- [x] Permitir envio de samples gravados com microfone:
- [ ] Executar e recortar antes de salvar no servidor
- [ x ] Gravar músicas diretamente na plataforma, mesmo sem mixagem
- [x] Gravar músicas diretamente na plataforma, mesmo sem mixagem
- [ ] Ativar/desativar samples em patterns
- [ ] Remover botões inúteis no controle de patterns
- [ ] Melhorar documentação do código
@@ -150,4 +144,4 @@ The intuitive is to be able to collect information from the files by indexing it
It is part of the master's research in Computer Science at the Federal University of São João del Rei, focused on independent underground music production and the use of open source technologies.
The mainstream only exists because the underground created the scene.
The mainstream only exists because the underground created the scene.