Local setup
How to run Exsport on the Mac. The three apps you usually need are the backend, the storefront and the admin. nginx fronts them with real hostnames; pm2 runs them.
How this page was verified
Read on 2026-09-15 from each repo's package.json scripts and entry files, and the nginx and pm2 facts from the exsport-repos skill. Ports and hosts are the local-dev values, not production.
The pieces
| App | Repo | Local port | Reached at |
|---|---|---|---|
| Backend | def-exsport-backend | 3014 (APP_PORT) | https://api-exsport.eris.bdt.dev, or /be-api on the app hosts |
| Storefront | def-exsport-frontend-storefront | 3013 (PORT) | https://exsport.eris.place |
| Admin | def-exsport-frontend-admin | 3012 (PORT) | https://admin-exsport.eris.place |
nginx config is /opt/homebrew/etc/nginx/servers/exsport.conf. It sends /be-api on the app hosts to the backend. Reloading nginx needs Eris — the master process runs as root.
Run it with pm2
The usual way runs all three from pm2. The processes are exsp-be, exsp-sf, exsp-adm; they point at the hyphenated folders and set the ports.
pm2 start exsp-be exsp-sf exsp-adm
pm2 logs exsp-beRun it by hand
The dev scripts do not pin a port, so set it yourself.
# backend — reads APP_PORT from .env (3014)
cd /Volumes/xpro/erisristemena/nestjs/def-exsport-backend && yarn start:dev
# storefront
cd /Volumes/xpro/erisristemena/nextjs/def-exsport-frontend-storefront && PORT=3013 yarn dev
# admin
cd /Volumes/xpro/erisristemena/nextjs/def-exsport-frontend-admin && PORT=3012 yarn devBackend dev is nest start --watch; both frontends are next dev --turbopack.
Database
Postgres runs on the Mac at localhost:5432, user postgres. It holds dated snapshots: exsport_prod_YYYYMMDD, exsport_dev_*, and older exsport_prod / exsport_dev copies.
Read DB_NAME in the backend .env for the current one — never assume. It changes often. On 2026-09-15 it was exsport_dev_20250921. The prod snapshots hold real production data, so be careful with anything that leaves the machine.
The backend has no migrations. It runs TypeORM synchronize: true, so it creates or alters tables from the entity files when it boots against a database. See Database.
Env files
Each app reads a local .env. Key names, not values, are documented on the repo pages. The ones you most often touch:
- Backend:
APP_PORT(3014),APP_PREFIX(be-apilocally,gapiin prod),DB_NAME, and the third-party base URLsDELIVERY_BITESHIP_BASE_URL/DOKU_BASEURL/WMS_ENDPOINT_BASE_URL— all pointed at the simulator in dev. - Storefront:
NEXT_PUBLIC_API_URL(e.g.https://exsport.eris.place/be-api),NEXTAUTH_URL,NEXTAUTH_SECRET. - Admin:
NEXT_PUBLIC_API_URL,NEXTAUTH_URL,NEXTAUTH_SECRET,NEXT_PUBLIC_TINY_EDITOR_API_KEY.
typescript is a runtime dependency on the frontends
On both Next.js apps typescript sits in dependencies, not devDependencies, because next start loads next.config.ts at runtime. Do not move it back or production crashes on boot.
Testing in a browser
When a ticket says "test", drive the local host in a real browser, not a CLI check — the shop and admin are client-rendered and their behaviour only shows in the browser. Company rule: use the Claude-in-Chrome browser for end-to-end testing. Say which user and role you need before you start; Eris logs in.