Architecture
Repository and deployment model
Crownvo moved from a large all-in-one codebase toward focused repositories. Each public surface can build and deploy independently while the API remains the contract for shared data and authentication.
1. Repository boundaries
- The API repository owns Laravel routes, database migrations, business services, queues, and backend authentication.
- Web repositories own their Next.js UI, browser experience, and server-side BFF adapters.
- CrownvMail owns the hosted-mail and MTA-related services.
- Status, docs, support, marketing, account, marketplace, community, academy, and other surfaces can deploy independently.
2. Coolify deployment
Coolify builds from the main branch and injects environment values as build or runtime configuration. Docker Compose is used where a resource needs multiple services or persistent infrastructure.
- A deployment is healthy only when the application and its dependencies pass their health checks.
- A migration service must exit successfully before dependent application services start.
- Restart limits indicate a runtime or dependency failure, not a GitHub push failure.
3. Release discipline
- Run the repository checks before pushing: lint, typecheck, build, Pint, and PHPUnit as applicable.
- Treat package-lock drift as a release blocker because Docker uses npm ci.
- Keep credentials in Coolify or local secret storage and never in Git history.
- Record important deployments, failures, and fixes in the activity timeline.
Still need help? Contact support.