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/prodeach 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_hostescape 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: falsein the basevalues.yaml) - see Operations for what's actually wired up versus what's a documented-but-off capability.