Skip to main content

System Overview

Overview

The SmartRunning Training Optimization Platform is a monolithic web application built with Flask and MongoDB, following an MVC architecture with service layers. The system handles fitness data processing, performance analytics, and training plan generation.

Architecture Diagram

┌─────────────────────────────────────────────────────────────────┐
│ Client Layer │
├─────────────────────────────────────────────────────────────────┤
│ Web Browser (HTML/CSS/JS) │
│ - index.html (Main Application) │
│ - admin.html (Admin Dashboard) │
│ - training_plan_view.html (Plan Viewer) │
└─────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│ Application Layer │
├─────────────────────────────────────────────────────────────────┤
│ Flask Web Framework │
│ ├── routes.py (API Endpoints & Controllers) │
│ ├── models.py (Data Models) │
│ └── __init__.py (App Factory) │
└─────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│ Service Layer │
├─────────────────────────────────────────────────────────────────┤
│ Business Logic & Processing │
│ ├── file_processor.py (FIT File Processing) │
│ ├── statistics_processor.py (Metrics Calculation) │
│ ├── runner_history_processor.py (Historical Analysis) │
│ ├── training_plan_generator.py (Plan Generation) │
│ ├── session_statistics.py (Session Analysis) │
│ ├── critical_speed.py (Critical Speed Calculation) │
│ ├── heart_rate_calculator.py (HR Zone Calculation) │
│ └── job_manager.py (Background Tasks) │
└─────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│ Data Layer │
├─────────────────────────────────────────────────────────────────┤
│ MongoDB Database │
│ ├── database.py (Connection & Basic Operations) │
│ ├── Collections (runner, sessions, statistics, etc.) │
│ └── GridFS (Binary File Storage) │
└─────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│ External Services │
├─────────────────────────────────────────────────────────────────┤
│ MongoDB Atlas (Cloud Database) │
└─────────────────────────────────────────────────────────────────┘

Technology Stack

Core Technologies

LayerTechnologyPurpose
FrontendHTML5, CSS3, JavaScriptUser interface
CSS FrameworkBootstrapResponsive design
VisualizationChart.jsData visualization
Backend FrameworkFlask 3.0.0Web application framework
RuntimePython 3.11-3.13Core programming language
DatabaseMongoDBNoSQL document storage
File StorageGridFSBinary file storage
ContainerizationDocker & Docker ComposeDeployment & development

Python Libraries

LibraryVersionPurpose
Flask3.0.0Web framework
Flask-CORS4.0.0Cross-origin resource sharing
pymongo4.5.0MongoDB driver
pandas2.2.3Data manipulation (Python 3.11-3.13 compatible)
numpy1.26.4Numerical computing (Python 3.11-3.13 compatible)
scipy1.14.1Scientific computing (Python 3.11-3.13 compatible)
scikit-learn1.5.2Machine learning (Critical Speed regression)
pyarrow18.0.0Parquet file support (Python 3.11-3.13 compatible)
certifi2024.8.30SSL/TLS certificate bundle provider
python-dotenv1.0.0Environment management
dnspython2.4.2DNS resolution for MongoDB