← Back to projects

Tonica

A cloud-based royalty tracking and payout platform for independent musicians and small labels.

Next.jsAzureServerlessFintech

Overview

Tonica is a cloud-based royalty tracking and payout platform I'm building for independent musicians and small labels. The music industry has a money problem — streaming revenue is fragmented across dozens of platforms, payments arrive months late, and most artists still rely on spreadsheets to figure out who gets paid what. Tonica replaces that entire workflow: upload a royalty report, and the system normalizes the data, calculates collaborator splits, generates transparent statements, and sends payouts.

The vision is to become the financial infrastructure layer for independent music — the place where raw streaming revenue turns into accurate, instantly distributable income.

The Problem

Royalties are slow, opaque, and painful to manage. Distributors typically pay 2-3 months after streams happen. Labels still send paper statements twice a year. A single song can generate mechanical, performance, and sync royalties across different systems, and modern tracks often have five or more contributors who each need correct splits. Small teams end up buried in CSV exports and manual PayPal transfers that break the moment they try to scale.

How It Works

The core loop is simple: upload report, auto-split, generate statement, send payout. Under the hood, an ETL pipeline ingests royalty CSVs (with API integrations planned), normalizes inconsistent formats into a common schema using ISRC codes for reliable track matching, and applies pre-configured split rules per track. Every calculation, statement, and transaction is logged permanently — creating an audit trail that becomes the source of truth for everyone involved.

Technical Details

Built on Azure's serverless stack to keep costs near zero at MVP scale. The frontend is React on Azure Static Web Apps, backend logic runs on Azure Functions (consumption plan), and data lives in Cosmos DB's free tier. File uploads go through Blob Storage with event-driven triggers that kick off the ETL pipeline. Payout integration starts with PayPal's batch API, with Stripe Connect planned for direct bank deposits. All secrets live in Key Vault, and the whole thing deploys via GitHub Actions CI/CD.

What I Learned

Building Tonica taught me that the hardest part of fintech isn't the code — it's the data. Normalizing royalty reports from different distributors, each with their own column names, currency formats, and identifier schemes, is where most of the complexity lives. The technical architecture was straightforward; earning trust with other people's money is not. Every design decision comes back to the same question: would an artist trust this system with their income?