Deployment
Moveat is deployed across three hosting surfaces:
This split keeps the frontend deploy loop fast while keeping backend services close to PostgreSQL and Redis.
Production stack
The backend production stack is defined in theinfra repository through Docker Compose.
Core services:
- Caddy for HTTPS and reverse proxy.
- Platform for business APIs.
- Agent for WhatsApp and LLM orchestration.
- PostgreSQL for product data.
- Redis for short-lived state and cache.
- Grafana for dashboards.
- Loki for logs.
- Alloy for log collection.
- Komodo for container management.
Domains
Vercel deployment
Vercel is responsible for frontend delivery. Frontend deployments should not require rebuilding the backend stack. Typical Vercel responsibilities:- Preview deployments for pull requests.
- Production deploys for the web client.
- Frontend environment variables such as API base URL and Google client ID.
- CDN delivery and frontend routing.
credentials: "include", and whether the API origin is included in Platform ALLOWED_ORIGINS.
DigitalOcean deployment
The droplet hosts the production backend stack. A typical backend deploy updates one or more repositories and recreates the affected containers. Recommended Platform deploy order:- Pull latest
platformandinfrachanges. - Run Platform migrations.
- Rebuild the Platform image.
- Recreate the Platform container.
- Check Platform health.
- Inspect Grafana/Loki for startup errors.
- Pull latest
agentandinfrachanges. - Confirm required environment variables are present.
- Rebuild the Agent image.
- Recreate the Agent container.
- Check Agent health and webhook behavior.
- Send a controlled test message if webhook changes were deployed.
Migrations
Platform database migrations must run before relying on code that expects new schema changes. A migration mismatch can create a production boot failure or runtime errors when a new service version queries columns that do not exist yet. Recommended rule:Documentation deployment
Mintlify reads the docs repository and deploys automatically when commits land on the configured branch. If the docs site does not update:- Confirm Mintlify is connected to the correct GitHub organization and repository.
- Confirm the branch is
main. - Confirm
docs.jsonis at the repository root unless a subdirectory is explicitly configured. - Check Mintlify deployment activity.
- Trigger a manual redeploy.
