Internal property management tool hub for TGPM.
Translation pending
BusinessTypeScript · JavaScriptGitHub @einstallsdowneyjaxonOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Internal launchpad for TGPM property management tools
Translation pending
Loading the full README. The saved excerpt is shown below.
TGPM Armory is an internal launchpad for TGPM property management tools. It is a standalone tool hub built with Next.js, TypeScript, and Tailwind CSS, and is designed for deployment on Vercel.Read the full README ↗TGPM Armory is an internal launchpad for TGPM property management tools. It is a standalone tool hub built with Next.js, TypeScript, and Tailwind CSS, and is designed for deployment on Vercel.
src/config/tools.tsInstall dependencies:
npm install
Start the development server:
npm run dev
Open http://localhost:3000 in your browser.
Create .env.local for AI analysis:
OPENAI_API_KEY=your_openai_api_key
OPENAI_MODEL=gpt-4.1-mini
OPENAI_MODEL is optional. The app defaults to gpt-4.1-mini.
The Property Health Analyzer still parses CSV files and calculates dashboard totals without an API key. The API key is only required when you click Generate AI analysis.
/legal-intake)Requires Supabase, OpenAI, Resend, and alert recipients:
SUPABASE_URL=...
SUPABASE_SERVICE_KEY=...
OPENAI_API_KEY=...
RESEND_API_KEY=...
LEGAL_EMAIL_FROM="TGPM Legal Intake <[email protected]>"
[email protected],[email protected],[email protected]
NEXT_PUBLIC_APP_URL=https://your-armory-domain.vercel.app
CRON_SECRET=optional_shared_secret
Apply supabase/migrations/20261009190000_legal_intake_tables.sql to your Supabase project (creates legal_* tables and private storage bucket legal-intake-docs).
Schedule reminders and public docket checks by calling GET /api/legal-intake/cron daily (Bearer CRON_SECRET when set). On Vercel Hobby, use an external scheduler if you already consume the single Vercel Cron slot. Within 7 days of a court date, reminder emails are sent every other day automatically.
Open http://localhost:3000/property-health-analyzer.
For this MVP, there is no database storage. The CSV is parsed in the browser and deterministic calculations are performed in TypeScript before a compact calculated report is sent to the OpenAI API route. The AI is instructed to analyze only the supplied totals, category breakdowns, monthly trends, and sampled categorized rows.
Export a single-property General Ledger detail CSV from AppFolio with these fields when available:
DatePayee / PayerDebitCreditDescriptionGL AccountProperty AddressMonthQuarterYearRemarksUnit IDThe parser accepts common variants such as Account, GL Account, Property, Property Name, Property Address, Payee, and Payee / Payer. Balance sheet rows such as cash, prepaid rent, security deposits, and escrow accounts are categorized but excluded from operating expense totals to avoid double counting double-entry GL activity.
Ledger rows are mapped in src/lib/property-health.ts into:
Maintenance rows are additionally subcategorized into HVAC, plumbing, roof, lawn, appliance, electrical, pest, turnover, cleaning, general repair, and other.
The Load starter CSV button reads public/sample-general-ledger.csv when present. This is intended for local testing with a known AppFolio export shape.
The next phase should move from one-off uploads to quarterly and live AppFolio ingestion:
Edit src/config/tools.ts to add, remove, rename, or update tool cards. Each tool includes:
namedescriptioncategoryurlPlaceholder URLs use https://example.com/... for now.
Run linting:
npm run lint
Create a production build:
npm run build
npm run build.No environment variables are required for the placeholder version.