Overview
Monorepo structure, main apps, and how traffic flows through Intry.
Overview
The intry-mvp repository is the primary backend and tooling workspace for Intry. The Core API is an Express 5 + TypeScript service backed by PostgreSQL (Prisma) and Redis (BullMQ workers). Operational dashboards and proxies often run on Fly.io; the Core API is commonly deployed to Railway.
Request flow (buzzer → resident)
- A visitor triggers the intercom / Twilio inbound webhook.
- Core resolves the unit and virtual number (
e164), loads residents, and notifies devices (push, SMS, or voice fallback depending on configuration). - The resident approves or denies from the app (or fallback channel).
- Core signals Twilio (e.g. DTMF) to release the door; Call and Approval rows record the outcome.
Top-level layout
intry-mvp/
├── prisma/ # Database schema & migrations
├── src/
│ ├── server.ts # HTTP entry
│ ├── workers.ts # Background jobs (BullMQ)
│ ├── routes/ # HTTP routes (admin, twilio, access, …)
│ └── services/ # Domain logic
├── docs/ # Markdown guides, OpenAPI, runbooks
└── tools/ # Adjacent deployables (portal, app, admin, docs, …)Tools you will touch most often
| Tool | Role |
|---|---|
| intry-admin | Express proxy + static SPA; hits Core /api/admin/* with X-Admin-Env. |
| intry-portal | Resident-facing Next.js; Clerk auth; talks to Core APIs. |
| intry-app | Expo client; device registration and entry approvals. |
| intry-mcp | MCP bridge for operators and agents (Unkey / admin API). |
| intry-docs / intry-support | This documentation stack (Fumadocs + Next.js). |
Related reading
- Tech stack — dependencies and vendors.
- Data model — Prisma entities and naming.
- API overview — how to call admin vs mobile-facing routes.