A simple single-page application (SPA) demonstrating a basic full-stack setup using Go (Gin) for the backend and Vue 3 + Vite + Vuetify for the frontend.
The project serves as a lightweight example of a RESTful API communicating with a modern JavaScript frontend.
The data is preserved in SQLite database (default /app/data/invoices.db), it is not made to be persistant!
For further information check individual folders.
- Backend: Go + Gin (REST API)
- Frontend: Vue 3 + Vite + Vuetify
- Database: SQLite
- Containerization: Docker + Docker Compose
- IaC: Terraform, K8 + Kustomize
- CI/CD: Github Acitons with composite Actions, ArgoCD on K8, Annual Security Scanning with Trivy
- Simple REST API
- Vue SPA with Vuetify UI components
- Sort/Search/Filter/Pagination
- Communication between frontend and backend via HTTP
- Docker + Compose setup for local development
- Treafig reverse proxy for one URL to backend/frontend
- Kubernetes Deployment
- Full CI/CD
git clone https://github.com/<your-username>/invoice-spa-go.git
cd invoice-spa-gocp .env.example .envdocker compose up --build -d .
docker compose down -v # -v is optional as it will remove volumesdocker build --build-arg GO_VERSION=$GO_VERSION -t invoice-backend ./backend
docker build --build-arg NODE_VERSION=$NODE_VERSION -t invoice-frontend ./frontenddocker compose watchFrontend: http://localhost:80
Backend API: http://localhost:8080/api/healthThe project is meant for educational or demo purposes.
It is ment to showcase usage of DevOps principals in simple manner.
| Tool | Description | Link |
|---|---|---|
| Gin (Go) | HTTP microframework for Go | https://gin-gonic.com/docs/ |
| Vue 3 | Frontend framework JS | https://vuejs.org/guide/introduction.html |
| Vite | Bundler and dev server | https://vitejs.dev/guide/ |
| Vuetify | Ready UI components | https://next.vuetifyjs.com/ |
| Docker Compose | Containers definition | https://docs.docker.com/compose/ |
