Skip to content

IntScription/rest-assured

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rest Assured

A full-stack health & fitness logging platform built with Next.js, React Native, Supabase, Docker, and Kubernetes.

The project includes a web application, mobile application, CI pipeline, containerized infrastructure, and Kubernetes deployment, demonstrating a complete modern development and DevOps workflow.


Features

Workout Tracking

  • create exercises
  • organize training splits
  • log workouts
  • view training history

User Accounts

  • Supabase authentication
  • profile management
  • secure user data

Cross Platform

  • Web application (Next.js)
  • Mobile application (React Native + Expo)

Tech Stack

Frontend

  • Next.js
  • React
  • Tailwind CSS

Mobile

  • React Native
  • Expo

Backend / Database

  • Supabase
  • PostgreSQL

DevOps

  • Docker
  • Docker Compose
  • GitHub Actions CI
  • GitHub Container Registry (GHCR)
  • Kubernetes (Minikube)

Architecture

Developer
   ↓
Git Push
   ↓
GitHub Actions (CI)
   ↓
Docker Image Build
   ↓
Push to GHCR
   ↓
Kubernetes Deployment
   ↓
Running Containers

Repository Structure

rest-assured
│
├─ web/                     # Next.js web application
│
├─ mobile/                  # React Native mobile app
│
├─ infra/
│   ├─ kubernetes/          # Kubernetes manifests
│   │   ├─ deployment.yml
│   │   ├─ service.yml
│   │   └─ secret.example.yml
│   │
│   └─ scripts/
│       ├─ deploy.sh        # Kubernetes deploy script
│       └─ release.sh       # Full release pipeline
│
├─ docker-compose.yml
│
└─ .github/workflows/       # CI pipelines

CI Pipeline

GitHub Actions automatically:

  1. installs dependencies
  2. builds the Next.js application
  3. builds the Docker image
  4. pushes the image to GitHub Container Registry

Example image:

ghcr.io/intscription/gravity-log-web:latest

Kubernetes Deployment

The application is deployed using Kubernetes with:

  • Deployment
  • Service
  • Secrets

Example deployment:

kubectl apply -f infra/kubernetes/

Local Deployment

Deploy the latest container image with one command:

./infra/scripts/release.sh

This script:

  1. pushes code to GitHub
  2. waits for CI to build the Docker image
  3. deploys the new container to Kubernetes

Running Locally

Start the web app

cd web
npm install
npm run dev

Run with Docker

docker compose up --build

Kubernetes Deployment

minikube start
kubectl apply -f infra/kubernetes/

Environment Variables

Create .env.local inside web/:

NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=

Future Improvements

  • Kubernetes Ingress
  • Health probes
  • GitOps deployment
  • Monitoring (Prometheus + Grafana)

Author

Kartik Sanil


Why this project exists

This project demonstrates:

  • full-stack application development
  • containerization with Docker
  • CI/CD automation
  • Kubernetes deployment

It serves as both a fitness tool and a DevOps learning platform.

About

Rest Assured – Train hard. Track smarter.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages