Skip to content

Heron4gf/hackaton-valtellina

Repository files navigation

Gestionale Associazione Sportiva

Un sistema completo di gestione per associazioni sportive sviluppato con Streamlit, che integra gestione atleti, calendario gare e generazione automatica di documenti.

Funzionalità Principali

🏃‍♂️ Gestione Atleti

  • Registrazione e gestione profili atleti
  • Visualizzazione informazioni complete (nome, email, telefono, livello atletico)
  • Pannello dedicato per ogni atleta con documenti organizzati per categoria

📅 Calendario Gare

  • Integrazione con Google Calendar API
  • Aggiunta automatica di gare al calendario
  • Visualizzazione gare future
  • Generazione automatica di documenti per tutti gli atleti dopo l'aggiunta di una gara

📄 Gestione Documenti

  • Documenti organizzati per tipologia:
    • Dieta: Piani alimentari personalizzati
    • Mental Coaching: Supporto psicologico e motivazionale
    • Statistiche: Analisi performance
    • Scheda: Programmi di allenamento
  • Visualizzazione in formato Markdown
  • Sistema di invio email per ogni documento
  • Generazione automatica tramite AI (OpenAI GPT)

✉️ Sistema Email

  • Invio documenti via email agli atleti
  • Template personalizzati per ogni tipo di documento
  • Tracciamento del tipo di documento nell'email

Installazione

  1. Clona il repository
git clone <repository-url>
cd hackaton_valtellina
  1. Installa le dipendenze
pip install -r requirements.txt
  1. Configura le variabili d'ambiente Crea un file .env nella root del progetto:
# OpenAI Configuration
OPENAI_API_KEY=your_openai_api_key
SYSTEM_PROMPT=Sei un assistente specializzato nella creazione di documenti per atleti. Genera contenuti professionali e dettagliati in formato markdown.

# Email Configuration
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=your_email@gmail.com
SMTP_PASSWORD=your_app_password

# Google Calendar Configuration
GOOGLE_CALENDAR_EMAIL=your_calendar_email@gmail.com
  1. Configura Google Calendar API
  • Vai alla Google Cloud Console
  • Crea un nuovo progetto o seleziona uno esistente
  • Abilita la Google Calendar API
  • Crea le credenziali (Service Account)
  • Scarica il file JSON delle credenziali
  • Condividi il tuo calendario con l'email del service account
  1. Inizializza il database
python database_handler.py
  1. Aggiungi dati di esempio (opzionale)
python sample_data.py

Utilizzo

Avvio dell'applicazione

streamlit run streamlit_app.py

L'applicazione sarà disponibile su http://localhost:8501

Navigazione

Dashboard

  • Panoramica generale con statistiche
  • Numero totale atleti, gare future e documenti
  • Lista completa degli atleti registrati

Gestione Atleti

  • Lista Atleti: Visualizza tutti gli atleti con possibilità di accedere ai profili
  • Aggiungi Atleta: Form per registrare nuovi atleti

Calendario Gare

  • Gare Future: Visualizza eventi dal Google Calendar
  • Aggiungi Gara:
    • Crea nuovi eventi nel calendario
    • Opzione per generare automaticamente documenti per tutti gli atleti
    • Selezione del tipo di documento da generare

Profilo Atleta

  • Informazioni complete dell'atleta
  • Documenti organizzati per tipologia in tab separate
  • Visualizzazione documenti in formato Markdown
  • Pulsanti per:
    • Visualizzare contenuto completo
    • Inviare documento via email
  • Generazione manuale di nuovi documenti

Workflow Tipico

  1. Registra atleti nella sezione "Gestione Atleti"
  2. Aggiungi una gara nel "Calendario Gare"
  3. Seleziona la generazione automatica di documenti durante l'aggiunta della gara
  4. Vai al profilo di un atleta per revisionare i documenti generati
  5. Invia i documenti via email dopo la revisione

Struttura del Progetto

hackaton_valtellina/
├── streamlit_app.py          # Applicazione Streamlit principale
├── database_handler.py       # Gestione database SQLite
├── emails.py                 # Sistema di invio email
├── google_calendar.py        # Integrazione Google Calendar
├── llm.py                    # Integrazione OpenAI
├── pipeline.py               # Pipeline di generazione documenti
├── schemas.py                # Schemi Pydantic
├── sample_data.py            # Dati di esempio
├── requirements.txt          # Dipendenze Python
├── README.md                 # Documentazione
└── .env                      # Variabili d'ambiente

Modelli di Dati

Atleta

  • ID univoco
  • Codice fiscale
  • Nome e cognome
  • Email e telefono
  • Livello atletico (Avanzato, Agonistico, Professionista)

Documento

  • ID univoco
  • Riferimento all'atleta
  • Tipo documento (Dieta, Mental Coaching, Statistiche, Scheda)
  • Titolo e contenuto
  • Data di creazione

Email

  • Oggetto
  • Contenuto
  • Tipo documento (nuovo campo aggiunto)

Personalizzazione

Aggiungere nuovi tipi di documento

  1. Modifica l'enum TipoDocumento in database_handler.py
  2. Aggiorna il prompt di sistema per la generazione AI
  3. L'interfaccia si adatterà automaticamente

Modificare i template email

  • Modifica la funzione send_email in emails.py
  • Personalizza il formato del messaggio

Estendere le funzionalità del calendario

  • Modifica google_calendar.py per aggiungere nuove funzioni
  • Integra con altre API di calendario se necessario

Troubleshooting

Problemi comuni

  1. Errore Google Calendar API

    • Verifica che le credenziali siano corrette
    • Controlla che il calendario sia condiviso con il service account
  2. Errore invio email

    • Verifica le credenziali SMTP
    • Per Gmail, usa una App Password invece della password normale
  3. Errore OpenAI API

    • Controlla che la chiave API sia valida
    • Verifica di avere crediti sufficienti
  4. Database non trovato

    • Esegui python database_handler.py per creare il database

Contributi

Per contribuire al progetto:

  1. Fork del repository
  2. Crea un branch per la tua feature
  3. Commit delle modifiche
  4. Push del branch
  5. Crea una Pull Request

Licenza

Questo progetto è sviluppato per scopi educativi e di hackathon.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages