FeedFlux is a production-oriented RSS aggregation backend built in Go using Gin.
The project focuses on clean architecture, background processing, containerized infrastructure, and DevOps-driven development.
This is not just an RSS reader --- it is being developed as a backend systems engineering project.
HTTP (Gin)
↓
Handler
↓
Service (Business Logic)
↓
Repository (Interface)
↓
Storage Implementation (In-Memory → PostgreSQL)
The system follows layered architecture with clear separation of concerns and dependency inversion.
cmd/ internal/ handler/ service/ repository/ worker/ config/ docker-compose.yml Dockerfile
- Go module initialized
- Gin HTTP server with health endpoint
- Clean layered architecture setup
- Dockerized PostgreSQL (v16)
- Docker Compose infrastructure
- Persistent database volume
- pgAdmin integration
- Defined phased backend + DevOps roadmap
- Feed CRUD
- Pagination
- Validation
- Structured logging
- Graceful shutdown
- In-memory repository implementation
- PostgreSQL repository implementation
- Proper schema & indexing
- Unique constraints
- Idempotent inserts
- Migrations (golang-migrate)
- Transaction handling
- RSS polling worker
- Feed parsing
- Retry mechanism
last_fetched_atupdates- Worker separation (API + Worker services)
- Multi-stage Dockerfile
- Non-root execution
- Docker Compose multi-service setup
- Healthchecks
- Restart policies
- Environment-based configuration
.envsupport- Dev/Prod configs
- Structured logging
- Prometheus metrics
- Basic system metrics (feeds, articles, errors, duration)
- Optional Grafana integration
- Unit tests
- Repository tests
- Integration tests
- CI automation
- GitHub Actions pipeline
- Linting
- Tests
- Docker image build
- Content timeouts
- Rate limiting
- Retry with backoff
- Security headers
- Dependency scanning
- Architect a resilient RSS ingestion backend capable of handling multiple feed sources concurrently.
- Implement background processing patterns
- Provide reliable data storage with proper constraints, indexing, and transaction handling
- Expose operational metrics for monitoring ingestion performance and system reliability
- Build production-aware system design
- Lay groundwork for future extensibility (authentication, caching, distributed scheduling).
Start services:
docker compose up -d
Health endpoint:
GET /health
Active development --- building toward production-grade backend architecture.
