Skip to content

Overview & Architecture

Purpose

Orient a new contributor (or your future self) to how AkshayaBazaar's code, containers, Kubernetes objects, and cloud infrastructure fit together, before diving into any individual how-to page.

The path from commit to running application

Developer
   |
   v
GitHub
   |
   +--> GitHub Actions   (restore/build/test on every push & PR - see cicd/github-actions.md)
   |
   +--> Jenkins          (build, scan, image, deploy pipeline - master/tags only, see cicd/jenkins.md)
   |
   v
Docker Images            (backend/Dockerfile, frontend/Dockerfile - see docker/images.md)
   |
   v
Kubernetes / k3d          (Helm chart helm/akshayabazaar/ - see kubernetes/index.md)
   |
   v
Traefik                   (K3s's bundled Ingress controller - see kubernetes/ingress.md)
   |
   +--> React frontend    (nginx, serves the SPA + proxies /api/* - see docker/images.md)
   |
   +--> ASP.NET Core API
           |
           +--> MySQL     (EF Core / Pomelo provider)
           |
           +--> Redis     (IDistributedCache; falls back to in-memory if unconfigured)

This is the actual, current path - not aspirational. GitHub Actions runs on every push/PR regardless of branch; Jenkins only builds images and deploys on master (→ dev) or a release tag (→ staging, then production behind a manual gate). See CI/CD for exactly which triggers do which.

Pages in this section

  • Application architecture - the Clean Architecture layering, frontend structure, and how the two talk to each other (in Docker Compose, and in Kubernetes).
  • Infrastructure architecture - the actual Terraform/Helm-defined infrastructure: the shared K3s node, per-environment data VMs, Cloudflare DNS/R2, and how they relate.
  • Environments - what local / dev / staging / prod each actually mean in this repository, and which config file backs each one.

What this portal does not claim exists

Per this project's own documentation discipline: infrastructure is only documented here if it's actually defined in terraform/, helm/, or docker-compose*.yml in this repository. Notably:

  • There is no managed Kubernetes service in use - K3s runs on a plain Hetzner Cloud VM, installed via cloud-init (see Infrastructure).
  • There is no managed MySQL/Redis service - both run as software on a Hetzner data VM via cloud-init, with an external_mysql_host/external_redis_host escape hatch in Terraform if a managed provider is ever adopted instead.
  • Monitoring/backup infrastructure exists in the Helm chart (templates/monitoring/, templates/backup/) but is disabled by default (monitoring.enabled: false, backup.enabled: false in the base values.yaml) - see Operations for what's actually wired up versus what's a documented-but-off capability.