A cloud-native food ordering system built with a Go backend and Vue frontend, deployed using GitOps principles, automated CI/CD, and a full monitoring + observability stack.
The application is deployed to:
- Staging – via Docker Compose on a single host.
- Production – via Helm charts to a K3s cluster, using ArgoCD for GitOps-based continuous delivery.
- CI pipelines for frontend and backend:
- Run tests (if available).
- Build Docker images.
- Push images to a private Nexus registry.
- Automatically trigger the infrastructure repo CI, which:
- Updates Helm chart values.
- Packages and pushes the chart to Nexus.
- Triggers ArgoCD to apply the new version in production.
Production deployments only happen on
mainbranch pushes.
├── backend/ # Go backend service
│ ├── cmd/
│ ├── internal/
│ ├── Dockerfile
│ └── .gitlab-ci.yml
├── frontend/ # Vue.js frontend
│ ├── src/
│ ├── public/
│ ├── Dockerfile
│ └── .gitlab-ci.yml
├── docker-compose.yml # Staging environment setup
├── .gitlab-ci.yml # Root CI pipeline
└── README.md
The infrastructure is maintained in a dedicated infra repository using:
- Terraform – for provisioning cloud servers and DNS.
- Ansible – for configuring nodes.
- Helm + ArgoCD – for managing application releases.
- Vault – for secrets management.
- Nexus – private container and Helm registry.
- Lightweight Kubernetes with K3s
- MetalLB – for load balancing
- Nginx Ingress – for traffic routing
- Cert Manager – for TLS
- External Secrets Operator – integrates with Vault
- ArgoCD – for GitOps-style continuous deployment
Scripts in the infra repo provide quick setup for local testing or remote cluster bootstrapping.
- Helm charts use semantic versioning format:
MAJOR.MINOR.PATCH - MAJOR and MINOR: manually managed by developers.
- PATCH: auto-incremented by CI pipeline (
CI_PIPELINE_ID).
This ensures reliable, automated chart publishing and deployment tracking.
Example:
0.1.21390– where0.1is set in code and21390is the pipeline ID.
- Prometheus – metrics collection
- Grafana – dashboards & visualizations
- Loki + Promtail – centralized logging
- Alertmanager – alert routing via Telegram
cd frontend
npm install
NODE_ENV=production VUE_APP_API_URL=http://localhost:8081 npm run servecd backend
go run ./cmd/api
go test -v ./...docker compose up --build -d

