Skip to content

ktsoupos/BioDataRace

Repository files navigation

BioDataRace - Athlete Monitoring System

Σύστημα παρακολούθησης αθλητών με βιομετρικά δεδομένα, προπονήσεις, τραυματισμούς και ιατρικές εξετάσεις.

Deliverable 3 - Team 24

Αυτή η εφαρμογή είναι το περιβάλλον διεπαφής (UI) για τη βάση δεδομένων BioDataRace που αναπτύχθηκε στα προηγούμενα παραδοτέα.


Περιεχόμενα


Γρήγορη Εκκίνηση

Για να ξεκινήσετε την εφαρμογή σε 2 λεπτά:

# 1. Εκτελέστε το automated setup script
./setup_database.sh

# 2. Εκκινήστε την εφαρμογή
python3 app.py

# 3. Ανοίξτε τον browser στο http://localhost:5000

Login με:

  • Coach: mour@gmail.com
  • Athlete: kmit@auth.gr
  • Doctor: rak@gmail.com

Τεχνολογίες

  • Backend: Python 3.8+ με Flask
  • Frontend: HTML5, CSS3, Bootstrap 5, JavaScript
  • Database: MySQL 8.0+
  • Libraries: mysql-connector-python, python-dotenv

Δομή Έργου

Deliverable_2_Team_24/
│
├── app.py                      # Κύρια εφαρμογή Flask (routes, λογική)
├── config.py                   # Ρυθμίσεις σύνδεσης με MySQL
├── requirements.txt            # Python dependencies
├── .env                        # Περιβαλλοντικές μεταβλητές (ΔΕΝ κάνετε commit!)
├── .env.example                # Παράδειγμα ρυθμίσεων
├── README.md                   # Αυτό το αρχείο
│
├── Bio_Datarace.sql           # SQL schema (από Deliverable 2)
├── Data.sql                    # Sample data
├── Views.sql                   # Database views
├── users.sql                   # MySQL users
├── setup_database.sh           # Automated setup script
├── check_db.py                 # Database verification script
│
└── app/
    ├── static/
    │   ├── css/
    │   │   └── style.css       # Custom CSS styling
    │   └── js/
    │       └── main.js         # JavaScript functionality
    │
    └── templates/
        ├── base.html           # Base template
        ├── login.html          # Login page
        ├── athlete/
        │   └── dashboard.html  # Athlete dashboard
        ├── coach/
        │   ├── dashboard.html  # Coach dashboard
        │   └── add_session.html # Add training session
        └── doctor/
            └── dashboard.html  # Doctor dashboard

Προαπαιτούμενα

Πριν ξεκινήσετε, βεβαιωθείτε ότι έχετε εγκατεστημένα:

  1. Python 3.8 ή νεότερο

    python --version
    # ή
    python3 --version
  2. MySQL 8.0 ή νεότερο

    mysql --version
  3. pip (Python package manager)

    pip --version

Οδηγίες Εγκατάστασης

Γρήγορη Εγκατάσταση (Προτεινόμενο)

Χρησιμοποιήστε το αυτοματοποιημένο script για να ρυθμίσετε τα πάντα με μία εντολή:

./setup_database.sh

Τι κάνει το script:

  • Εγκαθιστά το MySQL server (αν δεν υπάρχει)
  • Ξεκινάει την MySQL υπηρεσία
  • Δημιουργεί τη βάση δεδομένων BioDataRace
  • Φορτώνει όλα τα δεδομένα (πίνακες, views, users)
  • Ρυθμίζει το αρχείο .env
  • Επαληθεύει την εγκατάσταση

Μετά την εκτέλεση του script, μπορείτε να ξεκινήσετε απευθείας την εφαρμογή:

python3 app.py

Χειροκίνητη Εγκατάσταση (Εναλλακτικά)

Αν προτιμάτε να εγκαταστήσετε χειροκίνητα, ακολουθήστε τα παρακάτω βήματα:

Βήμα 1: Εγκατάσταση Python Dependencies

Ανοίξτε το terminal στον φάκελο του έργου και εκτελέστε:

pip install -r requirements.txt

Αυτό θα εγκαταστήσει:

  • Flask (web framework)
  • mysql-connector-python (σύνδεση με MySQL)
  • python-dotenv (διαχείριση environment variables)

Βήμα 2: Ρύθμιση MySQL Database

2.1. Σύνδεση στο MySQL

mysql -u root -p

Θα σας ζητήσει το password του MySQL root user.

2.2. Δημιουργία Schema και Εισαγωγή Δεδομένων

Εκτελέστε τα SQL scripts με τη σειρά:

# Από το terminal (εκτός MySQL)
mysql -u root -p < Bio_Datarace.sql
mysql -u root -p < Data.sql
mysql -u root -p < Views.sql
mysql -u root -p < users.sql

Τι κάνει το καθένα:

  • Bio_Datarace.sql: Δημιουργεί το schema και τους πίνακες
  • Data.sql: Εισάγει sample δεδομένα (αθλητές, ομάδες, προπονητές, κτλ)
  • Views.sql: Δημιουργεί views για reports
  • users.sql: Δημιουργεί MySQL users με διαφορετικά permissions

2.3. Επιβεβαίωση

Ελέγξτε ότι η βάση δημιουργήθηκε επιτυχώς:

mysql -u root -p
USE BioDataRace;
SHOW TABLES;
SELECT * FROM Athletes;

Βήμα 3: Ρύθμιση Environment Variables

3.1. Δημιουργήστε το αρχείο .env

cp .env.example .env

3.2. Επεξεργαστείτε το .env

Ανοίξτε το αρχείο .env με έναν text editor και συμπληρώστε τα στοιχεία σας:

DB_HOST=localhost
DB_USER=root
DB_PASSWORD=το_δικό_σας_mysql_password
DB_NAME=BioDataRace
SECRET_KEY=κάποιο_τυχαίο_string_για_ασφάλεια

Οδηγίες Εκτέλεσης

Εκκίνηση της Εφαρμογής

Από το terminal, στον φάκελο του έργου:

python app.py

Αναμενόμενο Output:

 * Serving Flask app 'app'
 * Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment.
 * Running on all addresses (0.0.0.0)
 * Running on http://127.0.0.1:5000
 * Running on http://192.168.x.x:5000

Πρόσβαση στην Εφαρμογή

  1. Ανοίξτε τον browser σας (Chrome, Firefox, Edge)
  2. Πηγαίνετε στο: http://localhost:5000
  3. Θα δείτε τη σελίδα login

Διακοπή της Εφαρμογής

Πατήστε Ctrl + C στο terminal.


Στοιχεία Login

Χρησιμοποιήστε τα παρακάτω emails για να συνδεθείτε ως διαφορετικοί ρόλοι:

Athlete (Αθλητής)

  • Email: kmit@auth.gr
  • Όνομα: Kostas Mitroglou
  • Άθλημα: Football
  • Βλέπει: Προσωπικά δεδομένα, προπονήσεις, βιομετρικά, τραυματισμούς

Coach (Προπονητής)

  • Email: mour@gmail.com
  • Όνομα: Mourinho
  • Ομάδα: PAOK
  • Βλέπει: Αθλητές ομάδας, προπονήσεις, στατιστικά
  • Μπορεί να: Προσθέσει νέες προπονήσεις

Doctor (Γιατρός)

  • Email: rak@gmail.com
  • Όνομα: Kostas Marinos
  • Ειδικότητα: Pathologist
  • Βλέπει: Τραυματισμούς, βιολογικές εξετάσεις
  • Μπορεί να: Προσθέσει τραυματισμούς, εξετάσεις, ενημερώσει status

Σημείωση: Για demo σκοπούς, δεν απαιτείται password. Σε πραγματική εφαρμογή θα χρησιμοποιούσαμε password hashing.


Σενάρια Χρήσης

Σενάριο 1: Αθλητής Βλέπει τα Στατιστικά του

  1. Login με kmit@auth.gr
  2. Βλέπει το dashboard με:
    • Προσωπικά στοιχεία
    • Ιστορικό προπονήσεων
    • Βιομετρικά δεδομένα (καρδιακός ρυθμός, βήματα, θερμίδες)
    • Δείκτες απόδοσης (VO2 max)
    • Τραυματισμούς

Σενάριο 2: Προπονητής Προγραμματίζει Προπόνηση

  1. Login με mour@gmail.com
  2. Κλικ στο "Add New Training Session"
  3. Επιλογή αθλητή από τη λίστα
  4. Συμπλήρωση:
    • Ημερομηνία/ώρα
    • Τύπος προπόνησης (π.χ. "Strength Training")
    • Διάρκεια (π.χ. 90 λεπτά)
    • Ένταση (Low/Medium/High)
  5. Κλικ "Create Session"
  6. Η προπόνηση προστίθεται στη βάση

Σενάριο 3: Γιατρός Καταχωρεί Τραυματισμό

  1. Login με rak@gmail.com
  2. Στο dashboard, στην ενότητα "Add New Injury Record":
    • Επιλογή αθλητή
    • Ημερομηνία συμβάντος
    • Περιγραφή (π.χ. "Ankle sprain")
    • Status: "Injured"
    • Recovery plan (π.χ. "Rest 2 weeks")
  3. Κλικ "Add Injury"
  4. Ο τραυματισμός εμφανίζεται στα "Active Injuries"

Σενάριο 4: Γιατρός Ενημερώνει Status Τραυματισμού

  1. Login με rak@gmail.com
  2. Στα "Active Injuries", βρίσκει τον τραυματισμό
  3. Κλικ "Mark Recovered"
  4. Το status αλλάζει από "Injured" → "Recovered"
  5. Ο τραυματισμός μετακινείται στο "Complete Injury History"

Επεξήγηση Κώδικα (Για Κατανόηση)

app.py - Κύριο Αρχείο

Δομή:

  1. Database Connection (γραμμές 8-16): Συνάρτηση που συνδέεται με MySQL
  2. Authentication Routes (γραμμές 50-80): Login/Logout λογική
  3. Athlete Routes (γραμμές 85-150): Queries για δεδομένα αθλητή
  4. Coach Routes (γραμμές 155-250): Queries για προπονητή + προσθήκη sessions
  5. Doctor Routes (γραμμές 255-350): Queries για γιατρό + προσθήκη injuries/tests

Παράδειγμα SQL Query στον κώδικα:

cursor.execute("""
    SELECT a.*, t.team_name
    FROM Athletes a
    LEFT JOIN Teams t ON a.team_id = t.team_id
    WHERE a.athlete_id = %s
""", (athlete_id,))

templates/ - HTML Σελίδες

  • base.html: Βασικό template με navbar, footer
  • Άλλα templates: Extend το base.html και προσθέτουν το content τους

Jinja2 Templating:

{% for session in sessions %}
    <tr>
        <td>{{ session.date }}</td>
        <td>{{ session.type }}</td>
    </tr>
{% endfor %}

static/css/style.css - Styling

Custom CSS που συμπληρώνει το Bootstrap για:

  • Card animations
  • Custom colors
  • Responsive design
  • Table styling

Troubleshooting

Γενικός Έλεγχος Βάσης Δεδομένων

Αν αντιμετωπίζετε προβλήματα με τη βάση δεδομένων, χρησιμοποιήστε το verification script:

python3 check_db.py
# ή
db_venv/bin/python check_db.py

Αυτό θα σας δείξει:

  • Αν η σύνδεση στη βάση λειτουργεί
  • Ποιοι χρήστες υπάρχουν στη βάση (coaches, athletes, doctors)
  • Πιθανά προβλήματα με το MySQL

Πρόβλημα 1: "TemplateNotFound: login.html"

Αιτία: Το Flask δεν βρίσκει τα HTML templates στον σωστό φάκελο.

Λύση: Αυτό το πρόβλημα έχει διορθωθεί. Το app.py έχει ρυθμιστεί να αναζητά templates στο app/templates/.

Αν το πρόβλημα παραμένει, βεβαιωθείτε ότι η γραμμή 6 του app.py περιλαμβάνει:

app = Flask(__name__, template_folder='app/templates', static_folder='app/static')

Πρόβλημα 2: "ModuleNotFoundError: No module named 'flask'"

Λύση:

pip install -r requirements.txt

Πρόβλημα 3: "Invalid email or user not found" κατά το login

Αιτία: Η βάση δεδομένων είναι άδεια ή το MySQL δεν τρέχει.

Λύση:

  1. Βεβαιωθείτε ότι το MySQL τρέχει:
    sudo systemctl status mysql
  2. Αν δεν τρέχει, ξεκινήστε το:
    sudo systemctl start mysql
  3. Ελέγξτε αν η βάση έχει δεδομένα:
    python3 check_db.py
  4. Αν η βάση είναι άδεια, εκτελέστε το setup script:
    ./setup_database.sh

Πρόβλημα 4: "Access denied for user 'root'@'localhost'"

Λύση:

  • Ελέγξτε ότι το password στο .env είναι σωστό
  • Δοκιμάστε: mysql -u root -p για να επιβεβαιώσετε το password

Πρόβλημα 5: "Can't connect to MySQL server"

Λύση:

  • Βεβαιωθείτε ότι το MySQL server τρέχει:
    # Linux
    sudo systemctl start mysql
    
    # Windows (από Services)
    # Βρείτε "MySQL" και κάντε Start

Πρόβλημα 6: "Table 'BioDataRace.Athletes' doesn't exist"

Λύση:

  • Εκτελέστε ξανά τα SQL scripts:
    mysql -u root -p < Bio_Datarace.sql
    mysql -u root -p < Data.sql

Πρόβλημα 7: "Port 5000 already in use"

Λύση:

  • Αλλάξτε το port στο app.py (τελευταία γραμμή):
    app.run(debug=True, host='0.0.0.0', port=5001)
  • Μετά: http://localhost:5001

Πρόβλημα 8: CSS δεν φορτώνει

Λύση:

  • Κάντε hard refresh: Ctrl + Shift + RCmd + Shift + R σε Mac)
  • Ελέγξτε ότι ο φάκελος app/static/ υπάρχει

Features της Εφαρμογής

Για Αθλητές

  • Προβολή προσωπικών πληροφοριών
  • Ιστορικό προπονήσεων
  • Βιομετρικά δεδομένα (real-time από wearables)
  • Δείκτες απόδοσης (VO2 max, fat %, reaction time)
  • Ιστορικό τραυματισμών

Για Προπονητές

  • Διαχείριση ομάδων
  • Προβολή αθλητών
  • Δημιουργία νέων προπονήσεων
  • Στατιστικά καρδιακού ρυθμού (από view)
  • Ιστορικό προπονήσεων

Για Γιατρούς

  • Προβολή ενεργών τραυματισμών
  • Προσθήκη νέων τραυματισμών
  • Ενημέρωση status (Injured → Recovered)
  • Καταχώρηση βιολογικών εξετάσεων
  • Πλήρες ιστορικό

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors