diff --git a/README.md b/README.md index 30549fd..f34752b 100755 --- a/README.md +++ b/README.md @@ -11,14 +11,32 @@ Een PHP MVC applicatie voor het beheren van collecties van onderdelen, gebouwd m - **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. +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. Start Apache en ga naar http://localhost. +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 @@ -29,11 +47,38 @@ Een PHP MVC applicatie voor het beheren van collecties van onderdelen, gebouwd m - **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 -- **Linting**: Geen specifieke tool, volg PSR-12. -- **Testing**: Geen tests, gebruik curl voor API testing. -- **Commits**: Elke wijziging heeft een git commit. +- **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