Team 15 - CS 307 Project
Anirudh Kaza, Dev Patel, Praveer Sharan, Swastik Agarwala, Vikhyat Jagini
- 🚀 Live Demo
- 📋 Overview
- ✨ Key Features
- 🛠️ Technology Stack
- 📚 API Documentation
- 🏗️ Project Structure
- 🔒 Security Features
- 📈 Performance & Scalability
- 🙏 Acknowledgments
Investify is a comprehensive investment learning and simulation platform designed to make financial education accessible and engaging for beginners and experienced investors alike. The platform combines real-time market data, portfolio management, social features, and gamified learning to create an immersive financial education experience.
Learning how to invest can be challenging, especially for beginners unfamiliar with financial markets. Since there's no one-size-fits-all approach and each person's financial situation is unique, Investify helps users explore various investment options including stocks, mutual funds, cryptocurrencies, bonds, and life insurance policies while making the learning process simpler and more accessible.
- Individuals with little to no experience in financial markets
- Recent graduates and entry-level professionals starting their investment journey
- Students learning about finance who want hands-on experience
- Anyone interested in growing their wealth through informed investment decisions
- Secure account creation and authentication
- Profile customization with financial goals and risk tolerance
- Password reset and email verification
- Account deletion and data management
- Real-time market data for stocks, ETFs, cryptocurrencies, and mutual funds
- Interactive charts with candlestick and line views
- Moving averages and technical indicators
- Popular assets and market movers tracking
- Comprehensive asset information pages
- Real and paper portfolio creation and management
- Portfolio analytics with risk assessment
- Sector diversification analysis
- ROI calculations and performance tracking
- Asset allocation insights
- Interactive projection tools for various asset classes
- Historical performance analysis
- Custom scenario modeling
- Market condition simulations (bull/bear markets, recessions)
- Paper trading competitions with real-time market data
- Public and private trading competitions
- Leaderboards and achievement systems
- Badges and participation rewards
- Friend system and social interactions
- Personalized financial advice using Azure OpenAI
- Risk assessment based on user profiles
- Investment recommendations tailored to individual goals
- Framework: React 18 with TypeScript
- Build Tool: Vite
- State Management: Redux Toolkit with persistence
- Styling: Tailwind CSS + DaisyUI
- Charts: Recharts + Lightweight Charts
- Forms: React Hook Form with validation
- Routing: Wouter
- Testing: Vitest + Testing Library
- Framework: Spring Boot 3.x with Java
- Database: PostgreSQL
- Authentication: JWT with Spring Security
- API Integration: WebFlux for reactive programming
- File Storage: AWS S3
- AI Services: Azure OpenAI
- Email: Spring Mail with SMTP
- Caching: Caffeine
- Real-time: WebSocket for live price updates
- Market Data: Polygon.io, Alpha Vantage, Twelve Data
- Cryptocurrency: CoinMarketCap
- News: DuckDuckGo scraping
- AI: Azure OpenAI for financial advice
- Hosting: AWS EC2
- Database: PostgreSQL
- File Storage: AWS S3
- Containerization: Docker with Docker Compose
POST /api/auth/signup- User registrationPOST /api/auth/login- User loginPOST /api/auth/logout- User logoutPOST /api/auth/forgot-password- Password reset requestPOST /api/auth/reset-password- Password reset confirmation
GET /api/assets/stocks/popular- Popular stocksGET /api/assets/stocks/movers- Market moversGET /api/assets/crypto/popular- Popular cryptocurrenciesGET /api/assets/{symbol}/price- Real-time asset priceGET /api/assets/{symbol}/chart- Historical price data
GET /api/portfolios- User portfoliosPOST /api/portfolios/real- Create real portfolioPOST /api/portfolios/paper- Create paper portfolioGET /api/portfolios/{id}/analytics- Portfolio analytics
GET /api/games- Available gamesPOST /api/games- Create new gamePOST /api/games/{id}/join- Join gameGET /api/games/{id}/leaderboard- Game leaderboard
investify/
├── frontend/
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ ├── forms/ # Form components
│ │ ├── scenes/ # Complex UI scenes
│ │ ├── api/ # API service layers
│ │ ├── features/ # Redux slices
│ │ ├── hooks/ # Custom React hooks
│ │ ├── utils/ # Utility functions
│ │ └── types/ # TypeScript definitions
│ ├── package.json
│ └── vite.config.ts
├── backend/
│ └── src/main/java/com/investify/backend/
│ ├── controllers/ # REST controllers
│ ├── services/ # Business logic
│ ├── repositories/ # Data access layer
│ ├── entities/ # JPA entities
│ ├── dtos/ # Data transfer objects
│ ├── config/ # Configuration classes
│ └── mappers/ # Object mapping
└── docker-compose.yml
- JWT-based authentication with secure HTTP-only cookies
- Password hashing with BCrypt
- CORS protection with configurable origins
- Rate limiting to prevent DDoS attacks
- Input validation and sanitization
- Secure file upload to AWS S3
- Caching: Caffeine cache for frequently accessed data
- Async Processing: WebFlux for non-blocking operations
- Database Optimization: Proper indexing and query optimization
- CDN: Static assets served via AWS S3
- Load Balancing: Ready for horizontal scaling
- APIs: Polygon.io, Alpha Vantage, Twelve Data, CoinMarketCap
- Cloud Services: AWS (EC2, S3), Azure OpenAI
- Open Source Libraries: Spring Boot, React, Redux, Tailwind CSS
- Team: Special thanks to all team members for their contributions
Built with ❤️ by Team 15