1
Clone and install
2
Build and start
.env. A build takes about 8 minutes on a small server. Run it again after each change.3
Check the types
Dev servers
next dev) and the API (bun --watch) together, reloading as you edit. The API needs Postgres, Gitea and the runner to reach. It reads the same settings the app container gets: DATABASE_URL, GITEA_URL, GITEA_TOKEN, COMPUTER_RUNNER_URL, RUNNER_TOKEN, ENCRYPTION_KEY and OPENROUTER_API_KEY. Run bun run db:migrate once against a fresh database.
The runner joins the emplio-app container to each person’s network, so computers and browsers work end to end only with the app in Docker. Use ./setup.sh --build to check those.
Tests
.github/workflows/ci.yml shows exactly how CI starts Postgres and Gitea for the backend tests. CI runs all three on every pull request, so you can leave the tests to it.
Project map
What each folder holds.
Contributing
Open a pull request.

