How adithyasai3/marketplay works
MarketPlay is a full-stack paper-trading simulator: users register or sign in, explore simulated NSE stock prices, buy and sell with virtual cash, then review holdings, performance, and trade history. The React SPA calls a Spring Boot REST API and receives live price updates over WebSocket. The backend separates controllers, domain services, and repositories, with PostgreSQL-backed account and trading state and Redis-backed leaderboard caching. The README documents these product capabilities; sampled source confirms authentication, trade execution, portfolio calculations, stock operations, and frontend API behavior, but not every feature’s internal wiring.
Main entry points: controller REST controllers · repository Data repositories · pages Feature pages · AuthService.java Authentication
Components 20
React application
- Feature pages
frontend/src/pages - Route access
frontend/src/App.tsx - Auth context
frontend/src/context/AuthContext.tsx - API client
frontend/src/api/client.ts - Resource APIs
frontend/src/api - Live price hook
frontend/src/hooks/useStockPrices.ts
API and domain
- REST controllers
backend/src/main/java/com/marketplay/controller - Authentication
backend/src/main/java/com/marketplay/service/AuthService.java - JWT security
backend/src/main/java/com/marketplay/security/JwtService.java - Stock catalog
backend/src/main/java/com/marketplay/service/StockService.java - Trade execution
backend/src/main/java/com/marketplay/service/TradeService.java - Portfolio analytics
backend/src/main/java/com/marketplay/service/PortfolioService.java - Other services
backend/src/main/java/com/marketplay/service
Market updates
- Price simulator
backend/src/main/java/com/marketplay/service/StockPriceSimulatorService.java - WebSocket updates
backend/src/main/java/com/marketplay/config/WebSocketConfig.java
Persistent state
- Data repositories
backend/src/main/java/com/marketplay/repository - PostgreSQL
- Redis cache
Other components
- Investor or admin
- Browser client
Connections 26
- Investor or admin → Route access: uses
- Route access → Feature pages: routes
- Feature pages → Auth context: uses auth
- Feature pages → Resource APIs: requests data
- Auth context → Resource APIs: auth requests
- Resource APIs → API client: uses
- API client → REST controllers: HTTP requests
- REST controllers → Authentication: delegates auth
- Authentication → JWT security: creates tokens
- REST controllers → Stock catalog: stock operations
- REST controllers → Trade execution: buy, sell, history
- REST controllers → Portfolio analytics: portfolio requests
- REST controllers → Other services: feature requests
- Trade execution → Stock catalog: looks up stock
- Trade execution → Data repositories: reads and writes
- Portfolio analytics → Data repositories: reads holdings
- Authentication → Data repositories: reads and writes
- Stock catalog → Data repositories: reads and writes
- Other services → Data repositories: feature state
- Data repositories → PostgreSQL: persists state
- Other services → Redis cache: leaderboard cache
- Price simulator → Data repositories: updates prices
- Price simulator → WebSocket updates: publishes prices
- WebSocket updates → Live price hook: streams prices
- Live price hook → Browser client: updates UI
- REST controllers → Browser client: JSON responses