Panoramica del Progetto TuneCamp ​
TuneCamp è una piattaforma musicale federata e self-hosted che combina un server musicale personale con i protocolli social del Fediverso (ActivityPub), la scoperta di istanze basata su gossip HTTP e la monetizzazione web3 (pagamenti on-chain su rete Base).
Obiettivi del Progetto ​
- ProprietĂ dei Dati: Consentire agli utenti di ospitare e controllare la propria libreria musicale.
- Federazione: Abilitare l'interazione tra diversi server TuneCamp tramite il protocollo ActivityPub (Fediverso).
- Scoperta Decentralizzata: Utilizzare un protocollo di gossip HTTP per scoprire altre istanze TuneCamp; lo scambio dei cataloghi avviene poi direttamente tramite HTTP.
- Supporto agli Artisti: Facilitare la pubblicazione diretta, il crowdfunding e la gestione dei diritti tramite smart contract e sistemi di sblocco (unlock code).
- Arricchimento dei Metadati: Integrazione con molteplici provider (MusicBrainz, Discogs, iTunes, TheAudioDB, Spotify, Bandcamp, SoundCloud) e Lyrics.ovh per copertine e testi ad alta risoluzione.
Caratteristiche Principali ​
- Radio: una stazione HLS sempre attiva trasmessa a partire dalla libreria dell'istanza — gli amministratori possono combinare playlist personalizzate e mix dinamici per genere. Vedi radio.md.
- Accesso tramite IA (MCP): un server basato su Model Context Protocol che consente ai client IA (es. Claude Desktop) di effettuare ricerche nel catalogo e avviare azioni tramite un canale sicuro protetto da token. Vedi mcp-setup-guide.md.
- Lab: incorpora strumenti audio sperimentali basati su browser in iFrame sandbox isolati, senza toccare la base di codice principale. Vedi LAB.md.
- Pannello di Sistema Amministratore: metriche in tempo reale di CPU/RAM/archiviazione/attivitĂ in background per rilevare eventuali perdite di memoria (memory leak). Vedi monitoring.md.
- Estensibilità : supporto per provider backend (metadati, streaming, archiviazione, …) tramite un caricatore di plugin. Vedi PLUGINS.md.
Stack Tecnologico ​
Backend ​
- Linguaggio: TypeScript
- Runtime: Node.js (Express)
- Database: SQLite (tramite
better-sqlite3) - Federazione: Fedify (ActivityPub)
- Multimedia: FFmpeg (per la transcodifica e la generazione delle forme d'onda)
Webapp (Frontend) ​
- Framework: React
- Strumento di Build: Vite
- Stile: CSS (con supporto per i temi)
- Gestione dello Stato: Zustand
- Scoperta: Gossip HTTP (esclusivamente per scoprire altre istanze; nessuna distribuzione P2P dei file audio)
Blockchain e Smart Contract ​
- Linguaggio: Solidity
- Contratti: Checkout, Factory, NFT per la vendita e la gestione della proprietĂ delle tracce.
Struttura del Repository ​
Il progetto è organizzato come un monorepo composto dalle seguenti cartelle principali:
src/server/: Logica principale del backend, database, rotte e protocolli.webapp/: Applicazione frontend React.contracts/: Smart contract per le funzionalitĂ web3.docs/: Documentazione tecnica del progetto.
Repository Correlati ​
| Repository | Descrizione |
|---|---|
| tunecamp | Server principale + applicazione web |
| tunecamp-peer | Daemon CLI autonomo per la condivisione peer-to-peer |
| tunecamp-4-track-recorder | Registratore a 4 tracce basato su browser (componente Svelte 5) |
| tunecamp-website | Pagina di presentazione e directory della community |