Agentic Trading Lab
Talk to agents, and test trading ideas. Try AI trading agents on real market data with no code required.
AI translation
Apex sees your whole financial picture and shows you the smartest way to grow it, with the tax math already done.
FinanceTypeScript · JavaScriptGitHub @grehceOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Personal finance and investment intelligence platform for portfolio tracking, analytics, and informed decision-making.
Taken from the repository README
Loading the full README.
Read the full README ↗Personal finance and investment intelligence — net worth, spending and portfolio in one place, with an agent that proposes and you decide. Lives at apexfolios.com.
proxy.ts + a second check in each page/route).ALLOWED_EMAILS can sign in; sessions expire after 12 hours.ENCRYPTION_KEY.| What | Where | Env vars |
|---|---|---|
| Google OAuth client (type: Web application) | Google Cloud Console → APIs & Services → Credentials | AUTH_GOOGLE_ID, AUTH_GOOGLE_SECRET |
| Auth secret | openssl rand -base64 32 | AUTH_SECRET |
| Who can sign in | your Google email(s), comma-separated | ALLOWED_EMAILS |
| Plaid keys — start with Sandbox | dashboard.plaid.com → Developers → Keys | PLAID_CLIENT_ID, PLAID_SECRET, PLAID_ENV=sandbox |
| Postgres | Vercel → Storage → Neon (or neon.tech) | DATABASE_URL |
| Token encryption key | openssl rand -base64 32 | ENCRYPTION_KEY |
| Home value estimates (optional; free tier 50/month) | rentcast.io → API dashboard | RENTCAST_API_KEY |
| Cron secret for monthly home revaluation | openssl rand -base64 32 | CRON_SECRET |
| Mortgage address prefill via Plaid Liabilities (default on; free in Sandbox/Trial) | — | PLAID_LIABILITIES=off to disable |
Google OAuth authorized redirect URIs:
http://localhost:3000/api/auth/callback/google
https://apexfolios.com/api/auth/callback/google
cp .env.example .env.local # fill in values — never commit this file
npm install
npm run db:push # creates the tables
npm run dev # http://localhost:3000
In Plaid Sandbox, pick any test bank and use Plaid's documented sandbox login (user_good / pass_good).
grehce/apex..env.example under Settings → Environment Variables.scripts/migrate.mjs).main redeploys.apexfolios.com (and www.apexfolios.com).@ and www.Requires Plaid's production approval. Set PLAID_ENV=production and the production secret. Some banks use OAuth and need a registered redirect URI in the Plaid dashboard — that's a follow-up in the roadmap.
auth.ts Google sign-in + allowlist
proxy.ts route protection (Next 16 "proxy", formerly middleware)
lib/schema.ts tables: plaid_items, accounts, holdings, transactions, net_worth_daily
lib/sync.ts Plaid → database sync (accounts, holdings, /transactions/sync)
lib/data.ts builds the dashboard model (real or sample)
lib/plans.ts deterministic rebalancing plans for the agent
lib/property.ts home address/estimate helpers; lib/valuation.ts = RentCast behind a provider interface
app/api/property/ home value estimate preview; app/api/cron/revalue-homes = monthly re-estimate (vercel.json)
app/(app)/ overview, agent, settings pages
app/api/plaid/ link-token, exchange, sync, item (disconnect / include toggle)
lib/model.ts)