Skip to content

onehungrymind/modern-product-quickstart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Modern Production Quickstart — Tracer

Volume I — Production of the Project to Product Playbook, made executable. Take Tracer, a link shortener built to inner-ring best practice, and promote it across the outer ring — containers, CI/CD, environments, IaC, observability, incident response, security — one lab at a time, diffing your work against a canonical answer key. Sibling to Modern Coding Quickstart and Modern E2E Quickstart.

New here? Start with docs/intro.md. The Readiness Manifest (the outer-ring deltas R01–R14 the labs promote to product-grade) lives in scripts/readiness.manifest.json; the full build plan and design rationale are in _internal/ (MODERN-PRODUCTION-PLAN.md, LAB-DESIGN.md).

Tracer, the app

A link shortener with click analytics:

  • CreatePOST /api/links mints a unique slug for a target URL.
  • ResolveGET /:slug (root, the hot path) 302-redirects and records a Click.
  • AnalyticsGET /api/links/:id/clicks feeds the detail view.

Three thin entities (User, Link, Click); no state machine (a link is active until expires_at passes). An Nx monorepo: separated Angular web (zoneless, NgRx links feature) + NestJS API (TypeORM/Postgres, JWT, Zod-first contracts in @tracer/common-models).

The seed tag — where you start

seed is the honest CLI-standard app: inner ring done well, outer ring dev-grade or absent. It runs and is well-built — it simply isn't a product yet. The deliberately dev-grade bits — each one a lab's target:

  • Persistencesynchronize: true, no migrations
  • Logs — Nest's default logger, not structured JSON
  • Config & secrets.env committed, defaults in code
  • Rate limiting@nestjs/throttler installed but unconfigured
  • Delivery · infra · observability — none yet (no CI, IaC, or OpenTelemetry)

Prerequisites

  • Node 20 (.nvmrc) and npm
  • Docker — for local Postgres (and, in later labs, the observability stack, Terraform, act)

Run it

npm install
cp .env.example .env          # config is env-only (R02/R03) — the API fails loud without it
npm run db:up                 # Postgres on localhost:5433 (host 5432 is often taken)
npm run migration:run         # create the schema
npm run seed                  # add the demo user (below)
npm start                     # serve api (:3000) + web (:4200) together
# open http://localhost:4200

Log in as demo@tracer.local / tracerdemo123 — or click Register to create your own account.

Starting the labs instead? git checkout seed (the dev-grade starting point) or npm run module:begin 01.

Verify

npm run verify                # typecheck + lint + test + build across all projects

Workshop

Each lab promotes one outer-ring capability. Use the tag harness:

npm run module:begin NN       # check out lab NN's starting point on a my/NN branch
npm run module:compare NN     # diff your work against the canonical NN-complete

License: MIT.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors