You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rent: Stripe ACH via Plaid processor tokens (not Plaid Transfer). Also Stripe Cash App Pay.
Off-app Cash App: Imported from org Gmail (cash@square.com).
Leases: Rocket Lawyer (API may be pending; leases are often created/signed manually).
Deploy: Push to main → Railway builds, runs migrations, serves client/dist from Express.
Stack
Layer
Tech
API
Node.js, Express (src/app.js)
UI
React + Vite (client/)
Database
Supabase Postgres (session pooler via DATABASE_URL)
Banks
Plaid Link → Stripe bank accounts
Payments
Stripe (ACH, Cash App Pay, Connect)
Email
Gmail API (org OAuth); optional Resend
Hosting
Railway + Cloudflare
Secrets go in .env.local (gitignored). Loaded by src/config/env.js.
Run it locally
Needs Node 18+ and a Postgres URL in .env.local (start from .env.example). See SETUP.md for a full walkthrough.
npm install
cd client; npm install; cd ..
npm run db:migrate
# Terminal 1 — API (:8080)
npm run dev
# Terminal 2 — UI (:5173, proxies API)
cd client; npm run dev