Commit Graph

71 Commits

Author SHA1 Message Date
ff39680106 ci: add Gitea + GitHub Actions workflows 2026-07-11 21:44:39 +02:00
35b82fc5b3 chore: add dev/deploy targets to Makefile, deploy.sh 2026-07-11 21:43:55 +02:00
c4e9076b11 feat(app): auth UI, SPA mode, /api base URL
- auth: login/register bottom sheets, token storage, authFetch
- AuthProvider context w/ auto-refresh on mount
- hide add/edit/delete for guests, sign-in button in nav
- SPA mode (ssr:false), loaders→client-side useEffect
- API base URL /api (same-origin), loading spinners
2026-07-11 21:40:57 +02:00
7bd27d9b9c feat: JWT auth, /api prefix, SPA serving, OpenAPI, lean main.rs
- auth: register/login/refresh/logout w/ JWT+Argon2, protected mutations
- domain: User, RefreshSession, auth ports, Unauthorized/Forbidden errors
- presentation: context/state/factory/errors/extractors/openapi modules
- routes behind /api, SPA served from root w/ fallback
- OpenAPI Scalar at /docs
- frontend ssr:false, single-binary Dockerfile
2026-07-11 21:28:52 +02:00
13031347cc samples 2026-07-11 21:02:28 +02:00
d13df586dd refactor: DDD/CQRS architecture, unified crate layout
- crates: common→application, api→presentation, infrastructure/*→adapters/*
- new crates: api-types, infra-wiring
- domain: errors/, models/, value_objects/, ports/, services/
- application: CQRS use cases (songs/, tabs/) w/ commands, queries, deps
- unified DomainError replaces RepositoryError
- workspace deps, unused dep cleanup
- fix: parse plain-text chord lines (UG drops spans mid-song)
- tests extracted to separate modules (tests/ dirs)
2026-07-11 21:02:10 +02:00
a520251dab feat: implement bulk file import functionality in AddSongSheet component 2026-04-09 14:13:58 +02:00
ab5eb69f7a chore: add .dockerignore and update Dockerfile to use debian:trixie-slim 2026-04-09 13:39:38 +02:00
b1d778284c feat(api): config from env vars (HOST, PORT, CORS_ALLOWED_ORIGINS, DATABASE_URL) 2026-04-09 01:23:10 +02:00
808ce287a5 chore: docker compose template for homeserver deployment 2026-04-09 01:20:03 +02:00
3605bef2b0 feat: add Dockerfile and implement SQLite persistence layer with repository pattern 2026-04-09 01:17:18 +02:00
dbb7cbd92f fix: use var(--x) not hsl(var(--x)) for oklch theme vars, redesign fretboard with explicit string lines 2026-04-09 01:15:49 +02:00
ed669b2e3a fix: larger black key dots, active note names list on piano 2026-04-09 01:07:39 +02:00
2964475df9 fix: piano readability + note labels, open chord voicings for guitar 2026-04-09 01:00:34 +02:00
544474c074 fix: double-sharp notes in PianoKeys, barre bar on E-shape chords 2026-04-09 00:50:51 +02:00
e9c2f7a5e0 feat: chord diagram — piano/guitar diagrams in song detail 2026-04-09 00:44:32 +02:00
e99b581a43 feat: tappable chord names in ChordChart, extractUniqueChords 2026-04-09 00:42:24 +02:00
ec7237e8c7 feat: ChordGrid component 2026-04-09 00:40:41 +02:00
3d56b71aa9 feat: ChordDiagram component 2026-04-09 00:40:36 +02:00
5a4d0ef648 feat: GuitarFretboard component 2026-04-09 00:39:43 +02:00
7653933f46 feat: PianoKeys component 2026-04-09 00:38:14 +02:00
90df2b36f2 feat: chord voicing theory layer 2026-04-09 00:36:08 +02:00
ac65be1bb9 feat: guitar voicing templates 2026-04-09 00:31:25 +02:00
aeb9dfff67 chore: add tonal + vitest 2026-04-09 00:28:19 +02:00
bb99f5964a docs: chord diagram implementation plan 2026-04-09 00:26:16 +02:00
df90e610ef docs: chord diagram feature spec 2026-04-09 00:14:04 +02:00
f80ed4e88a feat(app): PWA manifest, persistent transpose, font size, capo toggle, library sort 2026-04-08 04:09:25 +02:00
2558f19960 feat: add sort params to list/search, capo-aware GET /songs/{id}?apply_capo=true 2026-04-08 04:05:57 +02:00
41b9cb3d4c feat: initialize project with .gitignore, LICENSE, README, and update dependencies 2026-04-08 03:56:28 +02:00
bef3bb8fed feat(app): add dark/light theme switcher via next-themes 2026-04-08 03:56:05 +02:00
582bdbd901 refactor(app): extract previewChords to song-utils, simplify API_BASE, fix useEffect deps and cleanup 2026-04-08 03:53:44 +02:00
19829a0589 fix(app): reset edit sheet state on open, check deleteSong response status 2026-04-08 03:48:46 +02:00
8fc6e48aac feat(app): add song edit and delete with dropdown menu 2026-04-08 03:46:56 +02:00
3a576f0018 feat(app): live server-side search with 300ms debounce and error state 2026-04-08 03:44:10 +02:00
65dd30df46 feat(app): add layout shell with bottom nav and Toaster 2026-04-08 03:42:13 +02:00
1936ced395 feat: add update_meta to SongRepositoryPort and PATCH /songs/{id} 2026-04-08 03:39:29 +02:00
6a3cdbe4c3 fix(persistence): extract row_to_summary helper, escape LIKE wildcards 2026-04-08 03:38:12 +02:00
377fe957bc feat: add SongSearchService and GET /songs?q= search endpoint 2026-04-08 03:35:33 +02:00
c3b7cb78ab docs: add search/nav/management implementation plan 2026-04-08 03:32:56 +02:00
7cd0c4aae1 docs: add search/nav/management/errors design spec 2026-04-08 03:28:36 +02:00
5390fe39e6 feat(app): wire frontend to real API, remove mock data and sessionStorage 2026-04-08 03:09:12 +02:00
8c0824c67c feat(api): add song CRUD routes, wire SongService into AppState 2026-04-08 03:07:28 +02:00
0b47282547 feat(common): add SongService application layer 2026-04-08 03:05:50 +02:00
37a1e386e4 feat(persistence): add SqliteSongRepository and SqliteRepositoryFactory 2026-04-08 03:05:16 +02:00
8f9886c9a9 feat(domain): add StoredSong, SongSummary, SongRepositoryPort 2026-04-08 03:03:58 +02:00
852b1a8d0e fix(app): wrap long chord/lyric lines at word boundaries for mobile 2026-04-08 02:47:17 +02:00
3bc7ad4c7c fix: support raw HTML upload via FileReader, fix file import flow 2026-04-08 02:43:27 +02:00
90833c5b93 fix(app): meta null guard, deduplicate previewChords, env API URL, always show add card 2026-04-08 02:36:09 +02:00
9b68069151 feat(app): add song detail page with chord chart and transposition 2026-04-08 02:32:50 +02:00
3d18bb9e77 feat(app): add library page with song grid and search 2026-04-08 02:31:44 +02:00