PixPro
Intelligent image processing platform powered by AI, event-driven architecture, and real-time notifications.
Pure software architecture
Robust backend · No visual UI
Project Overview
PixPro is a web platform that allows uploading images (individually or in batches), applying AI-powered enhancements and effects, and receiving live updates. Developed by the PixarMinds team under Scrum methodology with two-week sprints, rotating roles, and full ceremonies. The process included technical planning, research spikes (MinIO, Gemini API), DoR/DoD definition, and branching conventions (GitHub Flow). The architecture is a decoupled event-driven microservices system using Apache Kafka (selected after a decision matrix against Redis Streams), WebSockets (Socket.io) for real-time, and an internal CDN with MinIO. Backend: Node.js + Express + TypeScript implementing CQRS with Redis as cache (@cached, @invalidateCache decorators). Authentication with Keycloak (SSO, RBAC). AI processing with Ollama (YOLO, Stable Diffusion). Frontend: React SPA with Zustand, TanStack Query, PrimeReact, and Socket.io-client. Deployed with Docker Compose and GitLab CI/CD (rolling deployment). The team worked collaboratively with daily stand-ups, reviews, and retrospectives, delivering a functional MVP in 8 weeks.
Architecture Design

Context Diagram: Users interact with PixPro, which orchestrates authentication, processing, storage, and database.

Container Diagram: React Frontend, Backend API, AI Workers, Kafka, Redis, MinIO, Keycloak, and MongoDB.
Core Modules
Authentication & User Management with Keycloak
SSO and RBAC with Keycloak, including registration, login, and password recovery. The backend validates JWT tokens; the frontend protects routes via context. Integrated with PostgreSQL.
Image Upload & CDN Storage (MinIO)
Individual or batch uploads with preview and progress tracking. Images stored in MinIO (S3 API) with signed URLs. An IStoragePort adapter makes the implementation easy to swap.
Async Processing with Kafka & Ollama
'image-process' event published to Kafka, consumed by Node.js workers that invoke Ollama (YOLO, Stable Diffusion). Results go to 'image-processed' or 'image-processed-error'. Decoupled and scalable architecture.
Real-Time Notifications (WebSockets + Redis Pub/Sub)
Frontend connected via Socket.io to a gateway that listens to Kafka topics. Events delivered to the client through rooms (userId). Redis adapter enables scaling across multiple gateway instances.
Project Organization & Personal Library
Users create projects and assign processed images to them. Metadata includes title, category, and parameters. The backend uses CQRS with pagination, filters, and Redis cache.
Admin Panel & Performance Metrics
Dashboard for administrators showing KPIs: images processed, processing times, queue status, and cache usage. Data aggregated from MongoDB and served via role-protected REST endpoints.
CI/CD Integration & Deployment (Rolling Updates)
GitLab CI/CD pipeline with linting, tests, Docker build, and automatic deployment. Rolling deployment (zero downtime) chosen over Blue-Green due to resource constraints. Health checks ensure stability.