WaveForge runs as four microservices in Docker containers, talking over HTTP and RabbitMQ. Scroll to run one file through the deck.

  1. 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
  2. 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
  3. FRAME 03

    Auth

    Go · PostgreSQL · :8001

    Handles signup, issues and validates JWTs, and keeps each user's file records.

    • sudeepgowda55/auth-service
    • /getfiles
  4. 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
  5. 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
  6. 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.

  1. 1Authentication service
  2. 2Gateway service
  3. 3Converter service
  4. 4Notification service