Skip to content

Guida allo Sviluppo

Questa guida illustra come configurare un ambiente di sviluppo locale per TuneCamp e iniziare a contribuire al progetto.

Prerequisiti

  • Node.js: versione 18 o superiore
  • FFmpeg: Richiesto per l'elaborazione audio e la generazione delle forme d'onda
  • SQLite3: Opzionale — utile per l'ispezione manuale del database

Configurazione Iniziale

  1. Clona il repository:

    bash
    git clone https://github.com/scobru/tunecamp.git
    cd tunecamp
  2. Installa le dipendenze:

    bash
    # Root + backend
    npm install
    
    # Frontend
    cd webapp && npm install && cd ..
  3. Configura le variabili d'ambiente: Copia il file .env.example in .env e compila i valori richiesti (porta, segreto JWT, percorso della cartella musicale). Consulta la sezione di configurazione del README per il riferimento completo a tutte le variabili.

Esecuzione in Ambiente di Sviluppo

È necessario avere due (o tre) terminali in esecuzione in parallelo.

Terminale 1 — backend (watch di TypeScript + ricompilazione CSS):

bash
npm run dev

Terminale 2 — server backend:

bash
npm start

npm run dev avvia solo tsc --watch e il monitor dei file CSS — non avvia il server. È necessario eseguire npm start (o node dist/index.js) per servire le richieste.

Il server è disponibile per impostazione predefinita all'indirizzo http://localhost:1970 (configurabile tramite TUNECAMP_PORT).

Terminale 3 — frontend (server di sviluppo Vite con HMR):

bash
cd webapp && npm run dev

Il server di sviluppo del frontend è attivo all'indirizzo http://localhost:5173 e inoltra le richieste API al backend (tramite proxy).

Esecuzione dei Test

Il progetto utilizza Jest per la suite di test esistente. I nuovi moduli dovrebbero utilizzare Vitest.

bash
# Esegui tutti i test
npm test

# Esegui un file di test specifico
npm test src/server/auth.test.ts

Verifica che non vi siano errori di TypeScript prima di aprire una PR:

bash
npm run build
cd webapp && npm run build

Strumenti CLI (src/tools/)

Sotto la cartella src/tools/ sono disponibili diversi script di manutenzione:

ScriptComandoScopo
backup.tsnode dist/tools/backup.js ./backupsCrea un backup del database con marcatura temporale
restore.tsnode dist/tools/restore.js ./backups/tunecamp-<data>.db --forceRipristina da un backup
generate-codes.tsGenera codici di sblocco per le release
relink-tracks.tsAggiorna i percorsi dei file audio dopo lo spostamento della libreria
migrate-dedupe.jsnpm run migrate:dedupeRimuove i brani duplicati dal database
migrate-visibility.jsnpm run migrate:visibilityAggiorna in blocco la visibilità di album e tracce

Consulta backup-migration.md per maggiori dettagli sulla manutenzione dei dati.

Convenzioni di Codifica

  • Utilizza TypeScript per tutto il nuovo codice backend.
  • Segui lo stile dei componenti funzionali esistente in React.
  • Documenta i nuovi endpoint API in api-contracts.md.
  • Ogni nuova tabella del database deve essere aggiunta a src/server/core/database.ts con gli indici appropriati.

Contribuire

Vedi CONTRIBUTING.md per il processo completo di contribuzione.

Rilasciato sotto licenza MIT.