Skip to content

Fullstack Momo Store application with Vue frontend and Go backend. CI pipelines build and push images to Nexus, trigger Helm chart updates, and deploy to production via ArgoCD.

Notifications You must be signed in to change notification settings

examplefirstaccount/momo-store

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Momo Store aka Пельменная №2

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.


🚀 Deployment Overview

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/CD Workflow

  • 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 main branch pushes.


📁 Repository Structure

├── 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

🧱 Infrastructure

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.

Cluster Setup

  • 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.


🔁 Release & Versioning

  • 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 – where 0.1 is set in code and 21390 is the pipeline ID.


📊 Monitoring & Observability

  • Prometheus – metrics collection
  • Grafana – dashboards & visualizations
  • Loki + Promtail – centralized logging
  • Alertmanager – alert routing via Telegram

Example Dashboards

grafana-dashboard

ArgoCD App View

argocd-ui

Logs in Grafana

grafana-logs


🛠 Local Development

Frontend

cd frontend
npm install
NODE_ENV=production VUE_APP_API_URL=http://localhost:8081 npm run serve

Backend

cd backend
go run ./cmd/api
go test -v ./...

Local Docker Compose (Staging)

docker compose up --build -d

About

Fullstack Momo Store application with Vue frontend and Go backend. CI pipelines build and push images to Nexus, trigger Helm chart updates, and deploy to production via ArgoCD.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published