How alfredsimpson/it490-longsoup works
LongSoup is a music-discovery and social web app backed by queue-mediated services. A user reaches the Express web server, which serves account and API routes; documented product flows include authentication, Spotify browsing and playlist actions, profiles, and message boards. RabbitMQ separates the web tier from database workers, while the DMZ gathers external music metadata. The README also describes a staged deployment service. Several worker and route implementations were not excerpted, so those components are included where documented, but unverified connections are omitted or shown as dashed.
Main entry points: server.js Express server · mustang.js RabbitMQ client · procedural_data_script.py Metadata collector · lumberjack.js Distributed logging
Components 24
Web application
- Express server
WebServer/webserver/server.js - Account routes
WebServer/webserver/routes/accountsRouter.js - API routes
WebServer/webserver/routes/api.js - Browser UI
WebServer/public/js/handler.js
Messaging and logging
- RabbitMQ client
WebServer/webserver/mustang.js - Distributed logging
WebServer/webserver/lumberjack.js
Database services
- Primary DB worker
DB/DBWorker.py - Profile worker
DB/DBProfileWorker.py - Message-board worker
DB/DBMessageWorker.py - MongoDB
- 2FA worker
DB/2FA/TESTDBWorker.py - Email verification
DB/2FA/LongAuthMessage.py
Music data
- Spotify worker
DB/DBSpotWorker.py - DMZ worker
DMZ/DMZWorker.py - Metadata collector
DMZ/procedural_data_script.py - Recommendations
DMZ/GetRecommendations.py
Deployment
- Package submission
Deployment/Testing/nodetest/app.js - Deployment service
Deployment/deploymentWorker.py
Other components
- User
- RabbitMQ broker
- Spotify API
- TheAudioDB API
- Developer
- QA approval
Connections 29
- User → Express server: uses
README.md - Express server → Account routes: mounts routes
WebServer/webserver/server.js - Express server → API routes: mounts routes
WebServer/webserver/server.js - User → Browser UI: interacts
README.md - Browser UI → Express server: requests data
- Account routes → RabbitMQ client: sends requests
WebServer/webserver/routes/accountsRouter.js - Express server → RabbitMQ client: sends requests
WebServer/webserver/server.js - RabbitMQ client → RabbitMQ broker: publishes and consumes
WebServer/webserver/mustang.js - RabbitMQ broker → Primary DB worker: dispatches requests
- RabbitMQ broker → Profile worker: dispatches profile requests
- RabbitMQ broker → Message-board worker: dispatches board requests
- RabbitMQ broker → Spotify worker: dispatches music requests
- Primary DB worker → MongoDB: reads and writes
- Profile worker → MongoDB: reads and writes
- Message-board worker → MongoDB: reads and writes
- Spotify worker → Spotify API: queries catalog
- DMZ worker → Metadata collector: invokes job
DMZ/DMZWorker.py - Metadata collector → TheAudioDB API: queries artists
DMZ/procedural_data_script.py - Metadata collector → RabbitMQ broker: publishes metadata
DMZ/procedural_data_script.py - User → Recommendations: requests recommendations
README.md - 2FA worker → Email verification: imports authentication helper
DB/2FA/TESTDBWorker.py - Email verification → User: sends verification email
DB/2FA/LongAuthMessage.py - Developer → Package submission: submits package
Deployment/Testing/nodetest/app.js - Package submission → RabbitMQ broker: sends package request
Deployment/Testing/nodetest/app.js - RabbitMQ broker → Deployment service: delivers package request
- Deployment service → QA approval: requests approval
README.md - Express server → Distributed logging: logs events
WebServer/webserver/server.js - RabbitMQ client → Distributed logging: logs broker errors
WebServer/webserver/mustang.js - Distributed logging → RabbitMQ broker: publishes logs
WebServer/webserver/lumberjack.js