How kartikey-44/bourse-android works
Bourse is an Android client for simulated equity trading. Users sign in or register, browse market data and stock history, and submit simulated buy/sell orders; they can also review portfolio holdings, recommendations, and transaction history, and manage their profile and local transaction PIN. The documented MVVM/repository layers connect screens to REST services, while session tokens and the PIN are stored locally. The backend is external. Some ViewModels and service wiring are unsampled, so their individual links are shown as unverified rather than asserted.
Main entry points: remote REST services · StockDetailsActivity.kt Stock details · PortfolioActivity.kt Portfolio screen · UserRepository.kt User repository
Components 27
App screens
- Login and signup
app/src/main/java/ind/finance/bourse/LoginActivity.kt - Home dashboard
app/src/main/java/ind/finance/bourse/MainActivity.kt - Market screen
app/src/main/java/ind/finance/bourse/MarketActivity.kt - Stock details
app/src/main/java/ind/finance/bourse/StockDetailsActivity.kt - Portfolio screen
app/src/main/java/ind/finance/bourse/PortfolioActivity.kt - All holdings
app/src/main/java/ind/finance/bourse/AllHoldingsActivity.kt - Transaction history
app/src/main/java/ind/finance/bourse/TransactionsActivity.kt - Profile and PIN
app/src/main/java/ind/finance/bourse/ProfileActivity.kt
ViewModels
- Authentication state
app/src/main/java/ind/finance/bourse/ui/auth/AuthViewModel.kt - Home state
app/src/main/java/ind/finance/bourse/ui/home/HomeViewModel.kt - Market state
app/src/main/java/ind/finance/bourse/ui/market/MarketViewModel.kt - Stock state
app/src/main/java/ind/finance/bourse/ui/stock/StockDetailsViewModel.kt - Trading state
app/src/main/java/ind/finance/bourse/ui/trading/TradingViewModel.kt - Portfolio state
app/src/main/java/ind/finance/bourse/ui/portfolio/PortfolioViewModel.kt - Transaction state
app/src/main/java/ind/finance/bourse/ui/transactions/TransactionsViewModel.kt - Profile state
app/src/main/java/ind/finance/bourse/ui/profile/ProfileViewModel.kt - PIN state
app/src/main/java/ind/finance/bourse/ui/profile/TransactionPinViewModel.kt
Data access
- User repository
app/src/main/java/ind/finance/bourse/data/repository/UserRepository.kt - Stock repository
app/src/main/java/ind/finance/bourse/data/repository/StockRepository.kt - Portfolio repository
app/src/main/java/ind/finance/bourse/data/repository/PortfolioRepository.kt - Trading repository
app/src/main/java/ind/finance/bourse/data/repository/TradingRepository.kt - REST services
app/src/main/java/ind/finance/bourse/data/remote - API client
app/src/main/java/ind/finance/bourse/data/remote/ApiClient.kt
Local security
- Session token store
app/src/main/java/ind/finance/bourse/data/local/TokenManager.kt - Encrypted PIN store
app/src/main/java/ind/finance/bourse/data/local/TransactionPinStore.kt
Other components
- User
- Bourse backend
Connections 33
- User → Login and signup: signs in
README.md - User → Market screen: browses
README.md - User → Portfolio screen: reviews
README.md - User → Profile and PIN: manages account
README.md - Login and signup → Authentication state: observes
app/src/main/java/ind/finance/bourse/LoginActivity.kt - Authentication state → User repository: delegates to
app/src/main/java/ind/finance/bourse/ui/auth/AuthViewModel.kt - User repository → REST services: requests user data
app/src/main/java/ind/finance/bourse/data/repository/UserRepository.kt - Market screen → Market state: observes
app/src/main/java/ind/finance/bourse/MarketActivity.kt - Market screen → Stock details: opens stock
app/src/main/java/ind/finance/bourse/MarketActivity.kt - Stock details → Stock state: loads stock
app/src/main/java/ind/finance/bourse/StockDetailsActivity.kt - Stock details → Trading state: observes trades
app/src/main/java/ind/finance/bourse/StockDetailsActivity.kt - Stock details → Encrypted PIN store: verifies PIN
README.md - Portfolio screen → Portfolio state: observes
app/src/main/java/ind/finance/bourse/PortfolioActivity.kt - Portfolio screen → All holdings: opens holdings
app/src/main/java/ind/finance/bourse/PortfolioActivity.kt - Portfolio screen → Transaction history: opens history
app/src/main/java/ind/finance/bourse/PortfolioActivity.kt - Profile and PIN → Profile state: loads profile
app/src/main/java/ind/finance/bourse/ProfileActivity.kt - Profile and PIN → PIN state: updates PIN
app/src/main/java/ind/finance/bourse/ProfileActivity.kt - Home dashboard → Home state: observes
app/src/main/java/ind/finance/bourse/MainActivity.kt - Market state → Stock repository: loads market data
app/src/main/java/ind/finance/bourse/ui/market/MarketViewModel.kt - Stock state → Stock repository: loads stock data
app/src/main/java/ind/finance/bourse/ui/stock/StockDetailsViewModel.kt - Trading state → Trading repository: submits orders
app/src/main/java/ind/finance/bourse/ui/trading/TradingViewModel.kt - Portfolio state → Portfolio repository: loads portfolio
app/src/main/java/ind/finance/bourse/ui/portfolio/PortfolioViewModel.kt - Transaction state → Portfolio repository: loads history
- Profile state → User repository: loads profile
- PIN state → Encrypted PIN store: stores PIN
- Home state → Portfolio repository: loads summary
app/src/main/java/ind/finance/bourse/ui/home/HomeViewModel.kt - Stock repository → REST services: calls stock service
app/src/main/java/ind/finance/bourse/data/repository/StockRepository.kt - Portfolio repository → REST services: calls portfolio service
app/src/main/java/ind/finance/bourse/data/repository/PortfolioRepository.kt - Trading repository → REST services: calls trading service
app/src/main/java/ind/finance/bourse/data/repository/TradingRepository.kt - API client → REST services: creates services
app/src/main/java/ind/finance/bourse/data/remote/ApiClient.kt - REST services → Bourse backend: requests REST data
README.md - API client → Session token store: configures auth
app/src/main/java/ind/finance/bourse/data/remote/ApiClient.kt - User repository → Session token store: persists session
app/src/main/java/ind/finance/bourse/data/repository/UserRepository.kt