Local development
Install Node 24.15.0, Docker with Compose, and Bash. The workspace uses pnpm 12.8.1 through the repository commands. Host PHP is optional: bootstrap installs Composer dependencies through a PHP 8.5 container.
bin/bootstrap
npm run dev
Sail starts Laravel, PostgreSQL, Redis, Soketi, Mailpit, and the docs site. The root dev command also starts the web app, Filament asset server, browser session broker, and queue worker.
| Service | Address |
|---|---|
| Web app | http://localhost:3000 |
| Docs | http://localhost:3001 |
| Backend | http://localhost:8000 |
| Platform administration | http://localhost:8000/admin/login |
| Department administration | http://localhost:8000/manage/login |
| Mailpit inbox | http://localhost:8025 |
| Soketi | http://localhost:6001 |
| Filament assets | http://localhost:5173 |
Press Ctrl+C once to stop the foreground development processes. Run bin/down
to stop Sail, including docs, Mailpit, and Soketi. Database volumes are preserved.
Database and local administrator
bin/sail artisan migrate
bin/sail artisan db:seed
With APP_ENV=local, seeding creates the passwordless super administrator
[email protected]. Seeding again reuses that account. Other environments skip
the local administrator, even when the seeding command uses --force.
Seeding also creates the local-test department with a directory, role examples,
General/Training/Officers rooms, messages, events and participation rules.
Use [email protected], [email protected] or [email protected] to test
department access. The platform administrator is separate from the department roster.
[email protected] has a pending membership. The directory entry
[email protected] has no account and can be used to test automatic admission.
Open /admin/login, enter [email protected], and request an email code.
Open Mailpit to retrieve the code or magic link. Laravel's local mail settings are:
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
Bootstrap preserves existing .env values. After changing them, run
bin/sail artisan config:clear and restart any long-running queue worker.
PostgreSQL is available to host tools on port 54320. Automated database tests use
the separate firehall_test database. Inside Sail, use the service names pgsql,
redis, soketi, and mailpit rather than localhost.
Development commands
npm run dev -- --preview # explicit fictional UI data
bin/dev docs # start the Sail docs service
bin/sail logs -f docs # documentation server logs
bin/dev ui # Storybook on port 6006
bin/lint
bin/typecheck
bin/test
bin/build web
bin/build backend
bin/build docs
Mobile development
Android requires JDK 21, the Android SDK, accepted SDK licenses, and a device or
emulator. Set JAVA_HOME and ANDROID_HOME to those installations. iOS requires
macOS and Xcode.
bin/build mobile # installable Android debug APK
bin/dev mobile --preview # native app with explicit preview data
bin/build mobile --ios # iOS simulator build
A physical phone needs a reachable HTTPS backend. Its localhost address refers
to the phone, not your development computer. Use a trusted HTTPS hostname or tunnel.