85 lines
3.2 KiB
Markdown
Executable File
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 |