# 🚲 Fiets Service Applicatie Een moderne full-stack fiets service beheer applicatie gebouwd met Vue.js 3 aan de voorkant en Laravel 12 aan de achterkant. ## πŸš€ Functies ### Klantenzijde - **Service Aanvraag Formulier**: Gebruiksvriendelijk formulier voor het boeken van fietsreparaties - **Verplichte Velden**: Naam, adres, plaats, reparatie beschrijving, datum en tijd - **Contactinformatie**: E-mail of telefoon (ten minste één verplicht) - **Datum Validatie**: Kan geen data in het verleden boeken - **Succes Bevestiging**: Duidelijke feedback wanneer aanvraag is verzonden ### Beheerzijde - **Service Aanvraag Beheer**: Bekijk alle ingediende aanvragen in tabelformaat - **Aanvraag Details**: Klik op elke rij om volledige aanvraaginformatie te zien - **Status Beheer**: Update aanvraag status (in afwachting, bevestigd, voltooid, geannuleerd) - **Reparatie Planning**: Stel werkelijke reparatie datum en tijd in - **Communicatie Tools**: Verstuur e-mails en SMS naar klanten - **Communicatie Geschiedenis**: Bekijk alle communicatie records - **Geblokkeerde Data**: Blokkeer specifieke data van boeking - **Instellingen Beheer**: Configureer beheerder notificatie e-mail en bedrijfsdetails ### Technische Functies - **Frontend**: Vue.js 3 met Composition API, Vue Router 4 en Pinia - **Backend**: Laravel 12 met RESTful API endpoints - **Database**: SQLite met Eloquent ORM - **Build Tool**: Vite voor snelle ontwikkeling en geoptimaliseerde builds - **Responsive Design**: Werkt op alle apparaten - **Real-time Updates**: Onmiddellijke feedback voor alle acties - **Nederlandse Taal**: Volledig in het Nederlands voor Nederlandse klanten ## πŸ—οΈ Project Structuur ``` fiets-service/ β”œβ”€β”€ backend/ # Laravel backend applicatie β”‚ β”œβ”€β”€ app/ β”‚ β”‚ β”œβ”€β”€ Http/Controllers/ β”‚ β”‚ β”‚ β”œβ”€β”€ ServiceRequestController.php β”‚ β”‚ β”‚ β”œβ”€β”€ BlockedDateController.php β”‚ β”‚ β”‚ └── SettingController.php β”‚ β”‚ └── Models/ β”‚ β”‚ β”œβ”€β”€ ServiceRequest.php β”‚ β”‚ β”œβ”€β”€ BlockedDate.php β”‚ β”‚ β”œβ”€β”€ Communication.php β”‚ β”‚ └── Setting.php β”‚ β”œβ”€β”€ database/ β”‚ β”‚ β”œβ”€β”€ migrations/ β”‚ β”‚ β”‚ β”œβ”€β”€ create_service_requests_table.php β”‚ β”‚ β”‚ β”œβ”€β”€ create_blocked_dates_table.php β”‚ β”‚ β”‚ β”œβ”€β”€ create_communications_table.php β”‚ β”‚ β”‚ └── create_settings_table.php β”‚ β”‚ └── seeders/ β”‚ β”‚ β”œβ”€β”€ DatabaseSeeder.php β”‚ β”‚ └── SettingsSeeder.php β”‚ β”œβ”€β”€ routes/ β”‚ β”‚ └── api.php β”‚ └── .env β”œβ”€β”€ frontend/ # Vue.js frontend applicatie β”‚ β”œβ”€β”€ src/ β”‚ β”‚ β”œβ”€β”€ views/ β”‚ β”‚ β”‚ β”œβ”€β”€ Home.vue β”‚ β”‚ β”‚ β”œβ”€β”€ Booking.vue β”‚ β”‚ β”‚ └── Admin.vue β”‚ β”‚ β”œβ”€β”€ router/ β”‚ β”‚ β”‚ └── index.js β”‚ β”‚ β”œβ”€β”€ assets/ β”‚ β”‚ β”‚ └── main.css β”‚ β”‚ β”œβ”€β”€ App.vue β”‚ β”‚ └── main.js β”‚ β”œβ”€β”€ index.html β”‚ β”œβ”€β”€ package.json β”‚ └── vite.config.js └── README.md ``` ## πŸ› οΈ Vereisten - PHP 8.1+ met Composer - Node.js 18+ met npm - SQLite (inbegrepen bij PHP) ## πŸ“¦ Installatie ### 1. Repository klonen ```bash git clone cd fiets-service ``` ### 2. Backend Setup (Laravel) ```bash cd backend # PHP dependencies installeren composer install # Environment bestand kopiΓ«ren cp .env.example .env # Applicatie sleutel genereren php artisan key:generate # Database migraties uitvoeren php artisan migrate # Database seeden met initiΓ«le instellingen php artisan db:seed # Development server starten php artisan serve --host=0.0.0.0 --port=8000 ``` De Laravel backend zal beschikbaar zijn op `http://localhost:8000` ### 3. Frontend Setup (Vue.js) ```bash cd frontend # Node.js dependencies installeren npm install # Development server starten npm run dev ``` De Vue.js frontend zal beschikbaar zijn op `http://localhost:3000` ## 🌐 API Endpoints ### Service Aanvragen - `GET /api/service-requests` - Alle service aanvragen ophalen - `POST /api/service-requests` - Nieuwe service aanvraag aanmaken - `GET /api/service-requests/{id}` - Specifieke service aanvraag ophalen - `PUT /api/service-requests/{id}` - Service aanvraag bijwerken - `DELETE /api/service-requests/{id}` - Service aanvraag verwijderen - `POST /api/service-requests/{id}/send-email` - E-mail naar klant versturen - `POST /api/service-requests/{id}/send-sms` - SMS naar klant versturen - `GET /api/service-requests/{id}/communications` - Communicatie geschiedenis ophalen ### Geblokkeerde Data - `GET /api/blocked-dates` - Alle geblokkeerde data ophalen - `POST /api/blocked-dates` - Nieuwe geblokkeerde datum aanmaken - `GET /api/blocked-dates/{id}` - Specifieke geblokkeerde datum ophalen - `PUT /api/blocked-dates/{id}` - Geblokkeerde datum bijwerken - `DELETE /api/blocked-dates/{id}` - Geblokkeerde datum verwijderen - `POST /api/blocked-dates/check-date` - Controleren of specifieke datum geblokkeerd is ### Instellingen - `GET /api/settings` - Alle instellingen ophalen - `POST /api/settings` - Nieuwe instelling aanmaken - `GET /api/settings/{id}` - Specifieke instelling ophalen - `PUT /api/settings/{id}` - Instelling bijwerken - `DELETE /api/settings/{id}` - Instelling verwijderen - `GET /api/settings/key/{key}` - Instelling ophalen op sleutel - `PUT /api/settings/key/{key}` - Instelling bijwerken op sleutel ## πŸ“± Applicatie Flow ### Klant Journey 1. **Home Pagina Bezoeken**: Fiets service informatie en functies bekijken 2. **Navigeren naar Boeken**: Klik op "Nu Service Boeken" knop 3. **Service Formulier Invullen**: Alle verplichte velden invullen 4. **Aanvraag Verzenden**: Formulier validatie en verzending 5. **Bevestiging**: Succes bericht met aanvraag ID ### Beheer Workflow 1. **Beheer Paneel Toegang**: Navigeer naar beheer sectie 2. **Aanvragen Bekijken**: Alle service aanvragen in tabelformaat zien 3. **Aanvragen Beheren**: Klik op rijen om details te bekijken/bewerken 4. **Communiceren**: E-mails/SMS naar klanten versturen 5. **Data Blokkeren**: Voorkom boeking op specifieke data 6. **Instellingen Bijwerken**: Configureer applicatie parameters ## 🎨 UI Componenten - **Responsive Navigatie**: Moderne navigatie met fiets service branding - **Service Aanvraag Formulier**: Schoon, gebruiksvriendelijk boekingsformulier - **Beheer Dashboard**: Tabbed interface voor verschillende beheergebieden - **Data Tabellen**: Sorteerbare tabellen met actie knoppen - **Modal Dialogen**: Popup formulieren voor gedetailleerde weergaven en acties - **Status Indicatoren**: Kleurgecodeerde status badges - **Actie Knoppen**: Context-bewuste knoppen met juiste statussen ## πŸ”§ Ontwikkeling ### Backend Ontwikkeling ```bash cd backend # Tests uitvoeren php artisan test # Cache legen php artisan cache:clear # Routes bekijken php artisan route:list # Database operaties php artisan migrate:status php artisan db:seed ``` ### Frontend Ontwikkeling ```bash cd frontend # Bouwen voor productie npm run build # Productie build preview npm run preview # Linting problemen controleren npm run lint ``` ## πŸš€ Productie Deployment ### Backend (Laravel) 1. Stel `APP_ENV=production` in in `.env` 2. Voer `composer install --optimize-autoloader --no-dev` uit 3. Stel je webserver (Apache/Nginx) in om naar de `public` directory te wijzen 4. Configureer je database verbinding 5. Stel e-mail en SMS services in voor productie gebruik ### Frontend (Vue.js) 1. Voer `npm run build` uit 2. Deploy de `dist` folder naar je webserver 3. Configureer je webserver om Vue Router's history mode te handlen ## πŸ“§ E-mail & SMS Integratie De applicatie is ontworpen om te integreren met e-mail en SMS services: - **E-mail**: Configureer SMTP instellingen in Laravel voor klant notificaties - **SMS**: Integreer met services zoals Twilio, Vonage of vergelijkbaar - **Beheerder Notificaties**: Automatische e-mails wanneer nieuwe service aanvragen worden ingediend ## πŸ”’ Beveiligings Functies - **Input Validatie**: Server-side validatie voor alle formulier inputs - **CSRF Bescherming**: Laravel's ingebouwde CSRF bescherming - **SQL Injectie Preventie**: Eloquent ORM met parameter binding - **XSS Bescherming**: Vue.js automatische HTML escaping ## πŸ“± Browser Ondersteuning - Chrome (laatste) - Firefox (laatste) - Safari (laatste) - Edge (laatste) - Mobiele browsers (iOS Safari, Chrome Mobile) ## 🀝 Bijdragen 1. Fork de repository 2. Maak een feature branch 3. Maak je wijzigingen 4. Voeg tests toe indien van toepassing 5. Dien een pull request in ## πŸ“„ Licentie Dit project is open-source software gelicentieerd onder de [MIT licentie](LICENSE). ## πŸ†˜ Ondersteuning Als je problemen tegenkomt of vragen hebt: 1. Bekijk de Laravel en Vue.js documentatie 2. Controleer de error logs in de browser console en Laravel logs 3. Zorg ervoor dat alle dependencies correct zijn geΓ―nstalleerd 4. Verifieer dat beide servers draaien op de juiste poorten 5. Controleer database verbinding en migraties ## πŸ”— Nuttige Links - [Vue.js Documentatie](https://vuejs.org/) - [Laravel Documentatie](https://laravel.com/docs) - [Vite Documentatie](https://vitejs.dev/) - [Fiets Service Zakelijke Gids](https://example.com/fiets-service-gids) ## 🎯 Toekomstige Verbeteringen - **Klant Portaal**: Laat klanten hun service aanvragen volgen - **Betaling Integratie**: Online betalingsverwerking - **Voorraad Beheer**: Fiets onderdelen en voorraden bijhouden - **Rapportage**: Analytics en zakelijke inzichten - **Mobiele App**: Native mobiele applicaties - **Meertalige Ondersteuning**: Internationalisering - **Geavanceerde Planning**: Kalender integratie en beschikbaarheid beheer