Skip to content

paolpal/LiftLog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LiftLog

LiftLog è un'app web in PHP pensata per la gestione di esercizi, schede di allenamento e utenti (staff/istruttori e clienti).

Panoramica

Questa applicazione permette di:

  • Sfogliare il catalogo di esercizi
  • Cercare esercizi per parola chiave
  • Creare e gestire schede di allenamento (workout) per utente
  • Autenticazione utenti (clienti e dipendenti)

L'interfaccia è costruita con HTML/CSS/JS e la logica server è in PHP con un database MySQL fornito tramite lo script SQL palumbo_585006.sql.

Tecnologie

  • PHP 8.x (progetto testato con PHP 8.1)
  • Apache (Dockerfile usa l'immagine php:8.1-apache)
  • MySQL 8
  • HTML/CSS/Vanilla JS per il frontend

Requisiti

  • Docker & Docker Compose (consigliato per avviare rapidamente l'app completa) oppure
  • Un ambiente LAMP con PHP >= 8, Apache/Nginx e MySQL

Avvio rapido (con Docker Compose)

  1. Costruire ed avviare i servizi (nella root del progetto):
docker compose up --build -d
  1. Aprire il browser su http://localhost:8080

Il docker-compose.yml incluso crea due servizi: web (PHP/Apache) e db (MySQL). Il file SQL palumbo_585006.sql è montato come script di inizializzazione per il container MySQL.

Nota: per far sì che l'app PHP usi le credenziali/il nome del database forniti dal servizio db potresti voler passare delle variabili d'ambiente al servizio web. Un esempio minimo (da aggiungere sotto web: in docker-compose.yml):

environment:
	- DB_HOST=db
	- DB_USER=liftuser
	- DB_PASSWORD=liftpass
	- DB_NAME=liftlog

Il file php/util/dbConfig.php legge le variabili d'ambiente DB_HOST, DB_USER, DB_PASSWORD e DB_NAME se presenti; altrimenti usa dei valori di fallback.

Avvio manuale (senza Docker)

  1. Creare un database MySQL e importare lo schema:
# esempio con client mysql
mysql -u root -p
CREATE DATABASE liftlog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
exit
mysql -u root -p liftlog < palumbo_585006.sql
  1. Configurare le credenziali del DB per l'app:
  • Modificare php/util/dbConfig.php oppure esportare le variabili d'ambiente richieste prima di lanciare il server PHP/Apache:
export DB_HOST=localhost
export DB_USER=tuo_utente
export DB_PASSWORD=la_tua_password
export DB_NAME=liftlog
  1. Copiare i file sotto la root del tuo webserver (es. /var/www/html) e avviare Apache/PHP.

Struttura dei file (rilevanti)

  • index.php — pagina principale / entrypoint
  • php/ — backend PHP
    • php/util/ — funzioni di utilità e accesso DB (es. liftLogDbManager.php, exerciseManagerDb.php, dbConfig.php)
    • php/ajax/ — endpoint AJAX
    • php/config.php — costanti di percorso
  • css/ — stili
  • js/ — script client
  • img/ — immagini (suddivise per categorie di esercizi e dipendenti)
  • palumbo_585006.sql — dump / script di inizializzazione del database
  • Dockerfile e docker-compose.yml — setup Docker

Configurazione del database

Il database viene inizializzato dal file palumbo_585006.sql se si usa Docker Compose (è montato in /docker-entrypoint-initdb.d/init.sql).

In esecuzione manuale, assicurati di importare palumbo_585006.sql nel database scelto e di aggiornare le variabili d'ambiente o php/util/dbConfig.php in modo che punti al database corretto.

Come usare

  • Registrati o effettua il login dalla pagina principale
  • Cerca esercizi dalla dashboard o crea una nuova scheda di allenamento
  • Gli utenti hanno il campo dipendente per distinguere trainer e clienti. I trainer compaiono nella sezione "Chi siamo" della homepage.

Note per gli sviluppatori

  • Connessioni DB: php/util/liftLogDbManager.php espone metodi per query/preparazione e protegge dagli injection tramite real_escape_string e query preparate.
  • Password: le password vengono memorizzate come SHA2(?, 512) (attenzione: per produzione è consigliabile usare password hashing moderni come password_hash() / bcrypt/argon2).

Migliorie consigliate

  • Migrare l'hashing delle password a password_hash() / password_verify().
  • Aggiungere un sistema di configurazione centralizzato (es. file .env + caricamento sicuro) e non lasciare credenziali hard-coded.
  • Aggiungere test automatici e CI.

About

Progetto del corso di Progettazione Web

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published