Installation

This page covers system requirements, all supported installation methods, production build configuration, environment variable setup, and the path alias system used throughout the project.

System requirements

RequirementMinimumRecommended
Node.js18.x20.x LTS
pnpm9.x9.15.x (declared in packageManager)
npm9.xLatest stable
yarn1.22.xLatest stable
RAM4 GB8 GB
OSmacOS, Linux, Windows (WSL2)macOS or Linux

Install dependencies

bash
pnpm install

npm

bash
npm install

yarn

bash
yarn install

Development server

The dev server uses Turbopack for fast builds and hot module replacement.

bash
# pnpm
pnpm dev
 
# npm
npm run dev
 
# yarn
yarn dev

The app starts at http://localhost:3000 by default.

Production build

bash
# pnpm
pnpm build
pnpm start
 
# npm
npm run build
npm start
 
# yarn
yarn build
yarn start

To perform a clean build (removes .next cache first):

bash
# pnpm
pnpm clean-build
 
# npm
npm run clean-build

Environment variables

Copy .env.example to .env.local before starting the app:

bash
cp .env.example .env.local

Full variable reference

bash
# .env.local
 
# ── Authentication (Auth.js v5) ──────────────────────────
# Required: secret used for JWT signing
# Generate with: openssl rand -base64 32
AUTH_SECRET=your-secret-here
 
# Optional: base URL for OAuth callbacks (auto-detected on most hosts)
AUTH_URL=http://localhost:3000
 
# Optional: trust the X-Forwarded-Host header (required behind a reverse proxy)
AUTH_TRUST_HOST=true
 
# ── Google Maps (optional) ───────────────────────────────
# Obtain from https://console.cloud.google.com
NEXT_PUBLIC_GOOGLE_MAP_API=your-google-maps-api-key
 
# ── Public assets ────────────────────────────────────────
NEXT_PUBLIC_IMAGES_PATH=/assets/images
 
# ── Database (optional, for production auth) ─────────────
# DATABASE_URL=postgresql://user:password@localhost:5432/jumbo

Verification after setup

After running pnpm dev, verify:

  • The app loads at http://localhost:3000 without console errors
  • Unauthenticated requests redirect to the login page
  • After logging in, the misc dashboard renders at /en-US/dashboards/misc

Path aliases

The project uses three TypeScript path aliases configured in tsconfig.json:

json
// tsconfig.json (paths excerpt)
{
  "paths": {
    "@/*":      ["./src/*", "./*"],
    "@jumbo/*": ["./@jumbo/*"],
    "@assets/*": ["./@assets/*"]
  }
}
AliasResolves toUsage
@/./src/ and ./ (root)App source files (@/components, @/config, @/auth)
@jumbo/./@jumbo/Jumbo component framework (@jumbo/components, @jumbo/utilities)
@assets/./@assets/Static assets and fonts (@assets/fonts/noir-pro/styles.css)

Available scripts

ScriptCommandDescription
devnext dev --turbopackStart dev server with Turbopack
buildnext buildProduction build
clean-buildrm -rf .next && next buildClean then build
startnext startServe production build
linteslint .Run ESLint
formatprettier --check .Check formatting
format:fixprettier --write .Auto-fix formatting
testvitestRun unit tests
test:coveragevitest --coverageRun tests with coverage report
test:e2eplaywright testRun Playwright E2E tests
test:allnpm run test && npm run test:e2eRun all tests