Ports and services
Damvia is two processes you run (API and client) plus three services it depends on (Postgres, S3-compatible storage, SMTP). The development server/docker-compose.yml provides the three services with fixed ports and credentials.
Development stack
Section titled “Development stack”| Service | Port(s) | Credentials | Notes |
|---|---|---|---|
API server (npm run dev in server/) | 3000 | — | tRPC under /trpc, one REST route /v1/downloads/:id. Set by PORT. |
Client (npm run dev in client/) | 5173 | — | Vite dev server. APP_URL must point here. |
Postgres 15 (postgres in compose) | 5432 | user dam, password dam, database dam | Matches the code default postgresql://dam:dam@localhost/dam. Data in the named volume postgres. |
MinIO (minio in compose) | 9000 API, 8090 console | root user dam, password damdamdamdam | Create the buckets dam and dam-assets in the console at http://localhost:8090. Data in the named volume minio. |
MailHog (mailhog in compose) | 1025 SMTP, 8025 web UI | none | Matches the code defaults SMTP_HOST=localhost, SMTP_PORT=1025. Read outgoing mail at http://localhost:8025. |
The compose project is named damvia-preview, so its containers and volumes are prefixed damvia-preview-.
Production
Section titled “Production”| Component | Exposure |
|---|---|
| API server | Behind a reverse proxy at API_URL, HTTPS. Listens on 0.0.0.0:${PORT} inside its container. |
| Client build | Static files served at APP_URL, HTTPS, with history fallback. See Client build. |
| Postgres | Private network only. |
| S3 / MinIO | Reachable by the server, and by browsers: uploads use presigned PUT URLs and downloads redirect to presigned GET URLs, so the S3 endpoint in MAIN_S3_URL and ASSETS_S3_URL must be resolvable from the user’s browser. |
| SMTP | Outbound from the server only. |
| Dropbox / Microsoft Graph | Outbound HTTPS from the server only. |
Details for the proxy are in Reverse proxy.