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

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors