- PHP 50.1%
- TypeScript 39.9%
- JavaScript 4.9%
- CSS 3.4%
- HTML 1.7%
| .roo | ||
| backend | ||
| frontend | ||
| .gitignore | ||
| AGENTS.md | ||
| database.sql | ||
| Guide-php-config.md | ||
| README.md | ||
| Template_react_php.code-workspace | ||
DeskVerse Web
DeskVerse Web è un'applicazione web full-stack che fornisce un sistema di autenticazione utente con interfaccia moderna. Il frontend è sviluppato con React e TypeScript, mentre il backend utilizza PHP con MariaDB per la gestione del database. L'app permette la registrazione, il login e la gestione di sessioni sicure tramite cookie.
Caratteristiche Principali
- Autenticazione Utente: Registrazione e login con validazione email e password hashata.
- Gestione Sessioni: Sessioni sicure con rigenerazione ID e cookie HTTP-only.
- Interfaccia Responsiva: Utilizza Tailwind CSS per un design moderno e dark-themed.
- API RESTful: Endpoint backend per operazioni di auth con CORS abilitato.
- Contesto React: Gestione dello stato di autenticazione con React Context.
Tecnologie Utilizzate
Frontend
- React 19 con TypeScript
- Vite per il build e development server
- Tailwind CSS per lo styling
- Axios per le chiamate API
- ESLint per la linting
Backend
- PHP 8+ con PDO per il database
- MariaDB/MySQL per il storage
- Sessioni PHP con configurazione sicura
Database
- Tabella
usersper memorizzare username, email e password hashata (usandopassword_hashcon ARGON2ID).
Struttura del Progetto
DeskVerse_Web/
├── backend/
│ ├── .env # Variabili d'ambiente (DB credentials)
│ ├── .htaccess # Configurazione Apache per rewrite
│ ├── bootstrap.php # Inizializzazione CORS, env e sessioni
│ ├── db.php # Connessione PDO al database
│ └── api/
│ ├── login.php # Endpoint per login
│ ├── register.php # Endpoint per registrazione
│ ├── logout.php # Endpoint per logout
│ └── status.php # Verifica stato sessione
├── frontend/
│ ├── .env # VITE_API_URL per base URL backend
│ ├── package.json # Dipendenze e script
│ ├── vite.config.ts # Configurazione Vite
│ ├── tailwind.config.js # Configurazione Tailwind
│ ├── src/
│ │ ├── App.tsx # Componente principale (routing auth/dashboard)
│ │ ├── main.tsx # Entry point React
│ │ ├── components/
│ │ │ ├── AuthPage.tsx # Form di login/registrazione
│ │ │ └── DashboardPage.tsx # Pagina dashboard (post-login)
│ │ ├── context/
│ │ │ └── AuthContext.tsx # Provider per stato auth
│ │ └── services/
│ │ └── api.ts # Istanza Axios configurata
│ └── ... (altri file di config)
├── database.sql # Script SQL per creare tabella users
└── README.md # Questo file
Prerequisiti
- Node.js 18+ (per frontend)
- PHP 8+ con estensione PDO e MySQLi
- MariaDB/MySQL server
- Apache o server web simile (per backend)
- Composer (opzionale, non usato qui)
Installazione
-
Clona il Repository:
git clone <url-repo> cd DeskVerse_Web -
Setup Database:
- Crea un database MariaDB/MySQL (es.
deskverse_db). - Esegui lo script SQL:
mysql -u root -p deskverse_db < database.sql - Aggiorna
backend/.envcon le credenziali DB:DB_HOST=127.0.0.1 DB_NAME=deskverse_db DB_USER=tuo_user DB_PASS=tuo_password
- Crea un database MariaDB/MySQL (es.
-
Setup Backend:
- Assicurati che Apache serva la cartella
backend/(o usaphp -S localhost:8000dabackend/). - Il file
.htaccessgestisce le richieste API. - Includi
backend/bootstrap.phpin tutti gli endpoint.
- Assicurati che Apache serva la cartella
-
Setup Frontend:
- Entra nella cartella frontend:
cd frontend - Installa dipendenze:
npm install - Aggiorna
frontend/.env:
(Cambia se il backend è su un altro host/porta).VITE_API_URL=http://localhost/backend/api/
- Entra nella cartella frontend:
Esecuzione
Backend
- Avvia il server PHP (sviluppo):
cd backend php -S localhost:8000 - O configura Apache per servire
backend/come root virtuale.
Frontend
- Avvia il dev server:
cd frontend npm run dev - Apri
http://localhost:5173nel browser.
L'app caricherà la pagina di auth. Dopo login, mostrerà il dashboard.
Utilizzo
- Registrazione: Inserisci username, email e password (min 8 char).
- Login: Usa email e password.
- Logout: Chiama l'endpoint
/logout.php(implementa nel frontend se necessario). - Verifica Sessione: L'AuthContext controlla automaticamente lo status all'avvio.
Endpoint API
Tutti gli endpoint sono in backend/api/ e restituiscono JSON.
-
POST /login.php
- Body:
{ "email": "...", "password": "..." } - Response:
{ success: true, user: { id, username } }o errore.
- Body:
-
POST /register.php
- Body:
{ "username": "...", "email": "...", "password": "..." } - Response:
{ success: true, message: "..." }o errore (es. duplicati).
- Body:
-
POST /logout.php
- Distrugge la sessione.
-
GET /status.php
- Verifica se loggato:
{ loggedIn: true, user: { id, username } }.
- Verifica se loggato:
Gestione errori: HTTP codes (400, 401, 500) con { success: false, message: "..." }.
Configurazione Sicurezza
- Password: Hashate con
password_hash(PASSWORD_ARGON2ID). - Sessioni: Cookie HTTP-only, SameSite=Lax (o None per HTTPS), lifetime 24h.
- CORS: Configurato per
http://localhost:5173(aggiorna inbootstrap.phpper produzione). - Database: Usa prepared statements per prevenire SQL injection.
Per produzione:
- Abilita HTTPS.
- Cambia
Access-Control-Allow-Originda*al dominio frontend. - Usa variabili d'ambiente sicure.
Script di Build
-
Frontend:
npm run build: Build per produzione (output indist/).npm run preview: Preview build locale.
-
Backend: Nessun build; copia i file su server.
Risoluzione Problemi
- CORS Errors: Verifica
bootstrap.phpe URL frontend. - DB Connection Fail: Controlla
.enve credenziali indb.php. - Sessione Non Persiste: Assicurati
withCredentials: truein Axios e CORS headers. - Password Reset: Non implementato; estendi l'API se necessario.
Se riscontri issues, controlla i log PHP (error_log) e la console browser.
Contribuzione
- Fork il repo.
- Crea un branch:
git checkout -b feature/nome-feature. - Commit:
git commit -m "Aggiungi feature". - Push:
git push origin feature/nome-feature. - Apri una Pull Request.
Rispetta le linee guida in AGENTS.md per stile codice.