Capstone topics from the end of the program: how to set up a full-stack backend project, work with npm and Git, test APIs with Postman or curl, apply layering and REST habits, and prepare for deployment and the mock interview. These patterns tie Express, SQL, and deployment lessons into day-to-day engineering practice.

Development workflow

Day-to-day habits: Git commits, NODE_ENV for dev vs production, and keeping local environment variables out of version control.

2 topic(s) on this page.

How to stage and commit backend changes — Basic

Use Git to save incremental work; commit working slices (feature, fix, migration) with clear messages.
Learn: Small, focused commits make code review and debugging easier. Commit when a vertical slice works (e.g. ‘users list endpoint returns 200’), not only at the end of the week.

Supplementary examples

Check what will be committed

git diff
git diff --staged
git commit -m "feat(users): add GET /users list endpoint"

Course example

git status
git add src/users/users.service.js
git commit -m "Add list users service function"
git push origin main

Additional references & examples

How to use NODE_ENV — Intermediate

Switch behavior between development (verbose logs, pretty output) and production (structured logs, no secrets in responses).
Learn: NODE_ENV signals runtime context. Development favors readable logs; production favors performance and security (no stack traces to clients, stricter log levels).

Supplementary examples

Branch config in knexfile

module.exports = {
  development: { connection: process.env.DATABASE_URL, ... },
  production: { connection: process.env.DATABASE_URL, pool: { min: 2, max: 10 }, ... },
};

Course example

// config/logger.js
const isDev = process.env.NODE_ENV !== "production";

module.exports = pino(
  isDev
    ? { transport: { target: "pino-pretty" } }
    : { level: process.env.LOG_LEVEL || "info" }
);

Additional references & examples