This project aims to create a browser-based audio player that works offline, supports playlists, and provides an improved user experience using waveform visualization and local caching.
Most audio players require internet connectivity or backend support. This project solves that problem by creating a fully frontend-powered music player that:
- Works offline
- Manages playlists
- Visualizes audio waveforms
- Saves user preferences locally
- Play, pause, skip, repeat and seek through songs
- Waveform scrubber using Canvas API
- Playlist management (Add/Remove tracks, sorting, pagination)
- Responsive UI (Mobile + Desktop)
- Undo/Redo with toast notifications
- Theme switcher (Dark/Light)
- Playback speed & volume controls
- Export/Import playlists as JSON
- HTML5
- CSS3 (Flexbox, Grid, Animations)
- JavaScript (ES6+ modules)
- Canvas API – Waveform drawing
- Web Audio API – Playback + Visualization
- ARIA roles + keyboard navigation
- Node.js + Express + JSON file database
- Multer (file upload)
- Helmet + CORS (security)
- Postman (API testing)
- IndexedDB → Cache playlists, metadata, waveforms
- localStorage → UI preferences
- Cache API → Offline assets
- Service Worker (PWA-like behavior)
- Lighthouse
- GitHub
- Vercel / Netlify / GitHub Pages
- User Input (Search / Play / Select)
- Fetch or Load Playlist JSON
- Decode Audio via Web Audio API
- Render Waveform on Canvas
- Playback Controls (Play/Pause/Seek)
- Save Data to IndexedDB / localStorage
- Output: Offline-ready responsive audio player
- Arrays & Objects for track + playlist storage
- IndexedDB for waveform & metadata caching
- Debounce technique for search optimization
- Pub-Sub architecture for modular event flow
- Play / Pause / Skip
- Playlist CRUD
- Waveform scrubber
- Search, sort, pagination
- Lighthouse
- Waveform rendering speed
- Bundle size optimization
- ARIA labels
- Screen-reader support
- Keyboard navigation
- Disable WiFi → Player should still:
- Load pages
- Load IndexedDB playlist
- Serve cached files via Service Worker
- Chrome, Firefox, Edge, Safari
/project-root
│
├── frontend/
│ ├── index.html
│ ├── assets/
│ ├── js/
│ ├── css/
│
├── server/
│ ├── server.js
│ ├── db.json
│ ├── routes/
│ │ ├── playlists.js
│ │ └── tracks.js
│ ├── uploads/
│ ├── package.json
│ └── README-backend.md
│
└── README.md