← Torna ai progetti Applicazione web · Automotive

V. Parrot Garage

Un catalogo veicoli con filtri avanzati, dettagli e gestione delle immagini.

V. Parrot Garage
PROGETTO

Il progetto

V. Parrot dimostra un'architettura Symfony più orientata alle applicazioni, con catalogo veicoli, filtri avanzati, dati strutturati e gestione immagini.

Architettura di Sistema & Piattaforma Gestionale

Piattaforma web completa per il settore automobilistico realizzata con Symfony 6, Doctrine ORM ed EasyAdmin 4. Unisce una vetrina commerciale ad alte conversioni, un motore di ricerca per veicoli usati in AJAX, un'area di amministrazione con ruoli (RBAC) e API REST per app mobili.

┌─────────────────────────────────────────────────────────────────────────────┐
│               Garage Vincent Parrot — Architecture Dual-Tier                │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │
           ┌───────────────────────────┼───────────────────────────┐
           ▼                           ▼                           ▼
  🚗 Moteur Véhicules & AJAX     👥 Back-Office RBAC          📡 API REST Headless
  • noUiSlider (Prix, Km, Année) • EasyAdmin 4 Dashboard      • Serializer JMS Groups
  • Dropdowns dépendants BDD    • Isolation ROLE_ADMIN/EMP   • Endpoints paginés (/api)
  • Rendu partiel JSON/Twig     • Modération avis clients    • Support Mobile & Cross-App
  • VichUploader multi-photos   • Gestion horaires & services • Sécurité CORS & CSRF
            

Motore di Ricerca AJAX

Filtro dinamico multicriterio dei veicoli con noUiSlider senza ricaricare la pagina.

Controllo Accessi a Ruoli (RBAC)

Separazione rigorosa dei privilegi tra il titolare dell'officina e i dipendenti.

API REST Disaccoppiata

Endpoint JSON protetti che alimentano l'applicazione mobile Flutter e integrazioni esterne.

1. Funzionalità del Portale Pubblico

Progettato per valorizzare le competenze dell'officina e convertire i visitatori in contatti qualificati:

CMS dei Servizi d'Officina

Presentazione dettagliata delle riparazioni (meccanica, carrozzeria, manutenzione ordinaria, aria condizionata) con gestione immagini via VichUploader.

Catalogo Veicoli Usati

Schede auto complete (/occasions/vehicule/{id}) con gallerie a carosello, specifiche tecniche e modulo di contatto precompilato.

Recensioni Clienti & Moderazione

Sistema di valutazione a 5 stelle con controllo antispam e coda di approvazione da parte dei dipendenti prima della pubblicazione.

Orari di Apertura Dinamici

Estensione Twig dedicata (HoraireExtension) che inietta in tempo reale gli orari di apertura aggiornati nel footer globale.

2. Motore di Ricerca Multicriterio in AJAX

La ricerca avanzata integra SearchData, SearchForm, VehiculeRepository::findSearch() e un controller JavaScript asincrono:

Criterio di Ricerca Componente UI Query Doctrine DQL
Fascia di Prezzo Dual-handle noUiSlider p.prix >= :prixmin AND p.prix <= :prixmax
Chilometraggio Dual-handle noUiSlider p.kilometrage >= :kmmin AND p.kilometrage <= :kmmax
Anno di Immatricolazione Dual-handle noUiSlider (1970 - 2026) p.annee >= :anneemin AND p.annee <= :anneemax
Marca & Modello Menu a tendina dipendenti dinamici (/modeles/fetch) m.id IN (:marque) AND d.id IN (:modele)
Carrozzeria, Alimentazione & Categoria Checkboxes (Carrosserie, Énergie) t.id IN (:type), a.id IN (:carburant)
// Rendu partiel asynchrone JSON dans OccasionsController.php
if ($request->get('ajax')) {
    return new JsonResponse([
        'content'    => $this->renderView('occasions/_occasions.html.twig', ['occasions' => $occasions]),
        'sorting'    => $this->renderView('occasions/_sorting.html.twig', ['occasions' => $occasions]),
        'pagination' => $this->renderView('occasions/_pagination.html.twig', ['occasions' => $occasions]),
        'prixmin'    => $prixmin, 'prixmax' => $prixmax,
        'kmmin'      => $kmmin,   'kmmax'   => $kmmax,
        'anneemin'   => $anneemin,'anneemax'=> $anneemax
    ]);
}
            

3. Controllo degli Accessi Basato sui Ruoli (RBAC)

Gestione delle autorizzazioni e delle sezioni di amministrazione tramite EasyAdmin e i firewall di Symfony Security:

ROLE_ADMIN Amministratore (Vincent Parrot)

  • Gestione account dipendenti (creazione, reset password con criteri di complessità elevati).
  • Controllo CMS totale su servizi d'officina, descrizioni e immagini.
  • Gestione degli orari di apertura settimanali e dei giorni di chiusura per ferie.
  • Consultazione e gestione delle richieste di contatto pervenute.

ROLE_EMPLOYE Dipendenti dell'Officina

  • Gestione del parco auto usate (inserimento, caricamento foto multiple, selezione optional).
  • Assegnazione automatica del dipendente autenticato come autore dell'annuncio al salvataggio.
  • Moderazione delle recensioni (approvazione delle opinioni autentiche o rifiuto dello spam).
  • Impossibilità di elevare autonomamente i propri privilegi al ruolo di Amministratore.

4. Endpoint dell'API REST Headless

Endpoint JSON sicuri per l'applicazione mobile e strumenti esterni:

Method Endpoint URL Descrizione Operazione Formato Risposta JSON
GET /api/vehicules Recupero dell'intero inventario delle vetture disponibili JSON Array (JMS getVehicules group)
GET /api/vehiculesby?page={n} Collezione paginata di veicoli per scorrimento ottimizzato { data: [...], pagination: { ... } }
GET /api/vehicules/{id} Specifiche complete e galleria immagini per un singolo ID veicolo JSON Object (Véhicule, Galerie, Options)
GET /api/marques-modeles Alberatura completa di tutte le marche e i modelli disponibili [{ id, nom, modeles: [{ id, nom }] }]
POST /api/contact Invio richiesta di contatto con notifica e-mail transazionale automatica { status: "success" } (HTTP 201)

5. Modello Dati & Relazioni Doctrine

Schema relazionale normalizzato con vincoli di integrità referenziale su MySQL:

Entità Veicolo & Media

Mappatura OneToMany a cascata verso VehiculeImage per foto multiple e ManyToMany con Employes.

Tassonomia Automobilistica

Entità normalizzate per Marque, Modele, Carburant (Benzina, Diesel, Ibrida, Elettrica), Categorie e Type.

Operazioni & Interazioni

Entità dedicate per Service, Horaire, Temoignage (con flag booleano di approvazione) e Contact.

6. Architettura SEO & Prestazioni

SEO Locale & Dati Strutturati

Markup Schema.org per le entità AutoRepair e Product/Car, densità di parole chiave incentrata sull'area di Tolosa e URL canonici puliti.

Prestazioni & Rendering Parziale

Rendering parziale in AJAX per ridurre il traffico dati durante i filtri, gestione ottimizzata delle immagini e protezione CSRF su tutti i form.

Visita la Piattaforma Live

Esplora il catalogo dei veicoli usati e prova i filtri di ricerca in tempo reale.

Visita il Sito Web dell'Officina ↗