StatsHub Docs

Apps

Every deployable in the monorepo — what it is, which port it takes, and what they all share.

An app is a deployable. Code that two of them share is a package instead.

Ports

AppDev port
legacy3000
docs3001
web3002
admin3003
playground3004
api8080
expo (Metro)8142

bun run dev starts all of them except legacy. Two apps sharing a port fail in a way that reads like a caching bug, so check this table before picking one for a new app.

What every deployable has

  • apps/<name>/Dockerfile, built with the repository root as the context, not the app directory. The first stage runs turbo prune <name> --docker so a change in an unrelated app does not invalidate the layer cache.
  • A service in docker-compose.yml.
  • Scripts named dev, build, lint, typecheck — Turbo picks a task up by script name, so nothing has to be registered.
  • Root shortcuts: bun run dev:<name>, build:<name>, start:<name>.

Add an app is the walkthrough.

On this page