Deezer Explorer is a static, responsive web project focused on one core experience: search for a music artist, browse that artist's albums, and open an album to see its tracklist, cover, and release date using Deezer's public API.
Version 1 delivers a single end-to-end user flow:
- Open the website
- Search for an artist by name
- View artist search results
- Select one artist
- View that artist's albums as cover cards
- Open one album
- View album details (tracklist, cover, release date)
Scope constraints for v1:
- No custom backend
- No authentication
- No database
- Mobile-first and responsive UI
- Keyboard-accessible main flow
- Minimal dependencies
- Static hosting on GitHub Pages
- First page of API results only (no pagination yet)
The app's v1 flow is built around these endpoints:
GET https://api.deezer.com/search/artist?q=...GET https://api.deezer.com/artist/{id}/albumsGET https://api.deezer.com/album/{id}
- Tooling/build/dev server: Vite (5.x line)
- Language: TypeScript
- UI runtime: Browser-native APIs (DOM +
fetch), no UI framework - Styling: Plain CSS (mobile-first)
- Hosting: GitHub Pages (static
dist/fromvite build)
Why this direction:
- Fast local iteration with Vite
- Clear static output for GitHub Pages
- Small dependency footprint
- Explicit API data handling with TypeScript
Current status is planning only.
PLAN.mdexists and is the source of truth for initial scope and phases.- Product implementation has not started yet.
- There is no running app, no finalized build pipeline, and no deployed Pages site at this moment.
This is the expected workflow once Phase 0 bootstrap is completed.
- Node.js 20+
- npm 10+
- Install dependencies:
npm ci - Start dev server:
npm run dev - Build static output:
npm run build - Preview production build locally:
npm run preview
Note: these scripts are planned in Phase 0 and may not all be available until the initial setup is implemented.
Deployment target is GitHub Pages using Vite build output.
Planned deployment behavior:
- Build static files with
npm run build - Publish
dist/through GitHub Actions (preferred) or an equivalent documented process - Configure Vite
basecorrectly for project pages (typically/deezer-explorer/)
Important:
- Incorrect
basewill break assets in Pages. - Pages validation must be done on the real deployed origin, not only on localhost.
- CORS risk: Deezer may block direct browser requests from the final GitHub Pages origin.
- Network/API variability: intermittent errors and rate limiting must be handled with clear UI states.
- Image/content edge cases: missing covers or mixed-content URL behavior may affect rendering.
- Current limitation: no pagination in v1 (first API page only).
Based on the implementation phases in PLAN.md, the next concrete actions are:
- Execute Phase 0 bootstrap (Vite + TypeScript project setup with
dev/build/previewscripts). - Validate Deezer endpoint access from browser context with production-like origin assumptions.
- Decide and document one production-safe data access strategy, especially if CORS blocks direct calls.
- Build Phase 1 app shell (mobile-first layout + keyboard navigable structure).
- Continue with Phases 2-5 in order: search, album list, album detail, accessibility/polish/deployment.
- User accounts, playlists, favorites, or persisted history
- Audio playback
- Global track/album search beyond artist search flow
- Pagination beyond first page
- i18n/multi-language support
- PWA/offline/push notifications
- Automated E2E suite in v1
For implementation details, decision points, and phase-level acceptance criteria, see PLAN.md.