REST API for the Louvor JA (Piano) system. Serves hymnal data, albums, musics, lyrics, and bible references with full OpenAPI documentation.
| Layer | Technology |
|---|---|
| Framework | Hono + Zod OpenAPI |
| Validation | Zod schemas → OpenAPI |
| Database | SQLite (better-sqlite3 + Kysely) |
| Linter | Biome |
| Tests | Vitest + coverage |
| API Docs | Scalar at /doc |
| Container | Docker (Node 22) |
git clone https://github.com/pianolouvorja/api.git
cd api
npm install
npm run dev # http://localhost:3000API documentation available at http://localhost:3000/doc (Scalar UI).
npm run dev # development with hot reload
npm run build # compile TypeScript
npm run start # run compiled output
npm run typecheck # tsc --noEmit
npm run lint # biome check
npm run test # vitest run
npm run test:coverage # vitest with coverage report
npm run test:watch # vitest in watch modesrc/
app.ts # Hono app + Scalar setup
routes/
compat.ts # /json_db/* and /file/* compatibility routes
v1/
categories/ # /v1/categories
albums/ # /v1/albums
musics/ # /v1/musics
bible/ # /v1/bible
db/
migrations/ # SQL migrations (001-014)
scripts/
import-upstream.ts # mirror data from api.louvorja.com.br
data/
catalog.db # SQLite database
See CONTRIBUTING.md for the full guide.
TL;DR: branch from staging, open PR against staging, CI must pass, one approval required.
MIT © Piano Louvor JA