Full-Stack Go + React Application with Containerized CI/CD Deployment
Overview
Groovey Task Manager (Todo Axios API) is a full-stack application designed to explore high-performance backend development using Go while maintaining production-grade architectural standards consistent with modern distributed systems.
The project demonstrates how lightweight Go services can integrate into a containerized, CI/CD-driven deployment pipeline, supporting scalable frontend applications and automated infrastructure workflows.
Rather than serving as a simple API prototype, this project represents a complete application lifecycle implementation: from local development → automated testing → container build → registry publishing → VPS deployment.
Architecture
The system follows a service-oriented architecture composed of independently containerized components:
React Frontend (Node Build)
↓
Go REST API (Golang)
↓
PostgreSQL 17 Database
This is augmented with:
- Docker Compose orchestration
- GitHub Actions CI/CD pipeline
- GitHub Container Registry (GHCR) image distribution
- Automated VPS deployment via SSH
Technology Stack
Backend
- Go (Golang)
- RESTful API design
- Structured request/response handling
- Native concurrency model (goroutines)
- Modular service architecture
Frontend
- React (built via Node pipeline)
- Axios for API communication
- Static build served via containerized web service
Database
- PostgreSQL 17
- Relational schema design for task/event workflows
Infrastructure & DevOps
- Docker / Docker Compose
- GitHub Actions (CI/CD)
- GitHub Container Registry (GHCR)
- VPS deployment via SSH automation
- Healthcheck-driven service validation
CI/CD Pipeline (GitHub Actions + GHCR)
The project implements a fully automated CI/CD workflow defined in:
.github/workflows/ghcr.yml
Pipeline Stages
1. Test Stage
- Spins up PostgreSQL 17 service container
- Builds Go backend
- Executes backend test suite
- Installs frontend dependencies
- Builds production frontend bundle
2. Build & Push Stage
- Builds Docker images for:
- API service
- Web frontend
- Tags images using:
- main
- commit SHA
- Pushes images to GitHub Container Registry (GHCR)
3. Deploy Stage (VPS)
- Connects to VPS via SSH
- Authenticates with GHCR
- Executes:
docker compose pull
docker compose up -d --remove-orphans
- Performs automated health checks:
- API endpoint validation (/api/tasks)
- Frontend availability check
- Performs cleanup of unused images
This pipeline ensures that every push to main results in a fully tested, built, and deployed application.
Containerization Strategy
The application is fully containerized with:
- Separate Dockerfiles for:
- Backend (Go service)
- Frontend (React build + static server)
- Docker Compose for:
- Service orchestration
- Environment configuration
- Network coordination
This enables:
- Environment parity (local → staging → production)
- Stateless deployment
- Horizontal scalability
Deployment Model
- Hosted on a VPS (Ubuntu-based)
- Images pulled from GHCR at deploy time
- Services restarted using Docker Compose
- Health checks gate deployment success
This reflects a production-grade deployment workflow, not a simple manual deployment.
Engineering Highlights
- Demonstrates Go outside of Rails ecosystem while maintaining architectural rigor
- mplements full CI/CD lifecycle, not just code delivery
- Uses container registry as deployment artifact source
- Applies healthcheck-based deployment validation
- Maintains separation of concerns across:
- API layer
- frontend layer
- infrastructure layer
Repository
Visuals

Screen Shots
Groovey Task Manager Home Page

Groovey Task Manager Create/Manage Tasks

Groovey Task Manager Archive Search
