How beatfly-music/server works
BeatFly is a backend for a music-streaming service. Clients call the mounted /xrpc API; route modules apply authentication and upload handling where configured, then dispatch to controllers. The principal content workflow is album/track upload, audio compression and database storage, followed by track streaming; favourites, playlists, search, featured content, recommendations, profiles and reports are separate capabilities. Account recovery can send email, and image requests are optimized before delivery. The tree and excerpts support these boundaries, but most controllers and streaming internals were not sampled, so uncertain internal call paths are omitted.
Main entry points: server.js Express server · db.js Database client · albumController.js Album management · albumRoutes.js Album routes
Components 26
API and access
- Express server
server.js - Authentication
middleware/auth.js - Account routes
routes/accountRoutes.js - Album routes
routes/albumRoutes.js - Track routes
routes/trackRoutes.js - Stream routes
routes/streamRoutes.js
Music catalog
- Album management
controllers/albumController.js - Track management
controllers/trackController.js - Audio compression
utils/compressAudio.js - Image optimization
routes/imageRoutes.js - Music uploads
Listening features
- Track streaming
controllers/streamController.js - Playlists
controllers/playlistController.js - Favourites
controllers/favouriteController.js - Search
controllers/searchController.js - Recommendations
controllers/recommendationController.js - Featured content
controllers/featuredController.js
Accounts and profiles
- Account services
controllers/accountController.js - Profiles
controllers/profileController.js - User preferences
controllers/userController.js
Administration
- Administration
controllers/adminController.js - Artist reports
controllers/reportController.js
Other components
- API client
- SMTP email
- MySQL database
schema.sql - Database client
utils/db.js
Connections 30
- API client → Express server: sends requests
- Express server → Account routes: mounts routes
- Express server → Album routes: mounts routes
- Express server → Track routes: mounts routes
- Express server → Stream routes: mounts routes
- Express server → Image optimization: mounts routes
- Album routes → Authentication: authenticates
- Album routes → Album management: dispatches
- Track routes → Authentication: authenticates
- Track routes → Track management: dispatches
- Stream routes → Track streaming: dispatches
- Account routes → Account services: dispatches
- Album management → Audio compression: compresses audio
- Album management → Music uploads: stores uploads
- Album management → Database client: queries
- Track management → Database client: queries
- Track streaming → Database client: queries
- Account services → Database client: queries
- Account services → SMTP email: sends reset mail
- Image optimization → Music uploads: reads images
- Express server → Playlists: mounts routes
- Express server → Favourites: mounts routes
- Express server → Search: mounts routes
- Express server → Recommendations: mounts routes
- Express server → Featured content: mounts routes
- Express server → Profiles: mounts routes
- Express server → User preferences: mounts routes
- Express server → Administration: mounts routes
- Express server → Artist reports: mounts routes
- Database client → MySQL database: queries