Permanent, censorship-resistant music distribution with token-gated monetization
SONGS Protocol integrates Arweave and AR.IO technologies to create a permanent, decentralized platform for music distribution and monetization. This repository contains the implementation of storage integrations, token-gating mechanisms, and artist microsites.
├── docs/ # Long-form decision docs
│ └── weeklies/ # Weekly discovery documents
├── adr/ # Architecture Decision Records
├── milestones/ # M0-M4 planning files
├── src/ # Code experiments & PoCs
├── demos/ # Example applications
├── logs/ # Development logs
│ └── discovery/ # Research findings
├── infra/ # Infrastructure as code
│ └── gateway/ # AR.IO Gateway configuration
├── services/ # Microservices
│ ├── songs-upload/ # Upload service with Turbo SDK
│ └── signer/ # Off-chain token verification signer
├── cli/ # Command-line tools
├── packages/ # Reusable npm packages
│ ├── ar-storage-sdk/ # Arweave storage TypeScript SDK
│ ├── songs-access-sdk/ # Token-gated access SDK
│ ├── tgs-core/ # Turbo-gated-storage core package
│ ├── tgs-adapters/ # Storage adapters for TGS
│ ├── tgs-react/ # React hooks for TGS
│ └── songs-site-cli/ # CLI for artist site generation
├── contracts/ # Smart contracts (Solidity)
├── plugins/ # AR.IO Gateway plugins
└── perf/ # Performance and load tests
We maintain a collection of weekly discovery documents that chronicle the personal learning journey and implementation process. These documents provide:
- Step-by-step exploration of key technologies (ArNS, Astro, Arweave)
- Real-world implementation challenges and solutions
- Code snippets and examples from our exploration
- Valuable insights for developers new to the project
Current discovery topics include:
For formal design decisions, see the Architecture Decision Records (ADRs).
- Storage: Arweave "Permaweb" (permanent, pay-once storage)
- Gateways: AR.IO network with ArNS (human-readable names)
- Upload: Turbo SDK / Bundlr (high-throughput bundling)
- Contracts: ERC-1155 for token-gated content
- Front-end: React hooks, Astro for artist sites
This project is being implemented in 5 key milestones:
- M0: Public research repository & knowledge base
- M1: Core storage integration with AR.IO
- M2: Token-gated high-fidelity audio access
- M3: Reusable turbo-gated-storage package
- M4: ARNS-powered artist sites
Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
- Email: gordo@songs-tools.com
- GitHub: gordo-labs
- Arweave team for permanent storage protocol
- AR.IO community for the gateway network
- Grant providers for supporting this work