← Tillbaka till projekt Webbapplikation · Bil

V. Parrot Garage

En fordonskatalog med avancerade filter, fordonsdetaljer och bildhantering.

V. Parrot Garage
PROJEKT

Projektet

V. Parrot visar en mer applikationsorienterad Symfony-arkitektur med fordonskatalog, avancerade filter, strukturerad data och bildhantering.

Systemarkitektur & Företagsplattform

Helhetsplattform för bilbranschen utvecklad med Symfony 6, Doctrine ORM och EasyAdmin 4. Den kombinerar ett säljorienterat skyltfönster, en AJAX-driven begagnatbilskatalog, rollbaserad administration (RBAC) och REST-API:er för mobilappar.

┌─────────────────────────────────────────────────────────────────────────────┐
│               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
            

AJAX-sökmotor

Dynamisk flerkriteriesökning efter fordon med noUiSlider utan omladdning av sidan.

Rollbaserad åtkomstkontroll (RBAC)

Tydlig uppdelning mellan behörigheterna för verkstadsägaren och de anställda.

Fristående REST-API

Säkra JSON-slutpunkter som förser Flutter-mobilappen och externa integrationer med data.

1. Funktioner på den publika portalen

Utvecklad för att visa upp verkstadens tjänster och omvandla besökare till konkreta förfrågningar:

CMS för verkstadstjänster

Strukturerad presentation av reparationstjänster (mekaniskt arbete, kaross, periodisk service, luftkonditionering) med bildhantering via VichUploader.

Begagnatbilskatalog

Innehållsrika fordonssidor (/occasions/vehicule/{id}) med bildkarusell, tekniska specifikationer och förifyllt kontaktformulär.

Kundrecensioner & Moderering

5-stjärnigt betygssystem med spamskydd och manuellt godkännande av personalen före publicering.

Dynamiska öppettider

Eget Twig-tillägg (HoraireExtension) som automatiskt infogar uppdaterade öppettider i sidfoten på hela webbplatsen.

2. Asynkront AJAX-multikriteriefilter

Fasettsökningen kombinerar SearchData, SearchForm, VehiculeRepository::findSearch() och en asynkron JavaScript-kontroller:

Sökkriterium Gränssnittselement Doctrine DQL-fråga
Prisintervall Dual-handle noUiSlider p.prix >= :prixmin AND p.prix <= :prixmax
Miltal / Kilometer Dual-handle noUiSlider p.kilometrage >= :kmmin AND p.kilometrage <= :kmmax
Registreringsår Dual-handle noUiSlider (1970 - 2026) p.annee >= :anneemin AND p.annee <= :anneemax
Märke & Modell Dynamiskt kopplade rullgardinsmenyer (/modeles/fetch) m.id IN (:marque) AND d.id IN (:modele)
Kaross, Drivmedel & Kategori 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. Rollbaserad åtkomstkontroll (RBAC)

Hantering av behörigheter och administrationspaneler via EasyAdmin och Symfony Security-brandväggar:

ROLE_ADMIN Administratör (Vincent Parrot)

  • Hantering av anställdas konton (skapande, återställning av lösenord med strikta komplexitetskrav).
  • Full CMS-kontroll över verkstadens tjänsteutbud, texter och bilder.
  • Konfiguration av veckovisa öppettider och registrering av semesterstängt.
  • Granskning och hantering av inkomna kundförfrågningar.

ROLE_EMPLOYE Verkstadsanställda

  • Hantering av begagnade bilar (skapande, uppladdning av flera bilder, val av utrustning).
  • Automatisk koppling av inloggad anställd som författare vid sparande i databasen.
  • Moderering av kundrecensioner (godkänna äkta omdömen eller avvisa skräppost).
  • Ingen möjlighet att höja de egna behörigheterna till administratörsnivå.

4. Headless REST API-slutpunkter

Säkra JSON-slutpunkter för mobilapplikationen och externa integrationer:

Method Endpoint URL Syfte JSON-svarsformat
GET /api/vehicules Hämta hela lagret av tillgängliga fordon JSON Array (JMS getVehicules group)
GET /api/vehiculesby?page={n} Paginerad fordonslista för smidig inläsning { data: [...], pagination: { ... } }
GET /api/vehicules/{id} Fullständiga specifikationer och bildgalleri för ett specifikt fordons-ID JSON Object (Véhicule, Galerie, Options)
GET /api/marques-modeles Komplett hierarki över bilmärken och tillhörande modeller [{ id, nom, modeles: [{ id, nom }] }]
POST /api/contact Skicka kundförfrågan med automatiskt e-postmeddelande { status: "success" } (HTTP 201)

5. Datamodell & Doctrine-relationer

Normaliserat relationsschema med referensintegritet i MySQL:

Fordon & Medie-entitet

OneToMany-kaskad till VehiculeImage för flera bilder och ManyToMany-koppling till Employes.

Fordonstaxonomi

Normaliserade entiteter för Marque, Modele, Carburant (Bensin, Diesel, Hybrid, Elbil), Categorie och Type.

Drift & Förfrågningar

Egna entiteter för Service, Horaire, Temoignage (med godkännandeflagga) och Contact.

6. SEO-arkitektur & Prestanda

Lokal SEO & Strukturerad data

Schema.org-metadata för AutoRepair och Product/Car, målinriktad sökordsdensitet för Toulouse-området och rena kanoniska adresser.

Prestanda & Partiell rendering

Asynkron partiell AJAX-rendering för att minska datatrafik under filtrering, optimerad bildhantering och CSRF-skydd.

Besök den operativa plattformen

Se begagnatbilskatalogen och testa realtidsfiltreringen direkt på webben.

Gå till verkstadens webbplats ↗