A full-stack portfolio management application with real-time market data, AI-powered recommendations, and comprehensive portfolio analysis.
See QUICK_START.md for detailed setup instructions.
# 1. Start Flask API
cd Backend && python app.py
# 2. Start Java Backend
mvn spring-boot:run
# 3. Start React Frontend
cd reactpotfolio && npm startReact Frontend (Port 3000)
β
Java Spring Boot Proxy (Port 8080)
β
Flask API (Port 5000)
β
yfinance β Yahoo Finance
- Real-time Stock Quotes: Live data for stocks, crypto, mutual funds, commodities
- Historical Charts: Price history with multiple time periods (1D - 2Y)
- Asset Search: Search across US, UK, and India exchanges
- News & Analysis: Latest news and analyst recommendations
- Smart Performance Analysis:
- Best/worst performers with Β±5% threshold
- No duplicate stocks in best/worst lists
- Quantity-weighted calculations
- Comprehensive Metrics:
- Investment value vs current value
- Total and per-share gains/losses
- Annualized returns (CAGR)
- Portfolio weight percentages
- Asset type detection (Stock, ETF, Crypto, etc.)
- AI Recommendations: FinBERT sentiment analysis with buy/sell/hold suggestions
- Portfolio overview dashboard
- Holdings management
- Performance charts
- Asset search and details
- Responsive design
- QUICK_START.md - Installation and setup guide
- FRONTEND_INTEGRATION.md - React-Backend integration details
- API_ENDPOINTS.md - Complete API documentation
- Backend/DataAPI_ARCHITECTURE.md - Flask API architecture
- Backend/RECOMMENDATION_SYSTEM.md - AI recommendation system
Backend/
βββ app.py # Main Flask application
βββ services/
β βββ stock_service.py # Market data & portfolio analysis
β βββ recommendation_service.py # AI recommendations
βββ sample_portfolio_data.json # Test data
src/main/java/org/hsbc/
βββ controller/
βββ StockDataController.java # Proxy endpoints
reactpotfolio/src/
βββ api/
β βββ config.js # API configuration
β βββ marketApi.js # Market data integration
β βββ assetsApi.js # Asset management
β βββ portfolioApi.js # Portfolio operations
βββ components/ # Reusable components
βββ pages/ # Page components
βββ App.jsx # Main app
- Python 3.8+: Flask, yfinance
- AI/ML: Transformers (FinBERT), PyTorch
- Java 17+: Spring Boot, RestTemplate
- React 18: Hooks, Context API
- Styling: CSS Modules
- HTTP Client: Fetch API with timeout handling
GET /api/yfdata/stocks/{symbol}- Stock dataGET /api/yfdata/crypto/{symbol}- Cryptocurrency dataGET /api/yfdata/mutual-funds/{symbol}- Mutual fund dataGET /api/yfdata/commodities/{symbol}- Commodity dataGET /api/yfdata/history/{symbol}?period=1MO- Historical pricesGET /api/yfdata/search?q={query}- Search assets
POST /api/yfdata/portfolio/performers- Best/worst performersPOST /api/yfdata/portfolio/recommendations- AI recommendationsGET /api/yfdata/stock/{symbol}/analysis- Stock analysis
See API_ENDPOINTS.md for complete documentation.
Use Backend/sample_portfolio_data.json for testing:
{
"holdings": [
{ "symbol": "AAPL", "quantity": 50, "buy_price": 150.0, "purchase_date": "2024-01-15" },
{ "symbol": "GOOGL", "quantity": 30, "buy_price": 140.0, "purchase_date": "2024-02-01" }
]
}# Test portfolio analysis
curl -X POST http://localhost:8080/api/yfdata/portfolio/performers \
-H "Content-Type: application/json" \
-d @Backend/sample_portfolio_data.json
# Test search
curl "http://localhost:8080/api/yfdata/search?q=apple"
# Test stock data
curl "http://localhost:8080/api/yfdata/stocks/AAPL"- Total Portfolio Stats
- Best & Worst Performers (Β±5% threshold)
- Recent Activities
- Performance Charts
- Asset Search (US, UK, India exchanges)
- Detailed Asset View
- Buy/Sell Operations
- Real-time Pricing
- Detailed Investment Breakdown
- Comprehensive Metrics
- Portfolio Weight Distribution
- Asset Type Classification
Update in reactpotfolio/src/api/config.js:
export const JAVA_API_URL = 'http://localhost:8080/api/yfdata';
export const REQUEST_TIMEOUT = 30000;Java backend allows all origins by default. Modify in StockDataController.java:
@CrossOrigin(origins = "*") // Change to specific origin for productionSee QUICK_START.md#common-issues for solutions to common problems.
This project is for educational purposes.
- Ensure all three services (Flask, Java, React) are running
- Test changes with sample portfolio data
- Update documentation for API changes
- Follow existing code structure and conventions