- 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>
116 lines
3.7 KiB
Bash
Executable File
116 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# myFidelityTracker Start Script (Linux)
|
|
|
|
echo "🚀 Starting myFidelityTracker..."
|
|
echo ""
|
|
|
|
# Check if Docker is running
|
|
if ! docker info > /dev/null 2>&1; then
|
|
echo "❌ Docker is not running. Please start Docker and try again."
|
|
echo " On Linux: sudo systemctl start docker"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if docker compose is available (V2 or V1)
|
|
if docker compose version &> /dev/null; then
|
|
DOCKER_COMPOSE="docker compose"
|
|
elif command -v docker-compose &> /dev/null; then
|
|
DOCKER_COMPOSE="docker-compose"
|
|
else
|
|
echo "❌ Docker Compose not found. Please install it:"
|
|
echo " sudo apt-get install docker-compose-plugin # Debian/Ubuntu"
|
|
echo " sudo yum install docker-compose-plugin # CentOS/RHEL"
|
|
exit 1
|
|
fi
|
|
|
|
echo "📦 Using: $DOCKER_COMPOSE"
|
|
|
|
# Check if .env exists, if not copy from example
|
|
if [ ! -f .env ]; then
|
|
echo "📝 Creating .env file from .env.example..."
|
|
cp .env.example .env
|
|
fi
|
|
|
|
# Create imports directory if it doesn't exist
|
|
mkdir -p imports
|
|
|
|
# Copy sample CSV if it exists in the root
|
|
if [ -f "History_for_Account_X38661988.csv" ] && [ ! -f "imports/History_for_Account_X38661988.csv" ]; then
|
|
echo "📋 Copying sample CSV to imports directory..."
|
|
cp History_for_Account_X38661988.csv imports/
|
|
fi
|
|
|
|
# Start services
|
|
echo "🐳 Starting Docker containers..."
|
|
$DOCKER_COMPOSE up -d
|
|
|
|
# Wait for services to be healthy
|
|
echo ""
|
|
echo "⏳ Waiting for services to be ready..."
|
|
sleep 5
|
|
|
|
# Check if backend is up
|
|
echo "🔍 Checking backend health..."
|
|
for i in {1..30}; do
|
|
if curl -s http://localhost:8000/health > /dev/null 2>&1; then
|
|
echo "✅ Backend is ready!"
|
|
break
|
|
fi
|
|
if [ $i -eq 30 ]; then
|
|
echo "⚠️ Backend is taking longer than expected to start"
|
|
echo " Check logs with: docker compose logs backend"
|
|
fi
|
|
sleep 2
|
|
done
|
|
|
|
# Check if frontend is up
|
|
echo "🔍 Checking frontend..."
|
|
for i in {1..20}; do
|
|
if curl -s http://localhost:3000 > /dev/null 2>&1; then
|
|
echo "✅ Frontend is ready!"
|
|
break
|
|
fi
|
|
if [ $i -eq 20 ]; then
|
|
echo "⚠️ Frontend is taking longer than expected to start"
|
|
echo " Check logs with: docker compose logs frontend"
|
|
fi
|
|
sleep 2
|
|
done
|
|
|
|
# Get server IP
|
|
SERVER_IP=$(hostname -I | awk '{print $1}')
|
|
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "✨ myFidelityTracker is running!"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
echo "🌐 Access from this server:"
|
|
echo " Frontend: http://localhost:3000"
|
|
echo " Backend: http://localhost:8000"
|
|
echo " API Docs: http://localhost:8000/docs"
|
|
echo ""
|
|
echo "🌐 Access from other computers:"
|
|
echo " Frontend: http://${SERVER_IP}:3000"
|
|
echo " Backend: http://${SERVER_IP}:8000"
|
|
echo " API Docs: http://${SERVER_IP}:8000/docs"
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
echo "📖 Quick Start Guide:"
|
|
echo " 1. Open http://${SERVER_IP}:3000 in your browser"
|
|
echo " 2. Go to the 'Accounts' tab to create your first account"
|
|
echo " 3. Go to the 'Import' tab to upload a Fidelity CSV file"
|
|
echo " 4. View your dashboard with performance metrics"
|
|
echo ""
|
|
echo "🌱 To seed demo data (optional):"
|
|
echo " docker compose exec backend python seed_demo_data.py"
|
|
echo ""
|
|
echo "📊 To view logs:"
|
|
echo " docker compose logs -f"
|
|
echo ""
|
|
echo "🛑 To stop:"
|
|
echo " ./stop.sh or docker compose down"
|
|
echo ""
|