Collections/README.md

85 lines
3.2 KiB
Markdown
Executable File

# 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