2026·web applive

Sonora

Screenshot Sonora
TypeScriptReact 19ViteTailwind CSS 4Express.js 5Drizzle ORMPostgreSQLZodLast.fm APIiTunes API

— tentang project

Platform discovery musik yang menggabungkan data Last.fm dan iTunes Search API: pencarian lagu, artis, dan genre, rekomendasi, sampai deteksi rilisan baru — dibangun sebagai monorepo Turborepo dengan API Express terpisah dari frontend React.

tantangan

Menggabungkan dua API eksternal berkualitas data tidak konsisten: Last.fm sering melengkapi gambar atau tanggal rilisan dengan nilai placeholder, sementara iTunes punya preview audio tapi metadata terbatas. Tanpa strategi gabungan, UI mudah tampil rusak atau kosong.

solusi

Lapisan integrasi per-provider dengan pola fallback dua arah (gambar Last.fm, jika kosong ambil dari iTunes; preview audio selalu dari iTunes), normalisasi data di service layer sebelum sampai ke client, kontrak request/response divalidasi Zod yang dipakai bersama oleh API dan frontend lewat package shared, serta auth Argon2 + JWT httpOnly cookie yang dilindungi express-rate-limit dan dimonitor Sentry.

— highlights

  • Integrasi ganda Last.fm + iTunes Search API dengan pola fallback untuk gambar, preview audio, dan metadata
  • Deteksi rilisan baru (release checker) termasuk penanganan data placeholder Last.fm seperti tanggal 1 Jan 1970
  • Auth stateless: hashing password Argon2 + JWT via httpOnly cookie, dilindungi rate limiting
  • Skema Zod 4 dipakai bersama frontend dan backend sebagai satu sumber kebenaran kontrak API
  • Pengujian berlapis: Vitest + Supertest untuk API, Testing Library untuk komponen React