Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/nayalsaurav/deploy-your-app/llms.txt

Use this file to discover all available pages before exploring further.

Deploy Your App is structured as a TurboRepo monorepo containing six independent microservices under apps/, three shared packages under packages/, and a Dockerized infrastructure layer under infra/. Each service has a clearly scoped responsibility and communicates with its peers either through HTTP or through BullMQ job queues backed by Redis, so any single service can be scaled, restarted, or replaced without affecting the others.

Services

ServicePathRole
webapps/webNext.js dashboard frontend
apiapps/apiGitHub webhook handler (Express)
builderapps/builderBuild/deploy worker (BullMQ + Docker)
workerapps/workerJob dispatcher (BullMQ)
nortificationapps/nortificationNotification worker
proxyapps/proxyReverse proxy (Express + http-proxy)

Infrastructure

ComponentVersionPurpose
PostgreSQL16Primary data store, accessed via Prisma ORM
Redis7BullMQ queue backend + pub/sub channel for live build logs
CaddylatestTLS termination and reverse proxy frontend
All three infrastructure services are defined in the root docker-compose.yml and can be started with a single docker compose up -d command during local development.

Queue Architecture

The platform uses three BullMQ queues, all sharing the launchdrop key prefix in Redis. The prefix ensures queue keys are namespaced and do not collide with any other Redis data.
Queue nameProducerConsumerPurpose
deployment-queueapps/api (web API)apps/workerReceives new deployment jobs when a deploy is triggered
execution-queueapps/workerapps/builderReceives dispatched jobs forwarded by the worker
notification-queueapps/api / apps/builderapps/nortificationDelivers notification events (email, Slack, Discord)
The split between deployment-queue and execution-queue exists so that the worker process acts as a controlled dispatcher — it can apply throttling or routing logic before forwarding a job to the builder that actually runs Docker.

Shared Packages

PackagePathContents
@workspace/databasepackages/databasePrisma client, schema, and migrations
@workspace/queuepackages/queueBullMQ Queue instances for all three queues
@workspace/uipackages/uiShared React UI components (shadcn/ui + Tailwind CSS)

Data Flow

The diagram below shows how a browser request or a triggered deployment travels through the system end-to-end. The proxy service resolves an incoming hostname to the most recent successful deployment record in PostgreSQL, then either forwards traffic to the running container over http://localhost:{port} (dynamic apps) or fetches static assets from Cloudflare R2 (static Vite apps).
TurboRepo orchestrates builds, linting, and type-checking across all apps and packages in dependency order. Running turbo build at the repo root compiles shared packages before the services that depend on them, eliminating manual ordering.

Build docs developers (and LLMs) love