
System Architecture
We adopted a distributed client-server architecture with a RESTful API design. This approach offers:
- Scalability – Easily accommodates growing users and data volumes
- Security – Centralized policy enforcement and access control
- Modularity – Components can be added without complex state management
- Performance – Workload distributed across tiers rather than overloading one element
The backend is exposed as a RESTful API using JSON and standard HTTP methods, making development, testing, and integration seamless across clients.
Frontend Development
Native Android (Kotlin + Android Studio)
We chose native Android development over cross-platform frameworks for:
- Greater independence – No abstraction layer delays when platform updates occur
- Full API access – Immediate use of latest Android features (notifications, secure storage)
- Superior debugging – Built-in tools in Android Studio for testing, profiling, and troubleshooting
- Smoother performance – Direct operation on Android runtime for data-intensive interfaces
ViewModel Architecture
We implemented ViewModel to manage UI state across multiple interactive screens. Benefits include:
- Automatically preserves data during configuration changes (screen rotation, language switch)
- Lifecycle-aware binding prevents data loss
- Multiple Fragments can share a single ViewModel instance – enabling communication without complex callbacks
Clean Architecture
The project follows Clean Architecture with three distinct layers:
| Layer | Responsibility |
|---|---|
| Presentation | User interface & interactions |
| Domain | Core business rules & use cases |
| Data | Repository implementation & storage |
This separation enables independent testing, easier maintenance, and future scalability (e.g., switching from pre-loaded data to real-time market data).
Responsive Design
All dimension settings are centrally managed in a dimension resource file, allowing interface-wide updates without editing individual pages.
Backend Development
We selected Python FastAPI as our main framework because:
- Built-in validation – Eliminates need for additional libraries
- Native Python integration – Aligns perfectly with our Python-based workflow
- High performance – Outperforms alternatives like Flask
- Automatic API documentation – Swagger-generated docs for all endpoints
API Endpoints
A comprehensive set of RESTful API endpoints was established to facilitate smooth operations across user registration, login, OTP verification, portfolio updates, and game session management.
Security Implementation
| Mechanism | Purpose |
|---|---|
| JWT (JSON Web Tokens) | Authenticates users, restricts access to protected areas, ensures only verified users can modify portfolios and execute trades |
| Rate Limiter | Controls request volume per timeframe, prevents system abuse, safeguards against malicious attacks, maintains stability during concurrent trading |
FastAPI enables smooth backend testing, development, and consistent maintenance – while JWT and rate limiting ensure a secure, reliable user experience.
Data Extraction & Processing
To replicate realistic market dynamics, we extract authentic historical data for stock prices and news articles.
| Data Type | Tool | Reason |
|---|---|---|
| Stock prices | yfinance | Widely-recognized, Python-compatible, retrieves OHLCV data (open, high, low, close, volume) |
| News articles | Finnhub API | yfinance cannot retrieve historical news – Finnhub enables time-specific financial news extraction |
Data is migrated via CSV files and inserted into relevant database tables.
AI-Powered News Sentiment Analysis
Existing trading simulators fail to provide meaningful news guidance – leaving users overwhelmed by raw information. Our solution integrates FinBERT, a financially-focused NLP model for sentiment analysis.
How It Works:
- News article is input into FinBERT
- Model classifies sentiment into Positive, Negative, or Neutral
- Each news item includes a suggested action to maintain forward-looking perspective
Educational value: Users learn to navigate market drivers without becoming overly reactive or misled by unclear information – building critical thinking and cautious decision-making skills.
Explore the development components
Development Tools





