Skip to content

gpdonnarumma/appuntamento

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

31 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎡 Music School Scheduler

Sistema completo di gestione orari per scuole di musica con interfaccia web user-friendly.

PHP SQLite License

🌟 Caratteristiche Principali

  • βœ… 3 Ruoli Utente: Amministratore, Docente, Studente
  • βœ… Gestione Completa Corsi con iscrizioni e approvazioni
  • βœ… Calendario Lezioni con ricorrenze (settimanali/mensili)
  • βœ… Sistema Notifiche via email integrato
  • βœ… ID Univoci per facilitare le ricerche
  • βœ… Design Responsive con colori personalizzati per ruolo
  • βœ… Backend REST API completo in PHP + SQLite
  • βœ… Frontend PHP moderno e intuitivo

πŸš€ Quick Start

Prerequisiti

  • PHP >= 7.4
  • SQLite3
  • curl (per API testing)

Installazione Rapida

# 1. Clone repository
git clone https://github.com/gpdonnarumma/appuntamento.git
cd appuntamento

# 2. Avvia backend (terminale 1)
cd backend
php -S localhost:8000

# 3. Avvia frontend (terminale 2)
cd frontend
php -S localhost:3000

# 4. Apri browser
open http://localhost:3000

Primo Utilizzo

  1. Vai su http://localhost:3000
  2. Clicca "Registrati"
  3. Scegli un ruolo:
    • 🏫 Amministratore per gestire una scuola
    • πŸ‘¨β€πŸ« Docente per insegnare corsi
    • πŸŽ“ Studente per iscriverti ai corsi
  4. Compila il form e accedi alla tua dashboard!

πŸ“– Documentazione

Documentazione Completa

Guide Rapide

πŸ—οΈ Architettura

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Frontend (PHP)                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”‚
β”‚  β”‚  Admin   β”‚  β”‚ Teacher  β”‚  β”‚ Student  β”‚      β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                      β”‚
                      β”‚ HTTPS/JSON
                      β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            Backend REST API (PHP)                β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Auth  β”‚ Users β”‚ Courses β”‚ Lessons β”‚...  β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                     β”‚                            β”‚
β”‚                     β–Ό                            β”‚
β”‚            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”‚
β”‚            β”‚  SQLite DB      β”‚                  β”‚
β”‚            β”‚  12 Tabelle     β”‚                  β”‚
β”‚            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ‘₯ Ruoli e FunzionalitΓ 

πŸ”΅ Amministratore (Scuola)

  • Gestisce la propria scuola
  • Approva richieste docenti
  • Visualizza tutti gli studenti e docenti
  • Accesso completo al calendario lezioni
  • ID univoco formato: SC1234ABCD

🟒 Docente

  • Crea e gestisce corsi
  • Prenota lezioni (singole o ricorrenti)
  • Approva richieste iscrizione studenti
  • Scrive note private e assegna obiettivi
  • Si iscrive a scuole
  • ID univoco formato: ABC12345

🟠 Studente

  • Cerca docenti per ID
  • Invia richieste iscrizione
  • Visualizza calendario lezioni personalizzato
  • Riceve notifiche configurabili
  • Vede obiettivi delle lezioni
  • ID univoco formato: DEF67890

πŸ”„ Workflow Esempio

Iscrizione Studente a Corso

1. πŸ‘¨β€πŸ« Docente condivide il suo ID univoco (es: ABC12345)
2. πŸŽ“ Studente cerca il docente per ID
3. πŸŽ“ Studente visualizza i corsi e invia richiesta
4. πŸ‘¨β€πŸ« Docente riceve notifica email
5. πŸ‘¨β€πŸ« Docente approva la richiesta
6. πŸŽ“ Studente riceve conferma email
7. βœ… Studente Γ¨ iscritto al corso!

Prenotazione Lezione Ricorrente

1. πŸ‘¨β€πŸ« Docente crea lezione
2. πŸ‘¨β€πŸ« Seleziona "Ricorrenza: Weekly"
3. πŸ€– Sistema crea 52 lezioni (1 anno)
4. πŸ“§ Studente riceve notifica
5. πŸŽ“ Studente visualizza tutte le lezioni in calendario

πŸ› οΈ Stack Tecnologico

Backend

  • PHP 7.4+ - Linguaggio server-side
  • SQLite - Database leggero e performante
  • JWT - Autenticazione token-based
  • REST API - Architettura API moderna

Frontend

  • PHP - Server-side rendering
  • HTML5/CSS3 - Markup e styling
  • JavaScript - Interazioni client-side
  • Responsive Design - Mobile-first approach

πŸ“Š Database Schema

12 tabelle principali:

  • users - Utenti (tutti i ruoli)
  • schools - Scuole
  • courses - Corsi
  • lessons - Lezioni (con ricorrenza)
  • course_enrollments - Iscrizioni approvate
  • enrollment_requests - Richieste pendenti
  • teacher_schools - Docenti nelle scuole
  • teacher_school_requests - Richieste docenti
  • student_preferences - Preferenze studente
  • notifications - Notifiche centralizzate
  • available_instruments - Strumenti musicali
  • lesson_history - Audit log

πŸ” Sicurezza

  • βœ… Password hashate con bcrypt
  • βœ… JWT con expiration (7 giorni)
  • βœ… SQL Injection prevention (PDO)
  • βœ… XSS protection (htmlspecialchars)
  • βœ… CSRF protection (session-based)
  • βœ… Role-based access control
  • βœ… Input validation e sanitization

πŸ§ͺ Testing

Test Rapido

# Test backend
cd backend
php test_setup.php

# Test API
curl http://localhost:8000

# Test registrazione
curl -X POST http://localhost:8000/api/auth/register.php \
  -H "Content-Type: application/json" \
  -d '{"email":"test@test.com","password":"test123","user_type":"teacher","first_name":"Mario","last_name":"Rossi","birth_date":"1990-01-01"}'

Test Scenario Completo

Vedi SUMMARY.md - Test dell'Applicazione

πŸ“ˆ Statistiche Progetto

  • ~10,000 righe di codice
  • 31 API endpoints
  • 42 file backend
  • 17 file frontend
  • 12 tabelle database
  • 3 ruoli utente
  • 100% funzionale
  • 100% documentato

🚒 Deploy Produzione

Quick Deploy

# Backend
sudo cp -r backend /var/www/api
sudo chown -R www-data:www-data /var/www/api

# Frontend
sudo cp -r frontend /var/www/html/musicschool
sudo chown -R www-data:www-data /var/www/html/musicschool

# Enable HTTPS
sudo certbot --apache -d musicschool.com -d api.musicschool.com

Vedi SUMMARY.md - Deployment per guida completa.

πŸ“ž Supporto

Hai bisogno di aiuto?

πŸ—ΊοΈ Roadmap

v1.1 (Prossima Release)

  • Upload foto profilo
  • Export calendario (iCal)
  • Integrazione email provider
  • Statistiche avanzate

v1.2 (Futuro)

  • Chat docente-studente
  • Pagamenti online (Stripe)
  • App mobile (PWA)
  • Multi-lingua (i18n)

v2.0 (Long-term)

  • Video lezioni integrate
  • Materiale didattico
  • Sistema presenze
  • Analytics dashboard

⭐ Star History

Se ti piace il progetto, lascia una ⭐ su GitHub!


Made with ❀️ for Music Schools

πŸ“– Documentazione Completa β€’ πŸ”§ API Docs β€’ 🎨 Frontend Guide

About

App per gestire lezioni insegnante allievo

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors