# CV Roberto Dit project is mijn interactieve CV en tegelijk een voorbeeld van hoe ik een Laravel-app opzet. Niet bedoeld als groot framework of demo met zoveel mogelijk patterns. Wel als compacte applicatie waarin je kunt zien hoe ik omga met CRUD, validatie, uploads, tests, statische analyse, formatting en CI. Live: [cv.robert.ooo](https://cv.robert.ooo) ## Wat zit erin - Publieke CV-pagina met werkervaring, opleidingen, skills en personalia. - Adminomgeving om CV-data te beheren. - Afbeeldingsuploads via Spatie Media Library. - Contactformulier met queue job voor Telegram-notificaties. - Klikbare verborgen personalia, zodat bots de waarde niet direct in de HTML zien. - Feature tests voor de belangrijkste controllerflows. - CI-checks voor tests, Larastan en formatting. ## Stack - Laravel 12 - PHP 8.2+ - Blade - Tailwind CSS - Pest - Larastan level 7 - Laravel Pint - Blade Formatter - Docker / Laravel Sail ## Kwaliteitschecks Deze checks horen groen te zijn voordat een merge logisch is: ```bash composer test composer analyse composer format:check npm run format:check npm run build ``` In de workflow worden dezelfde checks afgedwongen: - PHPUnit/Pest feature tests - Larastan op level 7 - PHP formatting via Pint - Blade formatting via Blade Formatter Skipped tests zijn alleen acceptabel als dat bewust is, zoals disabled registratieflows. Larastan en formatting moeten gewoon groen zijn. ## Lokaal draaien ```bash cp .env.example .env composer install npm ci php artisan key:generate php artisan migrate --seed npm run build php artisan serve ``` Met Sail: ```bash cp .env.example .env ./vendor/bin/sail up -d ./vendor/bin/sail artisan key:generate ./vendor/bin/sail artisan migrate --seed npm ci npm run build ``` Voor de admin login kun je in `.env` deze waardes zetten en daarna opnieuw seeden: ```env ADMIN_NAME="Admin" ADMIN_EMAIL=admin@example.com ADMIN_PASSWORD=changeme123 ``` ## Development PHP formatter: ```bash composer format composer format:check ``` Blade formatter: ```bash npm run format npm run format:check ``` Tests en analyse: ```bash composer test composer analyse ``` ## Keuzes Controllers zijn bewust redelijk dun gehouden. Validatie zit in Form Requests, testdata komt uit factories en image handling blijft dicht bij de resource waar het bij hoort. De publieke personalia endpoint geeft ook hidden items terug. Dat is bewust: `hidden` betekent hier niet geheim, maar niet direct zichtbaar voor bots. Na een bewuste klik mag de waarde verschijnen. Skills worden niet op datum gesorteerd. Voor dit CV zegt type/groep meer dan aanmaakdatum. ## Nog bewust open Dit project blijft in ontwikkeling. Dingen die ik apart zou oppakken: - npm audit warnings triagen - request validation tests uitbreiden - queue jobs testen met `Http::fake()` - README/screenshots verder aanscherpen wanneer de UI definitief is ## Contact Gebruik het contactformulier op de site of stuur me een bericht via [Telegram](https://t.me/robertguagliardo).