homeexamplesnode-docker

Node.js Todo App - Docker + GHCR

Published Oct 15, 2025
3 minutes read

This project is a simple but production‑minded Todo application that demonstrates how I containerize a full‑stack app and publish images to GitHub Container Registry (GHCR) with automated CI/CD. The goal is to practice containerization, release flow, and day‑2 operations on a compact, approachable codebase.

Dockerized full‑stack app
Backend and Web in separate images; DB file persisted via volume.

Project goals

Architecture overview

Next.js frontend
Minimal Task Manager UI built with Next.js.

Data model (essentials)

Indexes:

API surface (concise)

Request lifecycle

  1. Frontend calls the API using NEXT_PUBLIC_API_URL (e.g., http://localhost:3000).
  2. API validates and reads/writes the SQLite file via better-sqlite3.
  3. API returns JSON; Frontend updates local state.

Operational concerns

GHCR publish
CI/CD builds and pushes images to GHCR.

Observability

Security and reliability

Performance notes

Trade‑offs and decisions

Running the project

CI/CD and releases

Edge cases

Future work

Notes

The repository is intentionally small, but the patterns (containerization, health checks, logging, CI/CD, env configuration) mirror how I approach larger systems. If you want, I can extend this page with screenshots, a live demo link, or deeper cost/perf details.