- Complete MVP for tracking Fidelity brokerage account performance - Transaction import from CSV with deduplication - Automatic FIFO position tracking with options support - Real-time P&L calculations with market data caching - Dashboard with timeframe filtering (30/90/180 days, 1 year, YTD, all time) - Docker-based deployment with PostgreSQL backend - React/TypeScript frontend with TailwindCSS - FastAPI backend with SQLAlchemy ORM Features: - Multi-account support - Import via CSV upload or filesystem - Open and closed position tracking - Balance history charting - Performance analytics and metrics - Top trades analysis - Responsive UI design Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
Simple Deployment Guide
Quick Fix for Rate Limiting
You can deploy the rate limiting fix without manually editing files. I've created two approaches:
Approach 1: Automatic (Recommended)
I'll create scripts that automatically update the necessary files.
Approach 2: Manual (if you prefer)
Just 2 small changes needed:
Change 1: Update main.py (backend)
File: backend/app/main.py
Find this line:
from app.api.endpoints import accounts, transactions, positions, analytics
Change to:
from app.api.endpoints import accounts, transactions, positions, analytics_v2 as analytics
That's it! By importing analytics_v2 as analytics, the rest of the file works unchanged.
Change 2: Update App.tsx (frontend)
File: frontend/src/App.tsx
Find this line:
import Dashboard from './components/Dashboard';
Change to:
import Dashboard from './components/DashboardV2';
That's it! The component props are identical, so nothing else needs to change.
Deploy Steps
# 1. Transfer files (on your Mac)
cd /Users/chris/Desktop/fidelity
./deploy-rate-limiting-fix.sh
# 2. SSH to server
ssh pi@starship2
cd ~/fidelity
# 3. Make the two changes above, then rebuild
docker compose down
docker compose build --no-cache backend frontend
docker compose up -d
# 4. Run migration (adds market_prices table)
sleep 30
docker compose exec backend alembic upgrade head
# 5. Verify
curl "http://localhost:8000/api/analytics/overview/1?refresh_prices=false"
Testing
- Open dashboard:
http://starship2:3000 - Should load instantly!
- Click account dropdown, select your account
- Dashboard tab loads immediately with cached data
- Click "🔄 Refresh Prices" button to get fresh data
Logs to Expect
Before (with rate limiting issues):
429 Client Error: Too Many Requests
429 Client Error: Too Many Requests
429 Client Error: Too Many Requests
After (with fix):
Cache HIT (fresh): AAPL = $150.25 (age: 120s)
Cache HIT (stale): TSLA = $245.80 (age: 320s)
Cache MISS: AMD, fetching from Yahoo Finance...
Fetched AMD = $180.50
Rollback (if needed)
To go back to the old version:
# In main.py, change back to:
from app.api.endpoints import accounts, transactions, positions, analytics
# In App.tsx, change back to:
import Dashboard from './components/Dashboard';
# Rebuild
docker compose build backend frontend
docker compose up -d
The market_prices table will remain (doesn't hurt anything), or you can drop it:
DROP TABLE market_prices;