9.6 KiB
9.6 KiB
🚲 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
git clone <repository-url>
cd fiets-service
2. Backend Setup (Laravel)
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)
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 ophalenPOST /api/service-requests- Nieuwe service aanvraag aanmakenGET /api/service-requests/{id}- Specifieke service aanvraag ophalenPUT /api/service-requests/{id}- Service aanvraag bijwerkenDELETE /api/service-requests/{id}- Service aanvraag verwijderenPOST /api/service-requests/{id}/send-email- E-mail naar klant versturenPOST /api/service-requests/{id}/send-sms- SMS naar klant versturenGET /api/service-requests/{id}/communications- Communicatie geschiedenis ophalen
Geblokkeerde Data
GET /api/blocked-dates- Alle geblokkeerde data ophalenPOST /api/blocked-dates- Nieuwe geblokkeerde datum aanmakenGET /api/blocked-dates/{id}- Specifieke geblokkeerde datum ophalenPUT /api/blocked-dates/{id}- Geblokkeerde datum bijwerkenDELETE /api/blocked-dates/{id}- Geblokkeerde datum verwijderenPOST /api/blocked-dates/check-date- Controleren of specifieke datum geblokkeerd is
Instellingen
GET /api/settings- Alle instellingen ophalenPOST /api/settings- Nieuwe instelling aanmakenGET /api/settings/{id}- Specifieke instelling ophalenPUT /api/settings/{id}- Instelling bijwerkenDELETE /api/settings/{id}- Instelling verwijderenGET /api/settings/key/{key}- Instelling ophalen op sleutelPUT /api/settings/key/{key}- Instelling bijwerken op sleutel
📱 Applicatie Flow
Klant Journey
- Home Pagina Bezoeken: Fiets service informatie en functies bekijken
- Navigeren naar Boeken: Klik op "Nu Service Boeken" knop
- Service Formulier Invullen: Alle verplichte velden invullen
- Aanvraag Verzenden: Formulier validatie en verzending
- Bevestiging: Succes bericht met aanvraag ID
Beheer Workflow
- Beheer Paneel Toegang: Navigeer naar beheer sectie
- Aanvragen Bekijken: Alle service aanvragen in tabelformaat zien
- Aanvragen Beheren: Klik op rijen om details te bekijken/bewerken
- Communiceren: E-mails/SMS naar klanten versturen
- Data Blokkeren: Voorkom boeking op specifieke data
- 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
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
cd frontend
# Bouwen voor productie
npm run build
# Productie build preview
npm run preview
# Linting problemen controleren
npm run lint
🚀 Productie Deployment
Backend (Laravel)
- Stel
APP_ENV=productionin in.env - Voer
composer install --optimize-autoloader --no-devuit - Stel je webserver (Apache/Nginx) in om naar de
publicdirectory te wijzen - Configureer je database verbinding
- Stel e-mail en SMS services in voor productie gebruik
Frontend (Vue.js)
- Voer
npm run builduit - Deploy de
distfolder naar je webserver - 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
- Fork de repository
- Maak een feature branch
- Maak je wijzigingen
- Voeg tests toe indien van toepassing
- Dien een pull request in
📄 Licentie
Dit project is open-source software gelicentieerd onder de MIT licentie.
🆘 Ondersteuning
Als je problemen tegenkomt of vragen hebt:
- Bekijk de Laravel en Vue.js documentatie
- Controleer de error logs in de browser console en Laravel logs
- Zorg ervoor dat alle dependencies correct zijn geïnstalleerd
- Verifieer dat beide servers draaien op de juiste poorten
- Controleer database verbinding en migraties
🔗 Nuttige Links
🎯 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