Skip to content

amirmalekian/streamforge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

StreamForge

A concurrent media processing platform built with Go.

StreamForge is an open-source backend engineering project focused on designing and building a scalable, asynchronous media processing system using modern Go ecosystem technologies.

The project explores real-world backend concepts such as concurrency, worker pools, message-driven architecture, background job processing, and distributed state management.

🚧 StreamForge is currently under active development.


Overview

StreamForge allows users to submit media processing tasks through a simple API.

The system is designed to handle long-running tasks asynchronously by distributing workloads across concurrent workers and providing real-time processing status updates.

The main goal of this project is to demonstrate practical backend engineering patterns using Go.


Goals

The project focuses on:

  • Building scalable backend services with Go
  • Understanding concurrency patterns and worker pools
  • Designing asynchronous processing workflows
  • Implementing queue-based architectures
  • Managing application state efficiently
  • Applying production-oriented engineering practices

Tech Stack

Backend

  • Go
  • Gin Web Framework

Database

  • PostgreSQL

Cache & State Management

  • Redis

Message Broker

  • RabbitMQ

Infrastructure

  • Docker
  • Docker Compose

API & Documentation

  • REST API
  • OpenAPI / Swagger

Testing

  • Go testing package

Architecture Overview

StreamForge follows a modular monolith architecture with clear domain boundaries.

The architecture is designed to support future evolution into independently deployable services if required.

High-level flow:

Client
  |
  |
Gin API
  |
  |
Create Processing Job
  |
  |
RabbitMQ Queue
  |
  |
Worker Pool
  |
  |
Concurrent Processing
  |
  |
PostgreSQL + Redis
  |
  |
Real-time Progress Updates

Planned Features

Core Features

  • RESTful API service
  • User authentication
  • Media processing jobs
  • Background job execution
  • Concurrent worker pool
  • RabbitMQ-based task queue
  • Redis-based progress tracking
  • PostgreSQL persistence
  • Real-time progress updates

Engineering Concepts

This project explores:

Go Concurrency

Using:

  • Goroutines
  • Channels
  • Worker pools
  • Context cancellation
  • Synchronization patterns

Asynchronous Processing

Using message-driven workflows:

API
 |
 |
Message Queue
 |
 |
Workers
 |
 |
Processing Tasks

Backend System Design

Focus areas:

  • Clean architecture
  • Separation of concerns
  • Error handling
  • Scalability
  • Maintainability

Project Structure

The planned structure:

streamforge/

β”œβ”€β”€ cmd/
β”‚   └── api/

β”œβ”€β”€ internal/
β”‚
β”‚   β”œβ”€β”€ auth/
β”‚   β”œβ”€β”€ jobs/
β”‚   β”œβ”€β”€ media/
β”‚   β”œβ”€β”€ worker/
β”‚   β”œβ”€β”€ queue/
β”‚   β”œβ”€β”€ cache/
β”‚   β”œβ”€β”€ database/
β”‚   └── api/

β”œβ”€β”€ migrations/

β”œβ”€β”€ docs/

β”œβ”€β”€ docker-compose.yml

β”œβ”€β”€ Dockerfile

└── README.md

Development Roadmap

Phase 1 β€” Foundation

  • Project initialization
  • Application configuration
  • Database setup
  • Basic API structure

Phase 2 β€” Core Backend

  • Authentication
  • Job management
  • Database models
  • REST API

Phase 3 β€” Async Processing

  • RabbitMQ integration
  • Worker pool implementation
  • Concurrent processing

Phase 4 β€” Real-time Features

  • Redis integration
  • Progress tracking
  • Server-Sent Events

Phase 5 β€” Production Improvements

  • Testing
  • CI/CD
  • Documentation
  • Observability

Why StreamForge?

Modern backend systems frequently require handling long-running operations, background jobs, and concurrent workloads.

StreamForge is an attempt to explore these challenges using Go's strengths in simplicity, performance, and concurrency.


License

MIT License

About

A concurrent media processing platform built with Go, Redis, RabbitMQ, and PostgreSQL.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors