Skip to content

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

AppRepoLocal portReached at
Backenddef-exsport-backend3014 (APP_PORT)https://api-exsport.eris.bdt.dev, or /be-api on the app hosts
Storefrontdef-exsport-frontend-storefront3013 (PORT)https://exsport.eris.place
Admindef-exsport-frontend-admin3012 (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.

bash
pm2 start exsp-be exsp-sf exsp-adm
pm2 logs exsp-be

Run it by hand

The dev scripts do not pin a port, so set it yourself.

bash
# 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 dev

Backend 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-api locally, gapi in prod), DB_NAME, and the third-party base URLs DELIVERY_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.