Boback
Back to Projects
⭐ Featured Case Study
Go
Next.js
Clean Architecture

Stageflow

Event-driven platform for orchestrating website accessibility scans using containerized services and real-time status tracking.

~8,000 LOC
Active
High

Executive Summary

Challenge: Build a production-grade distributed system for accessibility scanning without cloud dependencies or Docker daemons. Approach: Implemented Clean Architecture with strict layer separation—Domain models isolated from Infrastructure (PodmanClient, MinIO). Event-driven core uses NATS JetStream for async job orchestration with event envelopes standardizing payloads. Custom Finite State Machine enforces valid job transitions (created→extraction→scan→completed), preventing race conditions in concurrent workflows. Podman integration enables rootless, lightweight containerization for scanner isolation. Frontend in Next.js showcases real-time scan dashboards with shadcn/ui components. Outcomes: Zero architectural violations, comprehensive test suite (unit, integration, E2E with Testcontainers), full local deployment scripts. Innovation: FSM-driven state management + Podman orchestration demonstrates advanced system design without heavyweight tooling.

The Challenge

Automates accessibility scanning of websites via containerized, event-driven pipelines.

The Solution

Implemented Clean Architecture in Go for services, layering domain models over infra. Event-driven core uses NATS JetStream for payloads. Frontend in Next.js app router integrates scan status hooks.

System Architecture

Key Features

1

Job Orchestration

2

Website Extraction

3

Accessibility Scanning with Axe

4

Event-Driven Messaging

5

Real-Time Scan Status

6

Container Management

7

Object Storage

8

Portfolio Frontend

Technical Skills Matrix

Go
Clean Architecture
Finite State Machines
Podman Integration
NATS JetStream
Next.js
React
TypeScript
shadcn/ui
App Router
React Hooks
MinIO
SQLite
Event-Driven Architecture
Pub/Sub Messaging
Axe Core
Playwright
Accessibility Testing
WCAG
Unit Testing
Integration Testing
E2E Testing
Testcontainers
Rate Limiting
Logging (slog)
Error Handling
Middleware
Docker
Container Orchestration
Microservices
Distributed Systems
RESTful APIs
HTTP Servers (Gin)
Caddy
Reverse Proxy
Interface-Based Design
Dependency Injection
Repository Pattern
Path Traversal Protection
Security Best Practices
Environment Configuration