# Martin Bekebrede — website

Statische demo-site (PHP) voor Martin Bekebrede Yacht Design.
Stijl: klassiek Hollands · taal: NL/EN-toggle · backend: plain PHP, geen database.

---

## Bestandsstructuur

```
site/
├── index.php              Home
├── over.php               Over Martin
├── ontwerpen.php          Overzicht alle scheepsseries (133 designs)
├── serie.php?slug=X       Detail van één serie (alle modellen)
├── design.php?id=N        Detail van één model (specs + foto's)
├── te-koop.php            Te-koop overzicht (leest data/te-koop.json)
├── contact.php            Contactformulier (mailto + PHP mail())
├── privacy.php            Privacyverklaring
├── 404.php                Niet-gevonden pagina
├── .htaccess              Caching, compressie, security headers
│
├── includes/              ▶ niet rechtstreeks bereikbaar
│   ├── config.php         Site-instellingen (e-mail, telefoon, admin-wachtwoord)
│   ├── i18n.php           Vertalingen NL/EN
│   ├── data.php           Helpers om designs.json te lezen
│   ├── header.php         Gedeelde header (nav + topbar)
│   └── footer.php         Gedeelde footer
│
├── data/                  ▶ niet rechtstreeks bereikbaar
│   ├── designs.json       133 ontwerpen + 215 afbeeldingsverwijzingen
│   └── te-koop.json       Te-koop schepen (beheerd via admin)
│
├── images/designs/{id}/   Foto's per design (215 stuks)
├── uploads/               Foto-uploads van te-koop schepen (admin)
│
├── admin/                 Wachtwoordbeschermd admin-paneel
│   ├── login.php
│   ├── logout.php
│   ├── te-koop.php        CRUD voor te-koop overzicht
│   ├── _auth.php          Sessie / login helpers
│   └── _layout.php        Admin layout/styles
│
├── css/style.css          Hoofdstijl
└── js/main.js             Filter/zoek + galerij
```

---

## Vereisten

- PHP 7.4 of hoger (8.x aanbevolen)
- `mod_rewrite` is **niet** vereist
- `mod_headers` en `mod_expires` aanbevolen (voor caching/security headers)
- E-mail via `mail()` moet werken (cPanel-default)

Geen database, geen Composer, geen Node — gewoon FTP-upload.

---

## Deploy naar cPanel

1. Upload de **inhoud** van `site/` naar `public_html/` (of een subdomein-folder zoals `public_html/nieuw/`)
2. Zorg dat de map `uploads/` schrijfbaar is voor PHP — meestal CHMOD `755` of `775`
3. Zorg dat `data/` schrijfbaar is — `data/te-koop.json` moet door PHP geschreven kunnen worden (CHMOD bestand `664`, map `755`)
4. Open `includes/config.php` en pas aan:
   - `CONTACT_EMAIL` — naar wie het contactformulier mailt
   - `CONTACT_PHONE`, `CONTACT_ADDRESS` — voor footer/contactpagina
   - `ADMIN_USER` en `ADMIN_PASSWORD_HASH` — zie hieronder
   - `MAPS_EMBED` — Google Maps embed-URL voor de juiste locatie
5. Test: open `https://jouw-domein.nl/` — home moet laden met scheepsfoto

### Admin-wachtwoord wijzigen

Het demo-wachtwoord is `demo123` (plain text in `config.php`). **Wijzig dit voor productie.**

**Snelle weg (demo):**
- Open `includes/config.php`
- Pas `ADMIN_PASSWORD` aan naar je gewenste wachtwoord
- Klaar — login werkt direct

**Veiligere weg (productie — bcrypt-hash):**
1. Open `https://jouw-domein.nl/admin/_setup.php`
2. Type je wachtwoord in en klik op "Genereer hash"
3. Kopieer de hash naar `ADMIN_PASSWORD_HASH` in `config.php`
4. Zet `ADMIN_PASSWORD` op `''` (lege string)
5. **Verwijder `admin/_setup.php`** — anders kan iedereen hashes genereren

### Admin gebruiken

1. Ga naar `https://jouw-domein.nl/admin/login.php`
2. Log in met de gebruikersnaam + wachtwoord uit `config.php`
3. Voeg te-koop schepen toe / bewerk / verwijder
4. Verwijder/bewerk foto's per schip — uploads gaan naar `/uploads/`

---

## Pagina's & functionaliteit

### Publiek
- **Home** — hero met scheepsfoto, korte intro, 4 uitgelichte series, tijdlijn, contact-CTA
- **Over Martin** — uitgebreide bio (Lorem Ipsum als placeholder), tijdlijn
- **Ontwerpen** — alle 133 designs gegroepeerd in series, filterbar (zoeken + categorie)
- **Serie-detail** — alle modellen binnen één serie (bv. alle 30 Noordkapers)
- **Model-detail** — foto's + specs-tabel + andere modellen uit dezelfde serie
- **Te koop** — kaarten met foto, prijs, makelaar-link
- **Contact** — formulier met honeypot + CSRF, stuurt mail via `mail()`
- **NL/EN-toggle** — bovenin elke pagina

### Admin
- Login met gebruikersnaam + wachtwoord (sessie-based)
- Lijst, toevoegen, bewerken en verwijderen van te-koop schepen
- Multi-foto upload per schip (jpg/png/webp, max 8MB per stuk)
- Bestaande foto's verwijderen via checkbox

---

## Data invullen — wat nog ontbreekt

Voor productie moet je nog:

- [ ] **Bio-tekst Martin** (over.php — placeholder Lorem Ipsum vervangen)
- [ ] **Foto van Martin** (toevoegen aan over-pagina)
- [ ] **Logo** (vervang het "M"-mark in `includes/header.php`)
- [ ] **Echte contactgegevens** (`includes/config.php`)
- [ ] **Google Maps embed** — vervang `MAPS_EMBED` constante in config
- [ ] **Engelse vertalingen** (`includes/i18n.php` — al ingevuld, eventueel finetunen)
- [ ] **Design-beschrijvingen** — kunnen later via een uitgebreid admin-paneel worden toegevoegd
- [ ] **Privacyverklaring** (`privacy.php` — placeholder vervangen)
- [ ] Strakker domeinnaam-canonical, sitemap.xml en robots.txt voor SEO

---

## Toekomstige uitbreidingen

- Admin-paneel uitbreiden naar designs (nu alleen te-koop)
- WebP-conversie van bestaande JPG's (snelheid)
- Sitemap.xml automatisch genereren uit `designs.json`
- E-mail via SMTP i.p.v. PHP `mail()` (betrouwbaarder)
- Cookie-banner (alleen nodig als je later analytics toevoegt)

---

## Bron-data

`data/designs.json` bevat 133 ontwerpen, gescraped van `martin-bekebrede.nl`
op 2026-04-30. Bron-foto's staan in `images/designs/{id}/`.

Auteursrechten op tekeningen en foto's: © 1974–2026 Martin Bekebrede.
