Installation
Prerequisites
Docker Desktop or Docker Engine with Compose v2, Git and Node 24 LTS. Container builds install Java/Maven and frontend dependencies; a host JDK is unnecessary for the container path. For native development install Java 21 and use the Maven wrapper. Reserve ports listed below and ensure Docker has adequate memory for two concurrent builds.
Start one edition
cd products/phabdev-saas-starter-lite
node scripts/init-env.mjs
docker compose up --build -d
docker compose ps
For Pro substitute phabdev-saas-starter-pro. From an extracted ZIP, start in its root. The initializer writes a new ignored .env with random database password and signing key, and refuses to overwrite existing configuration. .env.example documents variables. Do not commit .env.
| Service | Lite | Pro |
|---|---|---|
| Web | http://localhost:4200 | http://localhost:4300 |
| API | http://localhost:8080 | http://localhost:8081 |
| Swagger (same-origin UI proxy) | http://localhost:4200/swagger-ui/index.html | http://localhost:4300/swagger-ui/index.html |
| PostgreSQL host port | 5433 | 5434 |
| Local mail inbox | unavailable | http://localhost:8025 |
Open the web app, register with an email, display name and a password of at least 12 characters, then create a Project. Open a second browser session with another account and confirm that it cannot see your projects. Registration creates USER only. There is no shared demo password.
For an optional local admin, set APP_SEED_ENABLED=true, your own APP_SEED_ADMIN_EMAIL and a strong APP_SEED_ADMIN_PASSWORD in .env, then restart the backend. Disable seed and remove its password after bootstrap. Use this only in local development.
Native development
Start the edition's database with docker compose up -d db. Export variables from the edition's .env in your shell without printing secrets. Set DB_URL=jdbc:postgresql://localhost:5433/starter for Lite or port 5434 for Pro, and the corresponding APP_ORIGIN. In backend, run ./mvnw spring-boot:run (Windows: ./mvnw.cmd spring-boot:run); in frontend, run npm ci and npm start. Pro native API must use PORT=8081 to match its dev proxy.
For native Pro email, start docker compose up -d mailpit and override SMTP_HOST=localhost (SMTP_PORT=1025). The example host mailpit is resolvable inside Compose only. If no SMTP server is available, set APP_EMAIL_ENABLED=false explicitly for local work; password reset delivery is then unavailable. Enabled email with an unreachable SMTP server correctly reports unhealthy.
Run ./mvnw test in the backend and npm test / npm run build in the frontend. Testcontainers checks require a running Docker daemon. See QA_REPORT.md in the source repository for the tested environment and any explicit skips.
Setup is intentionally short. Cold Docker image and Maven/npm downloads depend on network speed and can exceed ten minutes.