- Implemented a new Player class in player.js to handle audio playback, including HLS support using hls.js. - Created a shared API module in api.js for making HTTP requests with proper error handling. - Added DOM utility functions in dom.js for creating and clearing elements. - Introduced WebSocket connection handling in ws.js for real-time updates. - Developed a comprehensive CSS stylesheet for styling the application, including a high-contrast theme.
35 lines
859 B
Markdown
35 lines
859 B
Markdown
# Online Radio Explorer
|
|
|
|
Touchscreen kiosk + admin for exploring and playing internet radio in the office.
|
|
|
|
## Quick start
|
|
|
|
```powershell
|
|
cp .env.example .env
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
- Kiosk: http://localhost:5173/
|
|
- Admin: http://localhost:5173/admin/
|
|
- API: http://localhost:4173/api
|
|
|
|
First boot creates the SQLite DB at `DB_PATH`, runs the seed, and provisions the
|
|
bootstrap admin from `ADMIN_BOOTSTRAP_USER` / `ADMIN_BOOTSTRAP_PASSWORD`.
|
|
|
|
## Production
|
|
|
|
```powershell
|
|
npm run build
|
|
npm start
|
|
```
|
|
|
|
The built kiosk is served from `/`, admin from `/admin/`, API from `/api`.
|
|
|
|
## Layout
|
|
|
|
- `server/` — Express, SQLite, WebSocket hub, source adapters, stream resolver.
|
|
- `web/` — Vanilla JS kiosk (`web/`) and admin (`web/admin/`) bundled by Vite.
|
|
- `data/seed/stations.json` — curated starter pack.
|
|
- `deploy/` — systemd unit + Pi setup notes.
|