A comprehensive portfolio management tool for tracking equities and options, analyzing risk, calculating quantamental factors, and generating Markdown reports.
- 🚀 Real-time market data tracking with multiple data sources
- 📊 Options chain analysis and Greeks calculations
- 💼 Portfolio position management across multiple accounts
- 📈 Risk analytics and exposure monitoring
- 🔍 Fundamental data analysis
- 📝 Markdown report generation
- 🔒 Secure authentication and authorization
- 📱 Responsive design for all devices
- Node.js 18+
- Supabase account
- API keys for market data providers:
- Polygon.io
- Alpha Vantage
- Financial Modeling Prep (FMP)
- FRED
- Others as needed
- Clone the repository
- Set up environment variables:
cp .env.example .env # Edit .env with your API keys
- Install dependencies:
npm install
- Start development server:
npm run dev
Required environment variables are documented in .env.example
. Each variable must be prefixed with VITE_
to be accessible in the frontend code.
- Create a new Supabase project
- Run migrations from
supabase/migrations/
- Configure authentication settings
- Add environment variables to
.env
The application uses Supabase (PostgreSQL) with the following main tables:
companies
: Basic company informationpositions
: Portfolio positionsoption_positions
: Options-specific datatransactions
: Position transactionsmarket_data
: Price and fundamental datametrics
: Calculated financial metricswatchlist
: Tracked companiesreports
: Markdown research reports
Multiple market data sources are used with automatic fallback:
- Yahoo Finance (primary, no API key needed)
- Polygon.io (real-time data)
- Alpha Vantage (fundamental data)
- FMP (company profiles)
- Row Level Security (RLS) enabled on all tables
- API key rotation every 24 hours
- Environment variable protection
- Secure authentication flow
npm run dev
: Start development servernpm run build
: Build for productionnpm run test
: Run testsnpm run test:coverage
: Run tests with coveragenpm run market-data
: Start market data servernpm run import-data
: Import initial data
src/
├── api/ # API clients and error handling
├── components/ # React components
├── hooks/ # Custom React hooks
├── lib/ # Library configurations
├── types/ # TypeScript type definitions
├── utils/ # Utility functions
└── workers/ # Web Workers for calculations
-
Data Management
- Implement data caching strategy
- Add data validation layer
- Implement real-time data synchronization
-
Error Handling
- Add global error boundary
- Implement retry mechanisms for API calls
- Add error reporting service
-
Testing
- Add E2E tests with Cypress
- Increase unit test coverage
- Add performance testing
-
Features
- Add portfolio rebalancing tools
- Implement advanced charting
- Add technical analysis indicators
-
Performance
- Implement code splitting
- Add service worker for offline support
- Optimize bundle size
-
Documentation
- Add API documentation
- Create user guide
- Add contributing guidelines
-
UI/UX
- Add dark mode support
- Implement keyboard shortcuts
- Add more customization options
-
Analytics
- Add performance metrics
- Implement usage tracking
- Add user feedback system
-
Data Providers
- Rate limits on free API tiers
- Delayed market data on some sources
- Limited historical data
-
Performance
- Large option chains may cause slowdown
- Real-time updates limited by API quotas
-
Browser Support
- Modern browsers only
- No IE11 support
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
MIT
For support, please open an issue in the GitHub repository.