← All work
Media, 2024 – 2025

Nepal Music Archive

Digital archive backend for Nepali music: S3 media streaming, ffmpeg processing, publications and scheduled backups.

Role
Backend developer
Context
Nepal Music Archive
Scale
~30 Prisma models, 118 of 137 commits
Live
nepalmusicarchive.org
Nepal Music Archive collection grid
The collection view: 14,000+ items browsable by artist, label, publication and era. Design by Ottr; the API behind it is mine.

Background

Nepal Music Archive is Nepal's first dedicated digital music archive: recordings, album covers, research publications, record-label histories and decades of music journalism. For years the archive collected and digitised material that nobody outside the building could reach.

Ottr designed and built its public platform and archivist dashboard. I wrote the backend: two Koa APIs, public and dashboard, on one Prisma schema.

The problem

The platform had to behave like a library, not a streaming service: serious, searchable in English and Nepali, and able to hold tens of thousands of items with rich metadata. Archival audio is long and large, and archivists upload whatever format they have.

It also had to build a community around the archive: accounts, saved collections, newsletters, volunteer sign-ups and visit scheduling.

Approach

  1. Range-request streaming endpoint backed by S3 so playback starts immediately and seeks work.
  2. ffmpeg and ffprobe on upload for transcoding and metadata; pdf-lib for publications.
  3. Scheduled PostgreSQL backups exposed through a dashboard endpoint, because the archive is the client's only copy.
  4. Collections, timelines, libraries, bookmarks, search history, OTP client accounts and subscriptions.
  5. Metadata modelled so browsing by artist, record label, publication type or era is a query, not a special case; bilingual fields throughout.

Architecture

nma-koaClient and dashboard APIs. Mine.
nma-clientNext.js public site with PDF reader and player. Team-built.
nma-dashboardArchive admin. Team-built.

Outcome

  • Live at nepalmusicarchive.org with staging and dashboard environments.

Stack

KoaTypeScriptPrismaPostgreSQLAWS S3ffmpegpdf-libnode-schedule