Skip to content

twofacednine380/LeadCommerce

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LeadCommerce - Sistema di Gestione Ordini

DB Schema

Descrizione del Progetto

LeadCommerce è un'applicazione e-commerce full-stack realizzata in PHP (senza framework) e JavaScript (jQuery + Bootstrap), con MySQL come backend per la persistenza dei dati.

Il progetto simula un sistema reale di gestione ordini, carrelli e prodotti per un negozio online.


Traccia Richiesta

Realizza un'applicazione PHP e JS che simuli un sistema di gestione ordini per un negozio online. Deve:

  • Visualizzare un catalogo di prodotti da DB
  • Consentire aggiunta prodotti al carrello
  • Applicare uno sconto se il totale supera 100€
  • Mostrare un riepilogo ordine
  • Salvare l'ordine via AJAX in MySQL

Tutti i requisiti richiesti sono stati svolti, includendo funzionalità aggiuntive (es. registrazione utente, gestione stock, checkout completo).


Ruoli Gestiti

  • Admin: tramite pannello dedicato, gestisce prodotti, ordini, utenti, metodi di pagamento e spedizione.
  • Cliente: può acquistare come guest o registrarsi. Gestisce profilo, ordini e indirizzi.

Database: Tabelle e Relazioni

lc_user_admin

Gestione degli amministratori del sistema. Sicurezza tramite hash password (bcrypt).

lc_customer

Gestione clienti registrati o guest. Permette upgrade automatico da guest a registrato.

lc_product

Contiene informazioni di catalogo: nome, descrizione, prezzi, stock, SEO, SKU.

lc_cart & lc_cart_item

Carrello utente, persistente tramite session_token, salvato anche su DB. Supporta sessioni guest o clienti loggati.

lc_order & lc_order_line_item

Rappresentano un ordine completato, con linee d'ordine separate per ogni prodotto.

lc_shipping_address & lc_billing_address

Indirizzi associati all'ordine. Gestione separata spedizione / fatturazione.

lc_shipping_method & lc_payment_method

Metodi gestibili da backend. Possono essere abilitati/disabilitati, con costi e provider personalizzati.

lc_settings

Configurazione dinamica (es. soglia sconto 100€, percentuale sconto 10%).


Funzionalità Utente

  • Visualizzazione prodotti con prezzi scontati
  • Aggiunta al carrello (via AJAX)
  • Calcolo automatico sconto 10% oltre i 100€ // questa è personalizzabile da settings dal pannello admin
  • Checkout con inserimento indirizzi, metodi di pagamento e spedizione
  • Salvataggio ordine in DB, aggiornamento stock
  • Riepilogo ordine dettagliato
  • Registrazione/login facoltativa

Admin Dashboard

  • Gestione login sicuro
  • CRUD prodotti
  • Visualizzazione e dettaglio ordini
  • Gestione clienti
  • Configurazione metodi di pagamento/spedizione
  • Impostazioni (sconto, soglie, ecc.)

Tecnologie Utilizzate

  • PHP 8 (puro, MVC custom)
  • MySQL 8+
  • jQuery 3.7.1
  • Bootstrap 4
  • AJAX
  • Sessioni PHP

Relazioni Chiave

  • lc_cart.customer_id → lc_customer.id (nullable per guest)
  • lc_cart_item.cart_id → lc_cart.id
  • lc_cart_item.product_id → lc_product.id
  • lc_order.customer_id → lc_customer.id
  • lc_order.shipping_method_id → lc_shipping_method.id
  • lc_order.payment_method_id → lc_payment_method.id
  • lc_order_line_item.order_id → lc_order.id

File utili

  • storage/uploads/db-schema.png: schema ER
  • /app/controllers/*: logica applicativa suddivisa per ruoli
  • /app/models/user/UserCart.php: cuore della logica carrello/ordine

Getting Started

Di seguito i passaggi per l'utilizzo

1. Clona il progetto

git clone https://github.com/tuo-utente/lead-commerce.git
cd lead-commerce

2. Importa il database

mysql -u root -p nome_database < sql/lead-commerce.sql
  • Nota: Assicurati di aver creato il database nome_database prima di eseguire il comando.

3. Configura la connessione al DB

Copia il file di configurazione locale:

cp config/config.local.php config/config.php

Modifica config/config.php con i tuoi parametri MySQL:

define('DB_DRIVER', 'mysql');
define('DB_HOST', 'localhost');
define('DB_NAME', 'leadtechdb');
define('DB_USER', 'leadtech');
define('DB_PASS', 'leadtech');

define('DISCOUNT_TRESHOLD', 100);
define('DISCOUNT_PERCENTAGE', 10);

4. Credenziali Predefinite

• Admin • Email: admin@leadtech.it • Password: leadtechadmin

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors