- Go to supabase.com and create a free account
- Click "New Project" → name it
quantamental→ choose a region → set a database password - Wait for the project to initialize (~1 minute)
- Go to Project Settings → API and copy:
- Project URL (looks like
https://abcdef.supabase.co) - anon public key (starts with
eyJ...)
- Project URL (looks like
- Create
dashboard/.env.local:NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...your-anon-key-here - In Supabase, go to SQL Editor → paste the contents of
dashboard/supabase-schema.sql→ click Run - Restart the dev server:
npm run dev
- Go to finnhub.io → Sign up (free)
- Copy your API key from the dashboard
- Add to
dashboard/.env.local:FINNHUB_API_KEY=your-finnhub-key - Limits: 60 requests/minute, no daily cap
- Go to financialmodelingprep.com → Sign up (free)
- Copy your API key
- Add to
dashboard/.env.local:FMP_API_KEY=your-fmp-key - Limits: 250 requests/day
- Go to perplexity.ai → API section
- Add to
dashboard/.env.local(or skip for free mode):PERPLEXITY_API_KEY=your-key - Cost: ~$0.001 per request
- Go to snaptrade.com → Sign up for API access
- Add to
dashboard/.env.local:SNAPTRADE_CLIENT_ID=your-client-id SNAPTRADE_CONSUMER_KEY=your-consumer-key
- Go to console.cloud.google.com
- Create a new project or select existing
- Go to APIs & Services → Credentials → Create Credentials → OAuth client ID
- Application type: Web application
- Add authorized redirect URI:
http://localhost:3001/api/auth/callback/google - Copy the Client ID and Client Secret
- Add to
dashboard/.env.local:GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret NEXTAUTH_SECRET=generate-a-random-32-char-string NEXTAUTH_URL=http://localhost:3001
On your PC (RTX 4070 Ti Super):
cd "Finance project"
pip install -r requirements.txt
# Set API keys
export FINNHUB_API_KEY=your-key
export FMP_API_KEY=your-key
export PERPLEXITY_API_KEY=your-key # optional
# Start Ollama
ollama serve
ollama pull llama3.1:8b
# Start the validation server
uvicorn validation_server:app --host 0.0.0.0 --port 8000Add to dashboard/.env.local:
PC_VALIDATION_URL=http://your-pc-ip:8000
- Install Tailscale on both MacBook and PC
- Sign in with the same account on both
- Your PC gets a Tailscale IP (e.g.,
100.x.y.z) - Set
PC_VALIDATION_URL=http://100.x.y.z:8000in.env.local
cd "Finance project/dashboard"
npm install
npm run dev-
.env.localexists and is gitignored (check.gitignore) - No API keys in committed files
- Supabase RLS enabled on all tables (already in schema)
- Google OAuth configured for authentication
- SnapTrade credentials are server-side only (no
NEXT_PUBLIC_prefix) - PC validation server is only accessible via Tailscale (not public internet)
# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
# Market Data APIs
FMP_API_KEY=your-fmp-key
FINNHUB_API_KEY=your-finnhub-key
# AI (Optional)
PERPLEXITY_API_KEY=your-perplexity-key
# Fidelity Sync
SNAPTRADE_CLIENT_ID=your-snaptrade-client-id
SNAPTRADE_CONSUMER_KEY=your-snaptrade-consumer-key
# Authentication
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
NEXTAUTH_SECRET=random-32-character-string-here
NEXTAUTH_URL=http://localhost:3001
# PC Validation Server
PC_VALIDATION_URL=http://100.x.y.z:8000