# Project 3 - Fleet Management Portaal

## Projectbriefing

**Projectnaam**: Fleet Management Portaal "DriveSafe"

**Datum:** 18 december 2025

**Opdrachtgever:** Transportbedrijf "SnelWeg Logistiek"

**Contactpersoon:** Dhr. R. Verhoeven (Wagenparkbeheerder)

---

### 1. Achtergrond en Probleemstelling

SnelWeg Logistiek heeft 60 chauffeurs op de weg. Chauffeurs merken regelmatig gebreken op aan hun voertuig (bijv. een kapotte lamp, rammelende motor of een deuk). Momenteel worden deze gebreken doorgegeven via briefjes op het planbord of mondeling in de kantine.

Hierdoor worden reparaties vergeten, rijden chauffeurs onveilig rond en heeft de werkplaats geen overzicht van de onderhoudsdruk. Dit proces moet geprofessionaliseerd worden.

### 2. Doelstelling

Wij willen een **web-based wagenpark-portaal (DriveSafe)** laten ontwikkelen.

Chauffeurs moeten zelf eenvoudig een defect ("Melding") kunnen registreren. De werkplaats (monteurs) moet deze meldingen centraal kunnen inplannen, prioriteren en afmelden.

### 3. Doelgroepen

1. **Chauffeurs (Gebruikers):** Willen onderweg via tablet of telefoon snel een defect melden en zien wanneer hun voertuig weer veilig is.
2. **Monteurs (Beheerders):** Willen een lijst met openstaande reparaties, gesorteerd op urgentie voor de verkeersveiligheid.

### 4. Gewenste Functionaliteiten (Must-Haves)

Voor het MVP verwachten wij de volgende functies:

- **Authenticatie:**
    
    
    - Inlogscherm voor alle medewerkers.
    - Rol-verdeling in de database: `chauffeur` (user) en `monteur` (admin).
- **Voor Chauffeurs:**
    
    
    - Dashboard met overzicht van *eigen* actieve meldingen.
    - Formulier "Defect Melden" (Kenteken, Kilometerstand, Omschrijving, Type: Mechanisch/Elektrisch/Carrosserie).
    - Statusoverzicht van hun melding (bijv. "In Afwachting" of "Gereed").
- **Voor Monteurs (Admins):**
    
    
    - Centraal dashboard met *alle* defecte voertuigen van het hele bedrijf.
    - Detailpagina per melding om de reparatie te verwerken.
    - Mogelijkheid om de **Status** (Open/In Reparatie/Gereed) en **Urgentie** (Veiligheidsrisico: Ja/Nee) aan te passen.
    - Mogelijkheid om een "Monteur Notitie" (vervangen onderdelen) toe te voegen.

### 5. Technische Eisen &amp; Randvoorwaarden

- **Taal &amp; Database:** PHP (8.x) in combinatie met MySQL.
- **Code Architectuur:** Gebruik van `includes` voor navigatie en database-connectie.
- **Veiligheid:** Gebruik van `PDO` Prepared Statements is verplicht. Alle output via `htmlspecialchars()`.
- **Data Integriteit:** Elke melding moet gekoppeld zijn aan de `user_id` van de chauffeur (Relational Database ID).

### 6. Budget en Planning

- **Tijdsinvestering:** Geschat op circa **40-45 uur** ontwikkeling.
- **Oplevering:** Deadline binnen 5 weken na start.

### 7. Gevraagde actie

1. Lever een **Functioneel Ontwerp** (user stories en procesflow).
2. Lever een **Technische Schets** (ERD van de database + Wireframes).
3. Realiseer de applicatie en lever de broncode op via Git.

---

## BIJLAGE: Specifieke Design &amp; Interface Wensen

De werkplaats gebruikt grote touchscreens. De interface moet een "Industriële &amp; Clean" uitstraling hebben.

1. **Kleurcodering van Urgentie:**
    
    
    - In de lijsten moet de ernst van het defect direct visueel herkenbaar zijn:
        
        
        - *Geen risico:* Blauw of Grijs (bijv. cosmetisch defect).
        - *Aandacht nodig:* Oranje (bijv. onderhoud binnenkort).
        - *ONVEILIG / STOP:* Fel Rood (`#D32F2F`) (bijv. remproblemen).
2. **De Sidebar Navigatie:**
    
    
    - Wij willen een **vaste sidebar** aan de linkerkant (Dark Mode). Bovenin de sidebar staat het bedrijfslogo.
    - Onderin de sidebar moet de naam van de ingelogde chauffeur/monteur staan met de uitlogknop.
3. **Melding Detail Weergave (Flexbox):**
    
    
    - Bij het bekijken van een melding moet de informatie verdeeld zijn met kolommen:
        
        
        - *Links (60%):* De uitgebreide omschrijving en de werkplaats-notities.
        - *Rechts (40%):* Technische metadata (Kenteken, Kilometerstand, Datum melding).
4. **De "Workshop Quick-Filter":**
    
    
    - Boven de lijst moeten 3 tabs staan waarmee de monteur de lijst kan filteren:
        
        
        1. "Alle Voertuigen"
        2. "Directe Veiligheidsrisico's"
        3. "Wacht op Reparatie"
    - Dit moet werken via `GET` parameters in de URL (bijv: `overzicht.php?filter=gevaar`) en verwerkt worden in de SQL-query.

---

### Tips voor jouw Examenportfolio

*Waarom is deze opdracht geschikt voor je examen?*

1. **Complexiteit (W3):** De relatie tussen een voertuigmelding en de chauffeur (User ID) is een 1-op-N relatie, essentieel voor het aantonen van database-vaardigheden.
2. **SQL Parameters (W3):** Het bouwen van de "Workshop Quick-Filter" laat zien dat je veilige SQL-queries kunt schrijven op basis van URL-input.
3. **Validatie (W3):** Input zoals kilometerstanden (cijfers) en kentekens (patronen) vereisen specifieke validatie, wat een sterk punt is in je documentatie.
4. **Testen (W4):** Test scenario's: "Kan een chauffeur de reparatie-notitie van een monteur aanpassen?" of "Toont het filter correct alleen de voertuigen met een veiligheidsrisico?".