Skip to content

arunkumar0398/release-checklist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Release Checklist

A single-page application to manage software releases with a step-by-step checklist.

Tech Stack

Layer Technology
Frontend React 18, TypeScript, Vite
Backend Node.js, Express, TypeScript
ORM Prisma
Database PostgreSQL
Infra Docker, docker-compose, Nginx

Running Locally

Option A — Docker (recommended)

docker-compose up --build

Option B — Manual

Prerequisites: Node 20+, a running PostgreSQL instance.

Backend

cd backend
cp .env.example .env          # fill in DATABASE_URL
npm install
npx prisma db push            # create tables
npm run dev                   # starts on :3001

Frontend

cd frontend
npm install
npm run dev                   # starts on :5173, proxies /api → :3001

Running Tests

cd backend
npm test

Tests require a live PostgreSQL database configured via DATABASE_URL.


Database Schema

-- releases
CREATE TABLE "Release" (
  id              UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name            TEXT NOT NULL,
  date            TIMESTAMPTZ NOT NULL,
  "additionalInfo" TEXT,
  "createdAt"     TIMESTAMPTZ NOT NULL DEFAULT now(),
  "updatedAt"     TIMESTAMPTZ NOT NULL
);

-- release_steps
CREATE TABLE "ReleaseStep" (
  id          UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  "releaseId" UUID NOT NULL REFERENCES "Release"(id) ON DELETE CASCADE,
  "stepIndex" INTEGER NOT NULL,
  completed   BOOLEAN NOT NULL DEFAULT false,
  UNIQUE ("releaseId", "stepIndex")
);

Release Status (computed, not stored)

Condition Status
0 steps completed planned
1–9 steps completed ongoing
All 10 steps completed done

Steps (fixed, same for every release)

# Label
0 Code review completed
1 Unit & integration tests passing
2 Staging environment deployed
3 QA sign-off received
4 Documentation updated
5 Database migrations ready
6 Rollback plan prepared
7 Security review done
8 Stakeholder approval obtained
9 Production deployment scheduled

API Endpoints

Base URL: /api

Releases

Method Path Description
GET /releases List all releases
POST /releases Create a new release
GET /releases/:id Get a single release
PATCH /releases/:id Update additional info
DELETE /releases/:id Delete a release
PATCH /releases/:id/steps/:stepIndex Toggle a step completed state

POST /releases — Request body

{
  "name": "v2.5.0",
  "date": "2024-07-15T10:00:00.000Z",
  "additionalInfo": "Optional notes"
}

PATCH /releases/:id — Request body

{ "additionalInfo": "Updated notes" }

PATCH /releases/:id/steps/:stepIndex — Request body

{ "completed": true }

Release response shape

{
  "id": "uuid",
  "name": "v2.5.0",
  "date": "2024-07-15T10:00:00.000Z",
  "additionalInfo": null,
  "status": "planned",
  "createdAt": "...",
  "updatedAt": "...",
  "steps": [
    { "index": 0, "label": "Code review completed", "completed": false },
    ...
  ]
}

Deployment

Frontend — Vercel

  1. Go to vercel.com and import this repository.

  2. In the project settings, set Root Directory to frontend.

  3. Vercel will auto-detect Vite. The frontend/vercel.json configures:

    • Build command: npm run build
    • Output directory: dist
    • SPA rewrites (all routes → index.html)
    • Long-term cache headers for hashed assets
  4. Add the following Environment Variable in the Vercel dashboard:

    Name Value
    VITE_BACKEND_URL https://your-backend-domain.com
  5. Deploy. Every push to main will trigger an automatic redeploy.

Note: The VITE_BACKEND_URL variable is baked in at build time by Vite. Leave it empty (or unset) if the frontend and backend are served from the same origin.

Backend — Railway / Render / Fly.io

  • Runtime: Node.js 20+

  • Start command: npm start (runs compiled dist/index.js)

  • Required env vars:

    Name Description
    DATABASE_URL PostgreSQL connection string (e.g. Neon, Supabase, Railway Postgres)
    PORT Port to listen on (defaults to 3001)

About

Release checklist app with backend, frontend, and Docker

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors