# LocalWeb Collections Een PHP MVC applicatie voor het beheren van collecties van onderdelen, gebouwd met Composer, Twig, en FastRoute. Draait in een LXC container. ## Features - **Onderdelen Beheer**: Voeg, bewerk, verwijder en filter onderdelen. - **Categorieën**: Organiseer onderdelen in hiërarchische categorieën. - **Zoeken en Filteren**: Zoek op naam en filter op categorie. - **Afbeeldingen**: Upload afbeeldingen voor onderdelen. - **Locatie**: Sla locatie informatie op voor onderdelen. - **QR Codes**: Automatisch gegenereerde QR codes voor elk onderdeel, met printbare stickers. - **Meertalig**: Ondersteuning voor Nederlands en Engels. - **Real-time Updates**: Boom navigatie wordt automatisch bijgewerkt na CRUD operaties. ## Installatie 1. Zorg voor een LXC container 'www' met Apache, PHP, en Composer. 2. Clone de repository naar `/var/www/localhost` in de container. 3. Run `composer install` in de container. 4. Stel de database in: `collections.sqlite` wordt automatisch aangemaakt. 5. Configureer Apache om als `ubuntu` gebruiker te draaien (zie Apache Configuratie). 6. Start Apache en ga naar http://localhost. ## Apache Configuratie De applicatie draait met Apache als `ubuntu` gebruiker voor development: ```bash # Apache gebruiker instellen sudo nano /etc/apache2/envvars # Wijzig APACHE_RUN_USER=ubuntu sudo nano /etc/apache2/apache2.conf # Wijzig User/Group naar ubuntu sudo systemctl restart apache2 # Permissions instellen sudo chown -R ubuntu:ubuntu /var/www/localhost sudo chmod 755 /var/www/localhost/public/js/ sudo chmod 644 /var/www/localhost/public/js/* ``` ## Gebruik - **Overzicht**: Bekijk alle onderdelen met filters. - **Onderdelen Toevoegen**: Gebruik het formulier om nieuwe onderdelen toe te voegen met afbeelding en locatie. - **Bewerken**: Klik op 'Edit' om onderdelen te wijzigen. - **Verwijderen**: Klik op 'Delete' om onderdelen te verwijderen. - **QR Printen**: Klik op 'Print QR' om een sticker te printen. - **Categorieën**: Beheer categorieën via de zijbalk. ## Project Structuur ``` ├── src/ │ ├── Controllers/ # MVC Controllers │ ├── Models/ # Data Models │ └── Services/ # Business Logic ├── templates/ # Twig templates ├── public/ │ ├── js/ # Frontend JavaScript │ └── uploads/ # Afbeeldingen en QR codes ├── lang/ # Vertalingen (NL/EN) └── collections.sqlite # SQLite database ``` ## Ontwikkeling - **Dependencies**: `composer install` / `update` - **Linting**: Volg PSR-12 handmatig - **Testing**: `curl localhost` of `php test.php` voor individuele tests - **Database**: Gebruik `App\Database\Database::getInstance()` (geen directe PDO) - **I18n**: `App\Services\TranslationService` (PHP) of `{{ trans('ID') }}` (Twig) - **Commits**: Elke wijziging heeft een git commit ## Code Conventies - **Architecture**: MVC patroon met PSR-4 namespacing - **Naming**: Classes `PascalCase`, methods/variables `camelCase` - **Templating**: Alleen Twig (`.twig` files) - **Security**: Geen secrets/keys in code of logs - **Types**: Type hints waar mogelijk - **Comments**: Vermijd tenzij gevraagd ## Licentie MIT