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

 groovey calandar workflow diagram

 

Screen Shots

Groovey Task Manager Home Page

groovey task manager home page

 

Groovey Task Manager Create/Manage Tasks

groovey task manager create

 

Groovey Task Manager Archive Search

groovey task manager archive