This is a distributed voting application designed to demonstrate a multi-service architecture. It uses stateless web frontends for submitting votes and viewing live results, with a Redis-backed queue to buffer incoming votes and a PostgreSQL database for persistent tallying. The application is built around asynchronous message queue processing, decoupling the vote submission from the tallying workflow.
The project showcases how to deploy a multi-service application using container orchestration tools. It provides YAML-driven declarative deployment manifests for Docker Compose, Docker Swarm, and Kubernetes, enabling reproducible deployments across single hosts or clusters. A background worker service reads votes from the message queue and writes them to the database for reliable, real-time result aggregation.
The application includes a voting ballot interface for user input and a live results viewer that displays aggregated vote counts as they are processed. The entire system is defined as interconnected Docker containers, with services, networks, and volumes specified in YAML manifests for flexible deployment.