Skip to content

curio-lesmateriaal/customers

Repository files navigation

Laravel Customer Management - Studenten Hub

Een Laravel applicatie voor het beheren van klanten, ontwikkeld als leeromgeving voor studenten om te oefenen met Laravel, Livewire en moderne web development technieken.

πŸ“‹ Over de Applicatie

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.

Doel van de Applicatie

  • 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

✨ Features

Customer Management

  • πŸ“Š 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

Studenten Opdrachten Hub

  • πŸ“ 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

Authenticatie & Gebruikersbeheer

  • πŸ” Inloggen/Registreren met Laravel Fortify
  • πŸ‘€ Profiel beheer
  • πŸ”‘ Wachtwoord wijzigen
  • βš™οΈ Instellingen (appearance, profile)

πŸ› οΈ Technologie Stack

  • 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

πŸ“¦ Vereisten

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)

πŸš€ Installatie Instructies

Volg deze stappen om de applicatie lokaal te draaien:

Stap 1: Clone of Download het Project

Als je Git gebruikt:

git clone <repository-url>
cd customers

Of download en pak het project uit in een directory naar keuze.

Stap 2: Installeer PHP Dependencies

composer install

Dit installeert alle benodigde PHP packages zoals Laravel, Livewire, Flux UI, etc.

Stap 3: Kopieer Environment Bestand

cp .env.example .env

Of op Windows:

copy .env.example .env

Stap 4: Genereer Application Key

php artisan key:generate

Dit genereert een unieke applicatie sleutel die nodig is voor encryptie.

Stap 5: Maak Database Bestand Aan

De applicatie gebruikt SQLite als standaard database. Maak het database bestand aan:

touch database/database.sqlite

Of op Windows:

type nul > database\database.sqlite

Stap 6: Configureer Database (optioneel)

Als 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_password

Stap 7: Run Database Migrations

Dit maakt alle database tabellen aan:

php artisan migrate

Stap 8: Seed de Database

Dit vult de database met testdata (400 fake klanten en een test gebruiker):

php artisan db:seed

Of gebruik:

php artisan migrate:fresh --seed

Dit reset de database en seed opnieuw (handig tijdens ontwikkeling).

Stap 9: Installeer Node Dependencies

npm install

Stap 10: Build Assets

Voor development:

npm run dev

Dit start Vite in watch mode, zodat CSS/JS automatisch worden gecompileerd bij wijzigingen.

Voor production:

npm run build

Dit compileert en minified alle assets eenmalig.

Stap 11: Start de Development Server

In een nieuwe terminal, start de Laravel server:

php artisan serve

De applicatie is nu beschikbaar op: http://localhost:8000

Tip: Als je zowel npm run dev als php artisan serve wilt draaien, open dan twee terminal vensters, of gebruik de composer dev command die beide tegelijk start.

πŸ‘€ Inloggen

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.

πŸ“ Project Structuur

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
└── ...

πŸŽ“ Gebruik als Student

Opdrachten Pagina

Bezoek /opdrachten voor de interactieve opdrachten hub. Hier vind je:

  1. Uitzoek Opdrachten: Beantwoord vragen over hoe de applicatie werkt

    • Analyseer de codebase
    • Beantwoord vragen in de tekstvelden
    • Antwoorden worden automatisch opgeslagen
  2. Doe Opdrachten: Implementeer nieuwe functionaliteit

    • Volg de beschrijving en hints
    • Pas de code aan
    • Markeer opdrachten als voltooid of vastgelopen

Voorbeeld Opdrachten

  • Nieuwe klant toevoegen
  • Klantgegevens bewerken
  • Filtering verbeteren
  • Export functionaliteit
  • Dashboard statistieken
  • En nog veel meer!

πŸ§ͺ Testing

Run de tests met:

php artisan test

Of met Pest specifiek:

./vendor/bin/pest

πŸ”§ Development Commands

Database Reset

php artisan migrate:fresh --seed

Clear Cache

php artisan config:clear
php artisan cache:clear
php artisan view:clear

Generate New Livewire Component

php artisan make:livewire ComponentName

Generate New Migration

php artisan make:migration create_table_name

πŸ“ Aanpassingen Maken

Nieuwe Klant Velden Toevoegen

  1. Maak een migration: php artisan make:migration add_field_to_customers_table
  2. Voeg het veld toe aan app/Models/Customer.php in $fillable
  3. Update de factory in database/factories/CustomerFactory.php
  4. Update de views in resources/views/livewire/customers/

Nieuwe Opdrachten Toevoegen

Bewerk resources/views/opdrachten.blade.php en voeg nieuwe opdrachten toe aan de uitzoekOpdrachten of doeOpdrachten arrays in de JavaScript functie.

🀝 Troubleshooting

Probleem: "Class not found"

Oplossing: Run composer dump-autoload

Probleem: "SQLite database niet gevonden"

Oplossing: Zorg dat database/database.sqlite bestaat (zie Stap 5)

Probleem: "Assets niet geladen"

Oplossing: Run npm run build of npm run dev in een aparte terminal

Probleem: "Permission denied" op storage/logs

Oplossing: Run chmod -R 775 storage bootstrap/cache (Linux/Mac)

Probleem: Port 8000 al in gebruik

Oplossing: Gebruik een andere poort: php artisan serve --port=8001

πŸ“š Leermiddelen

πŸ“„ Licentie

Dit project is open source en beschikbaar onder de MIT licentie.

πŸ’‘ Tips voor Studenten

  1. Begin met de uitzoek-opdrachten: Dit helpt je begrijpen hoe de applicatie werkt
  2. Gebruik de hints: Elke opdracht heeft stap-voor-stap instructies
  3. Test je code: Zorg dat alles werkt voordat je doorgaat
  4. Experimenteer: Voeg extra features toe die niet in de opdrachten staan
  5. Lees de code: Bekijk hoe bestaande functionaliteit is geΓ―mplementeerd

Veel succes met leren! πŸš€

About

Repository with challenges to practice in a laravel (with livewire) environment

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages