WaveForge runs as four microservices in Docker containers, talking over HTTP and RabbitMQ. Scroll to run one file through the deck.
- FRAME 01
You
Next.js frontend
Signs you up, then POSTs the video as multipart form data with your email, target format and sampling rate.
- POST /signup
- POST /upload
- POST /getfiles
- FRAME 02
Gateway
Go · Gin · :8000
The only public entry point. Stores the upload in MongoDB GridFS and publishes a message to the file_uploaded queue.
- sudeepgowda55/gateway-service
- /validatejwt
- /updatefileurl
- FRAME 03
Auth
Go · PostgreSQL · :8001
Handles signup, issues and validates JWTs, and keeps each user's file records.
- sudeepgowda55/auth-service
- /getfiles
- FRAME 04
RabbitMQ
message broker
Decouples the slow work. Uploads return immediately; conversions and emails happen when consumers are ready.
- file_uploaded
- file_converted_notification
- FRAME 05
Converter
Python · pydub
Consumes file_uploaded, pulls the video from GridFS, exports MP3 or WAV, re-samples if asked, uploads to Cloudinary and reports the URL back to the gateway.
- sudeepgowda55/converter-service
- Cloudinary
- FRAME 06
Notification
Node.js · amqplib · Mailgun
Consumes file_converted_notification and emails you the download link.
- sudeepgowda55/notification-service
- Mailgun
After the auth service starts, put its IP in the gateway config. Changing the order changes the IP addressing and the services stop finding each other.
- 1Authentication service
- 2Gateway service
- 3Converter service
- 4Notification service