bruno@cabado:~$ cat projects/tradisong.md

← projects/

Tradisong

Up (live demo)

  • Product
  • Web App
  • Cultural Tech

A web product for discovering, organizing, and practicing traditional Galician music, built on top of the Folkoteca Galega catalog.

Context

Traditional music archives are culturally rich, but they are often difficult to navigate and not designed for regular practice. Tradisong started as a way to turn a static corpus into a day-to-day tool for musicians: searchable, playable, and structured around progression.

What I built

Tradisong provides:

  • A browsable catalog of 1242 pieces across 24 categories, with category pages and piece-level detail
  • Live search endpoints and interfaces to quickly find songs by title
  • Piece pages with audio/MIDI proxy playback and score access tied to source content
  • A personal repertoire system where users can mark songs as saved, learning, or known
  • Game modes for guided practice and guess-the-song sessions based on each user pool
  • Optional social workflows (friends and groups) to compare known repertoire and coordinate setlists

Technical approach

I implemented Tradisong as a Flask application with modular route blueprints (songs, games, repertoire, groups, and friends), SQLAlchemy models, and login-protected user workflows. The architecture prioritizes short interaction loops (search -> open song -> practice) and API-backed UI updates for fast feedback, while keeping data relationships explicit enough to support collaboration and future feature growth.

Outcome

Tradisong evolved from a simple catalog browser into a complete learning product: discover music, track personal progress, and practice with intentional flows. It demonstrates how product design plus practical backend architecture can make heritage music collections more accessible, actionable, and engaging for regular use.

## Project gallery

Tradisong home page introducing learning and practice flows
Tradisong categories overview for browsing traditional pieces
Tradisong live search interface for finding pieces quickly
Tradisong piece detail view with playback controls and score access
1/4Tradisong home page introducing learning and practice flows

bruno@cabado:~$ mail hi@brunocabado.com# I share work, research and product experiments in AI systems

$ send-message$ wget cv.pdf$ open linkedin$ open github

© 2026 Bruno Cabado · designed & developed in Galicia with Astro

↑↓ navigate · Enter open · Esc close

key bindings

0–8select window
n / pnext / previous window
ctalk to the agent pane
% / " or -split side by side / stacked (up to 3 panes, each shows a window)
Spacenext layout (side by side → stacked → main + stack → main + row)
qshow pane numbers, then press one to jump there
{ / }swap the focused pane with the main one
Shift+←↑↓→resize (main pane smaller / larger)
o · Ctrl+b ←↑↓→focus next pane · pane in that direction
zzoom the focused pane (again to restore)
xclose the focused pane (closing the main one promotes the split)
ttoggle theme (dark ⇄ latte) · :theme next cycles gruvbox, nord, tokyo, dracula
/ · Ctrl+ksearch the whole site
:command prompt
:set keys offdisable single-key shortcuts (the prefix still works)
Ctrl+bprefix — every key above also works after it; % " x and arrows need it

commands: search · select-window <name|n> · open <query> · ask <question> · split-window [-h|-v] [name] · kill-pane · zoom · swap-pane · layout · theme [mocha|latte|gruvbox|nord|tokyo|dracula] · ls · exit · help
agent: type /clear to reset the conversation