TypeScript + React app built with Webpack.
- React 18
- TypeScript
- Webpack 5
- Babel (TS/React presets)
- Docker + Docker Compose (dev + production-style builds)
- ESLint + Prettier
- Vitest
- Playwright + start-server-and-test
- Husky
- Node (see
.nvmrc) - npm
npm cinpm run devOpen:
npm run typechecknpm run lint
npm run formatnpm run testnpm run build
npm run e2e:cinpm run buildOutput is written to dist/
npm run previewOpen:
npm run analyzeRun the production nginx container (no dev server):
docker compose -f docker-compose.yml up --buildOpen:
This runs the webpack dev server inside a container and mounts your local source code into it.
docker compose up --buildOpen:
Stop:
docker compose downBuild the image:
docker build -t projectsparks-web .Run it:
docker run --rm -p 8080:80 projectsparks-webOpen:
This repo uses Husky + lint-staged to enforce formatting and linting on commit.
- Prettier runs on staged files
- ESLint runs on staged JS/TS files
If hooks don’t run after cloning, make sure you’ve installed dependencies:
npm ci-
src/— React + TypeScript application source -
public/— HTML template and static assets -
dist/— production build output (generated) -
e2e/— Playwright end-to-end tests -
webpack.config.cjs— Webpack configuration (dev + prod) -
tsconfig.json— TypeScript compiler settings -
vitest.config.ts— Vitest configuration -
playwright.config.ts— Playwright configuration -
Dockerfile— multi-stage build (Node build → Nginx runtime) -
nginx.conf— Nginx SPA routing config -
docker-compose.yml— production-style container (Nginx runtime) -
docker-compose.override.yml— dev overrides (bind mounts + dev server) -
docker-compose.e2e.yml- Playwright end-to-end tests inside docker container -
.github/— CI workflow + Dependabot configuration -
commitlint.config.cjs— commit message lint rules -
CHANGELOG.md— release notes / project history -
package.json/package-lock.json— dependencies + scripts -
node_modules/— installed dependencies (not committed) -
Makefile- convenience shortcuts for common tasks
dist/is generated output and should not be committed.- CI runs
npm ci,npm run typecheck, andnpm run buildon every PR/push. - Git hooks are managed by Husky and installed automatically on
npm ci.