← Takaisin projekteihin Verkkosovellus · Autoteollisuus

V. Parrot Garage

Ajoneuvokatalogi, jossa on edistyneet suodattimet, ajoneuvojen tiedot ja kuvien hallinta.

V. Parrot Garage
PROJEKTI

Projekti

V. Parrot osoittaa enemmän sovellusorientoitunutta Symfony-arkkitehtuuria, jossa on ajoneuvokatalogi, edistyneet suodattimet, jäsennelty data ja kuvien hallinta.

Järjestelmäarkkitehtuuri & Liiketoiminta-alusta

Täysiverinen autoalan yritysalusta toteutettuna Symfony 6:lla, Doctrine ORM:llä ja EasyAdmin 4:llä. Yhdistää korkean konversion julkisen portaalin, AJAX-vaihtoautohakukoneen, roolipohjaisen hallinnan (RBAC) ja mobiilisovellusten REST-rajapinnat.

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

Dynaaminen monikriteerinen ajoneuvohaku noUiSliderilla ilman sivun uudelleenlatausta.

Roolipohjainen pääsynhallinta (RBAC)

Tiukka oikeuksien erottelu korjaamon omistajan ja henkilökunnan välillä.

Itsenäinen REST API

Turvalliset JSON-rajapinnat, jotka syöttävät tietoa Flutter-mobiilisovellukselle ja ulkoisille järjestelmille.

1. Julkisen portaalin ominaisuudet

Suunniteltu esittelemään korjaamon osaamista ja kääntämään kävijät tarjouspyynnöiksi:

Korjaamopalveluiden CMS

Yksilöity korjaamopalveluiden esittely (mekaniikka, peltityöt, määräaikaishuollot, ilmastointi) VichUploader-kuvanhallinnalla.

Vaihtoautojen varastoluettelo

Yksityiskohtaiset ajoneuvosivut (/occasions/vehicule/{id}) kuvakarusellilla, varustelistoilla ja esitäytetyillä lomakkeilla.

Asiakasarviot & Moderointi

5 tähden arviointijärjestelmä roskapostisuojauksella ja henkilökunnan esitarkastuksella ennen julkaisua.

Dynaamiset aukioloajat

Oma Twig-laajennus (HoraireExtension), joka näyttää automaattisesti aina ajantasaiset aukioloajat sivuston alatunnisteessa.

2. Asynkroninen AJAX-monikriteerisuodatin

Tarkennettu haku yhdistää SearchData-, SearchForm-, VehiculeRepository::findSearch() -kokonaisuuden ja asynkronisen JavaScript-ohjaimen:

Hakukriteeri Käyttöliittymäelementti Doctrine DQL -kysely
Hintahaarukka Dual-handle noUiSlider p.prix >= :prixmin AND p.prix <= :prixmax
Kilometrimäärä Dual-handle noUiSlider p.kilometrage >= :kmmin AND p.kilometrage <= :kmmax
Käyttöönottovuosi Dual-handle noUiSlider (1970 - 2026) p.annee >= :anneemin AND p.annee <= :anneemax
Merkki & Malli Dynaamisesti ketjutetut pudotusvalikot (/modeles/fetch) m.id IN (:marque) AND d.id IN (:modele)
Korimalli, Polttoaine & Luokka 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. Roolipohjainen pääsynhallinta (RBAC)

Käyttöoikeuksien ja hallintanäkymien hallinta EasyAdminin ja Symfony Security -palomuurien kautta:

ROLE_ADMIN Ylläpitäjä (Vincent Parrot)

  • Työntekijätilien hallinta (luonti, salasanan palautus tiukoilla monimutkaisuusvaatimuksilla).
  • Korjaamopalveluiden, tekstien ja kuvien täysi CMS-hallinta.
  • Viikoittaisten aukioloaikojen ja loma-aikojen poikkeusten määrittäminen.
  • Saapuneiden asiakasyhteydenottojen tarkastelu ja hallinta.

ROLE_EMPLOYE Korjaamon työntekijät

  • Vaihtoautovaraston hallinta (lisäys, useiden kuvien lataus, varustelistan määritys).
  • Kirjautuneen työntekijän automaattinen liittäminen ilmoituksen tekijäksi tallennusvaiheessa.
  • Asiakasarvioiden moderointi (aitojen arvioiden hyväksyntä tai roskapostin hylkäys).
  • Käyttöoikeustason nostaminen ylläpitäjäksi on estetty.

4. Headless REST API -rajapinnat

Turvalliset JSON-rajapinnat mobiilisovellukselle ja ulkoisille järjestelmille:

Method Endpoint URL Toiminto JSON-vastausrakenne
GET /api/vehicules Koko myynnissä olevan ajoneuvovaraston haku JSON Array (JMS getVehicules group)
GET /api/vehiculesby?page={n} Sivutettu ajoneuvolistaus sujuvaan selaamiseen { data: [...], pagination: { ... } }
GET /api/vehicules/{id} Yksittäisen ajoneuvon täydet tekniset tiedot ja kuvagalleria JSON Object (Véhicule, Galerie, Options)
GET /api/marques-modeles Kaikkien saatavilla olevien automerkkien ja mallien hierarkia [{ id, nom, modeles: [{ id, nom }] }]
POST /api/contact Asiakasyhteydenoton lähetys ja automaattinen sähköposti-ilmoitus { status: "success" } (HTTP 201)

5. Tietomalli & Doctrine-relaatiot

Normalisoitu relaatioskeema viite-eheyksillä MySQL-tietokannassa:

Vehicule & Mediatietokanta

OneToMany-kaskadi VehiculeImage-entiteettiin monikuvaustuelle ja ManyToMany-kytkös Employes-tauluun.

Automalliluokittelu

Normalisoidut entiteetit Marque, Modele, Carburant (bensiini, diesel, hybridi, sähkö), Categorie ja Type.

Toiminta & Yhteydenotot

Omat entiteetit kohteille Service, Horaire, Temoignage (hyväksymislipulla) ja Contact.

6. SEO-arkkitehtuuri & Suorituskyky

Paikallinen SEO & Rakenteinen data

Schema.org-merkinnät AutoRepair- ja Product/Car-tietotyypeille, Toulousen alueelle kohdistettu avainsanarakenne ja kanoniset URL-osoitteet.

Suorituskyky & Osittainen renderöinti

Asynkroninen osittainen AJAX-renderöinti tiedonsiirron minimoimiseksi suodatuksen aikana, kuvaoptimointi ja CSRF-suojaus kaikissa lomakkeissa.

Tutustu verkkopalveluun

Selaa vaihtoautovalikoimaa ja testaa reaaliaikaista hakusuodatinta suoraan verkossa.

Avaa autoliikkeen sivusto ↗