Deployment
Where each build is run and how traffic flows. This page stays free of secrets: no tokens, connection strings, or keys.
Hosting layout
| Layer | Where it runs | Notes |
|---|---|---|
| Next.js apps | Netlify | Staff ERP (ethica-erp), customer portal (customer-portal), onboarding (customer-onboarding), admin (admin-portal), and this documentation site (documentation). Each app is typically its own Netlify site with the repository subdirectory as the base directory. |
| API | DigitalOcean | ethica-api (NestJS) runs as a Node service—e.g. App Platform, Droplet, or container—depending on your ops setup. |
| PostgreSQL | DigitalOcean | Managed database or database co-located with the API; one logical database per environment unless you have explicitly documented sharding. |
Managed SaaS (not on DigitalOcean)
These are external APIs; credentials are injected via environment variables only:
- Cloudinary — media storage and delivery for uploads.
- Resend — transactional email.
Operations
- Builds: Netlify runs install/build per frontend; DigitalOcean (or your CI) builds and deploys
ethica-api. - Logs: Use Netlify’s deploy and function logs for frontends; use DigitalOcean (or your process manager) logs for the API. Centralized logging is optional—document your choice when you adopt one.
- Promotion: Follow your team’s path (e.g. staging → production) and keep environment-specific URLs and secrets in each host’s dashboard, not in git.
See also
- Environment setup
- Technical — Integrations
- Runbooks — deployment, rollback, monitoring, and incident response.