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). Background jobs run via pg-boss on the same database. Operational dashboards and proxies run on Fly.io; the Core API is deployed to Railway.
Request flow (buzzer → resident)
- A visitor triggers the intercom; the carrier (Twilio or Telnyx) posts to
/twilio/*or/telnyx/*depending on the virtual number's provider. - Core resolves the unit and virtual number (
e164), loads residents, and notifies devices through Knock (push, SMS, or voice fallback depending on configuration). - The resident approves or denies from the app, portal, or phone keypad.
- Core signals the telephony provider (DTMF / TeXML) to release the door; Call and Approval rows record the outcome.
See Telephony for provider abstraction and migration status.
Top-level layout
intry-mvp/
├── prisma/ # Database schema & migrations
├── src/
│ ├── server.ts # HTTP entry
│ ├── workers.ts # pg-boss background jobs
│ ├── routes/ # HTTP routes (admin, twilio/telnyx, access, v1, …)
│ └── services/ # Domain logic (telephony, knock, billing, …)
├── 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; Clerk gateway; hits Core /api/admin/* with X-Admin-Env. |
| intry-portal | Resident-facing Next.js; Clerk auth; talks to Core /api/v1/*. |
| intry-app | Expo client; device registration and entry approvals. |
| intry-mcp | MCP bridge for operators and agents (Unkey / admin API). |
| intry-ops | Internal ops console (Tailscale-gated). |
| intry-docs / intry-support | Developer docs and end-user help (Fumadocs + Next.js). |
| intry-core-telnyx | Railway variant with TELEPHONY_PROVIDER=telnyx for cutover testing. |
Related reading
- Tech stack — dependencies and vendors.
- Data model — Prisma entities and naming.
- Auth — WorkOS, Clerk, JWT, and Unkey.
- Telephony — TelephonyProvider and webhook paths.
- API overview — admin vs resident routes.
Last verified: 2026-06-21 (commit 293c4a7)