← Tilbake til prosjekter Webapplikasjon · Bil

V. Parrot Garage

En kjøretøykatalog med avanserte filtre, kjøretøydetaljer og bildebehandling.

V. Parrot Garage
PROSJEKT

Prosjektet

V. Parrot viser en mer applikasjonsorientert Symfony-arkitektur med bilkatalog, avanserte filtre, strukturert data og bildebehandling.

Systemarkitektur & Forretningsplattform

Helhetlig forretningsplattform for bilbransjen utviklet med Symfony 6, Doctrine ORM og EasyAdmin 4. Den kombinerer et salgsorientert utstillingsvindu, en AJAX-drevet bruktbilkatalog, rollebasert administrasjon (RBAC) og REST-API-er for mobilapper.

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

Dynamisk flerkriteriesøk etter biler med noUiSlider uten ny sidelasting.

Rollebasert tilgangskontroll (RBAC)

Tydelig skille mellom rettighetene til verkstedeieren og de ansatte.

Frakoblet REST-API

Sikre JSON-endepunkter som forsyner Flutter-mobilappen og eksterne integrasjoner.

1. Funksjoner på den offentlige portalen

Utviklet for å presentere verkstedets tjenester og konvertere besøkende til konkrete henvendelser:

CMS for verkstedtjenester

Strukturert fremstilling av reparasjonstjenester (mekanisk arbeid, karosseri, periodisk service, klimaanlegg) med bildeopplasting via VichUploader.

Bruktbilkatalog

Innholdsrike bilsider (/occasions/vehicule/{id}) med bildekarusell, tekniske spesifikasjoner og forhåndsutfylt henvendelsesskjema.

Kundeomtaler & Moderasjon

5-stjerners vurderingssystem med spam-beskyttelse og manuell godkjenning av de ansatte før publisering.

Dynamiske åpningstider

Eget Twig-tillegg (HoraireExtension) som automatisk legger inn oppdaterte åpningstider i bunnteksten på hele nettstedet.

2. Asynkront AJAX-multikriteriefilter

Fasettsøket kombinerer SearchData, SearchForm, VehiculeRepository::findSearch() og en asynkron JavaScript-kontroller:

Søkekriterium Grensesnittelement Doctrine DQL-spørring
Prisintervall Dual-handle noUiSlider p.prix >= :prixmin AND p.prix <= :prixmax
Kilometerstand Dual-handle noUiSlider p.kilometrage >= :kmmin AND p.kilometrage <= :kmmax
Førstegangsregistrering Dual-handle noUiSlider (1970 - 2026) p.annee >= :anneemin AND p.annee <= :anneemax
Merke & Modell Dynamisk koblede nedtrekksmenyer (/modeles/fetch) m.id IN (:marque) AND d.id IN (:modele)
Karosseri, Drivstoff & 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. Rollebasert tilgangskontroll (RBAC)

Håndtering av rettigheter og administrasjonspanel via EasyAdmin og Symfony Security-brannmurer:

ROLE_ADMIN Administrator (Vincent Parrot)

  • Administrasjon av ansattekontoer (opprettelse, tilbakestilling av passord med strenge kompleksitetskrav).
  • Full CMS-kontroll over verkstedets tjenestetilbud, tekster og bilder.
  • Oppsett av ukentlige åpningstider og registrering av feriestengt.
  • Gjennomgang og behandling av mottatte kundehenvendelser.

ROLE_EMPLOYE Verkstedansatte

  • Administrasjon av bruktbiler (opprettelse, opplasting av flere bilder, valg av utstyr).
  • Automatisk tildeling av innlogget ansatt som forfatter ved lagring i databasen.
  • Moderasjon av kundeomtaler (godkjenne ekte anmeldelser eller avvise useriøse).
  • Ingen mulighet til å heve egne rettigheter til administratornivå.

4. Headless REST API-endepunkter

Sikre JSON-endepunkter for mobilapplikasjonen og eksterne integrasjoner:

Method Endpoint URL Formål JSON-responsformat
GET /api/vehicules Hente hele beholdningen av tilgjengelige biler JSON Array (JMS getVehicules group)
GET /api/vehiculesby?page={n} Paginert billiste for smidig innlasting { data: [...], pagination: { ... } }
GET /api/vehicules/{id} Fullstendige spesifikasjoner og bildegalleri for en enkelt bil-ID JSON Object (Véhicule, Galerie, Options)
GET /api/marques-modeles Komplett hierarki over bilmerker og tilhørende modeller [{ id, nom, modeles: [{ id, nom }] }]
POST /api/contact Sende kundehenvendelse med automatisk utsendelse av e-postvarsel { status: "success" } (HTTP 201)

5. Datamodell & Doctrine-relasjoner

Normalisert relasjonsskjema med referanseintegritet i MySQL:

Kjøretøy & Medie-entitet

OneToMany-kaskade til VehiculeImage for flere bilder og ManyToMany-kobling til Employes.

Kjøretøytaksonomi

Normaliserte entiteter for Marque, Modele, Carburant (Bensin, Diesel, Hybrid, Elbil), Categorie og Type.

Drift & Henvendelser

Egne entiteter for Service, Horaire, Temoignage (med godkjenningsflagg) og Contact.

6. SEO-arkitektur & Ytelse

Lokal SEO & Strukturerte data

Schema.org-metadata for AutoRepair og Product/Car, målrettet søkeordtetthet for Toulouse-området og rene kanoniske adresser.

Ytelse & Delvis rendering

Asynkron delvis AJAX-rendering for å redusere datatrafikk under filtrering, optimalisert bildehåndtering og CSRF-beskyttelse.

Besøk den operative plattformen

Se bruktbilkatalogen og test sanntidsfiltreringen direkte på nett.

Gå til verkstedets nettsted ↗