This is project done in the context of the lecture "DevOps: Engineering for Deployment and Operations". It aims to apply DevOps practices, along with Software Engineering practices in a secure learning environment.
This project includes:
- Client: ReactJS with TypeScript, NodeJs, and reusable UI components.
- Server: Spring Boot Java application with RESTful APIs.
- DevOps: Dockerized services, CI/CD pipelines, and production-ready deployment configurations.
A more detailed overview of the problem we're trying to solve can be found in the problem statement. For an architectural overview, refer to the system description.
- Node.js (v22 or later)
- Java JDK 21+
- Gradle
- Docker and Docker Compose
- Git
To run the entire stack locally:
docker compose up --buildThis will start all services (auth, user, ticket, media, genai, client, database, traefik, prometheus, grafana) and their dependencies. See each service's subdirectory for API details and configuration options.
All required env variables for the deployment are in .env-template
Infrastructure and automated deployment are managed via Terraform and Ansible:
- Terraform provisions AWS EC2 instances and networking (see
terraform/) - Ansible installs Docker and deploys the application stack (see
ansible/)
To deploy:
cd terraform
terraform init
export $(grep -v '^#' .env | xargs)
terraform applyThis will automatically trigger the Ansible playbook to install Docker and start the containers on the created EC2 instance.
For production or scalable deployments, use the Helm chart in helm/spoved-app/:
helm upgrade spoved-app ./helm/spoved-app -n spoved-2 --installConfigure values in helm/spoved-app/values.yaml as needed for your environment. See the Helm README for details on working with Minikube, Rancher, or other clusters.
- Service APIs & configuration: See each microservice's subdirectory (
auth/,user/,ticket/,media/,genai/,client/) - Infrastructure: See
terraform/andansible/ - Monitoring & Observability: See
grafana/provisioning/README.mdanddocs/monitoring.md - System Architecture & Design: See
docs/system_description.mdand diagrams inresources/ - CI/CD & Security: See
docs/ci-cd.md
For troubleshooting, usage examples, and advanced configuration, refer to the documentation in the relevant subdirectories.
This project is licensed under the MIT License.
