Files
2025-08-27 09:17:56 +02:00

295 lines
9.6 KiB
Markdown

# 🚲 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 <repository-url>
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