Een Laravel applicatie voor het beheren van klanten, ontwikkeld als leeromgeving voor studenten om te oefenen met Laravel, Livewire en moderne web development technieken.
Deze applicatie is een Customer Management Systeem dat dient als praktijkomgeving voor studenten om hun Laravel vaardigheden te ontwikkelen. Het bevat zowel een functioneel klantenbeheer systeem als een interactieve opdrachten pagina waar studenten kunnen oefenen met verschillende Laravel concepten.
- Leeromgeving: Biedt studenten een praktische omgeving om Laravel te leren door middel van hands-on opdrachten
- Customer Management: Functioneel systeem voor het beheren van klantgegevens met filtering, paginatie en detailweergave
- Moderne Stack: Gebruikt moderne Laravel technologieΓ«n zoals Livewire, Flux UI en Eloquent ORM
- π Dashboard met klantstatistieken
- π₯ Klantenoverzicht met geavanceerde filtering (zoeken, status, stad, land)
- π Zoekfunctionaliteit op naam, email en bedrijf
- π Paginatie voor grote datasets
- π Detailweergave in modals
- π± Responsive design voor alle apparaten
- π 21 praktische opdrachten verdeeld in twee categorieΓ«n:
- 11 Uitzoek Opdrachten: Vragen over hoe de applicatie werkt (code analyse)
- 10 Doe Opdrachten: Implementatie opdrachten om nieuwe functionaliteit toe te voegen
- π‘ Stap-voor-stap hints voor elke opdracht
- β Progress tracking met status (voltooid/vastgelopen/pending)
- πΎ Automatisch opslaan van voortgang en antwoorden in localStorage
- π Antwoordvelden voor uitzoek-opdrachten
- π Inloggen/Registreren met Laravel Fortify
- π€ Profiel beheer
- π Wachtwoord wijzigen
- βοΈ Instellingen (appearance, profile)
- Backend: Laravel 12.x
- Frontend: Livewire 3.x, Flux UI
- Database: SQLite (standaard), MySQL/PostgreSQL mogelijk
- Authentication: Laravel Fortify
- Styling: Tailwind CSS (via Flux UI)
- JavaScript: Alpine.js
- Testing: Pest PHP
Voordat je begint, zorg ervoor dat je de volgende software op je systeem hebt geΓ―nstalleerd:
- PHP >= 8.2
- Composer (latest version)
- Node.js >= 18.x en npm
- SQLite (meestal al geΓ―nstalleerd op Linux/Mac, voor Windows kan SQLite nodig zijn)
Optioneel:
- Git (voor versiebeheer)
Volg deze stappen om de applicatie lokaal te draaien:
Als je Git gebruikt:
git clone <repository-url>
cd customersOf download en pak het project uit in een directory naar keuze.
composer installDit installeert alle benodigde PHP packages zoals Laravel, Livewire, Flux UI, etc.
cp .env.example .envOf op Windows:
copy .env.example .envphp artisan key:generateDit genereert een unieke applicatie sleutel die nodig is voor encryptie.
De applicatie gebruikt SQLite als standaard database. Maak het database bestand aan:
touch database/database.sqliteOf op Windows:
type nul > database\database.sqliteAls je SQLite gebruikt (standaard), hoef je niets te wijzigen in .env. Het database pad staat al goed:
DB_CONNECTION=sqlite
DB_DATABASE=database/database.sqlite
Als je MySQL of PostgreSQL wilt gebruiken, pas dan de database instellingen aan in .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_username
DB_PASSWORD=your_passwordDit maakt alle database tabellen aan:
php artisan migrateDit vult de database met testdata (400 fake klanten en een test gebruiker):
php artisan db:seedOf gebruik:
php artisan migrate:fresh --seedDit reset de database en seed opnieuw (handig tijdens ontwikkeling).
npm installVoor development:
npm run devDit start Vite in watch mode, zodat CSS/JS automatisch worden gecompileerd bij wijzigingen.
Voor production:
npm run buildDit compileert en minified alle assets eenmalig.
In een nieuwe terminal, start de Laravel server:
php artisan serveDe applicatie is nu beschikbaar op: http://localhost:8000
Tip: Als je zowel
npm run devalsphp artisan servewilt draaien, open dan twee terminal vensters, of gebruik decomposer devcommand die beide tegelijk start.
Na het seeden van de database is er een test gebruiker aangemaakt:
- Email:
test@example.com - Wachtwoord:
password
Je kunt direct inloggen met deze credentials, of je kunt een nieuw account aanmaken via de registratie pagina.
customers/
βββ app/
β βββ Livewire/
β β βββ Customers/
β β βββ Index.php # Customer listing component
β βββ Models/
β β βββ Customer.php # Customer model
β β βββ User.php # User model
β βββ ...
βββ database/
β βββ migrations/ # Database migrations
β βββ seeders/
β β βββ CustomerSeeder.php # Seeds 400 customers
β β βββ DatabaseSeeder.php # Main seeder
β βββ factories/
β βββ CustomerFactory.php # Customer factory voor fake data
βββ resources/
β βββ views/
β β βββ welcome.blade.php # Landing page
β β βββ opdrachten.blade.php # Studenten opdrachten pagina
β β βββ dashboard.blade.php # Dashboard
β β βββ livewire/
β β βββ customers/
β β βββ index.blade.php # Customer listing view
β βββ ...
βββ routes/
β βββ web.php # Web routes
βββ ...
Bezoek /opdrachten voor de interactieve opdrachten hub. Hier vind je:
-
Uitzoek Opdrachten: Beantwoord vragen over hoe de applicatie werkt
- Analyseer de codebase
- Beantwoord vragen in de tekstvelden
- Antwoorden worden automatisch opgeslagen
-
Doe Opdrachten: Implementeer nieuwe functionaliteit
- Volg de beschrijving en hints
- Pas de code aan
- Markeer opdrachten als voltooid of vastgelopen
- Nieuwe klant toevoegen
- Klantgegevens bewerken
- Filtering verbeteren
- Export functionaliteit
- Dashboard statistieken
- En nog veel meer!
Run de tests met:
php artisan testOf met Pest specifiek:
./vendor/bin/pestphp artisan migrate:fresh --seedphp artisan config:clear
php artisan cache:clear
php artisan view:clearphp artisan make:livewire ComponentNamephp artisan make:migration create_table_name- Maak een migration:
php artisan make:migration add_field_to_customers_table - Voeg het veld toe aan
app/Models/Customer.phpin$fillable - Update de factory in
database/factories/CustomerFactory.php - Update de views in
resources/views/livewire/customers/
Bewerk resources/views/opdrachten.blade.php en voeg nieuwe opdrachten toe aan de uitzoekOpdrachten of doeOpdrachten arrays in de JavaScript functie.
Oplossing: Run composer dump-autoload
Oplossing: Zorg dat database/database.sqlite bestaat (zie Stap 5)
Oplossing: Run npm run build of npm run dev in een aparte terminal
Oplossing: Run chmod -R 775 storage bootstrap/cache (Linux/Mac)
Oplossing: Gebruik een andere poort: php artisan serve --port=8001
Dit project is open source en beschikbaar onder de MIT licentie.
- Begin met de uitzoek-opdrachten: Dit helpt je begrijpen hoe de applicatie werkt
- Gebruik de hints: Elke opdracht heeft stap-voor-stap instructies
- Test je code: Zorg dat alles werkt voordat je doorgaat
- Experimenteer: Voeg extra features toe die niet in de opdrachten staan
- Lees de code: Bekijk hoe bestaande functionaliteit is geΓ―mplementeerd
Veel succes met leren! π