Skip to main content

Platform Docs · Engineering

Deployment Architecture

Infrastructure topology, environment separation, release policy, and data refresh schedule for the Entrestate platform.

01

Environment Separation

Production

Live
URL: entrestate.com
Host: Vercel (Edge Network)
Branch: main
Database: Neon — Primary (pooled, 20 connections)

Preview / Staging

Auto-deployed
URL: entrestate-git-*.vercel.app
Host: Vercel (Preview Deployments)
Branch: Any PR branch
Database: Neon — Branched DB (schema-isolated)

Development

Manual
URL: localhost:3000
Host: Local Next.js dev server
Branch: Feature branches
Database: Neon — Dev branch or local PG

02

Infrastructure Stack

LayerComponent
Compute
Next.js 15 (App Router)
Hosting
Vercel
Database
Neon (PostgreSQL 16)
Auth
Clerk
AI / LLM
Anthropic Claude + AI SDK
Storage
Vercel Blob / Neon JSONB

03

Release Policy & Rollback

1

Feature branch

Developer opens PR against main. Vercel creates an isolated preview deployment with a Neon DB branch.

2

Preview review

Stakeholder verifies the preview URL. Automated build checks (type-check, lint) must pass before merge is unblocked.

3

Merge to main

PR is squash-merged. Vercel triggers a production build. Zero-downtime deployment with atomic swap.

4

Smoke check

Post-deploy smoke script hits /api/health, /api/market-pulse, and /api/copilot/sessions to verify live service integrity.

5

Rollback (if needed)

Vercel dashboard: one-click 'Promote to production' on the previous deployment. RTO < 60 seconds.

Rollback policy

Vercel preserves the last 10 production deployments. Any can be instantly promoted back. Database schema rollbacks require Prisma migration down-steps — run before promoting if schema changed. Target RTO: <60 seconds for compute. RPO: zero (Neon PITR to any point within 30 days).

04

Data Refresh Schedule

Pipeline cadence

Daily (off-peak UAE, ~02:00 GST)

L1 Canonical refresh

Weekly batch + triggered on RERA/DLD delta

L3 Dynamic signals

Hourly recalculation (BUY/HOLD/WAIT timing)

Market pulse

Realtime query at request time (force-dynamic)

Report artifacts

Immutable once generated; re-generated on demand

AI session history

Persisted per-user in Neon on every completion

05

Health Check Endpoints

GET /api/health

Basic liveness probe — returns 200 OK when compute is healthy

Liveness
GET /api/market-pulse

Verifies database connectivity and data freshness

Readiness
GET /api/copilot/sessions

Auth + DB read path — confirms Clerk + Neon integration

Readiness
GET /properties

Full render path including decision-infrastructure query

Smoke