Vettebeelden

Media Projecten

Projectoverzicht

Vettebeelden
Media Projecten

Een minimalistisch portfolio-platform voor het presenteren en beheren van media- en beeldende projecten. Gebouwd met een volledig type-veilige stack en een geïntegreerde WordPress-plugin voor externe inbedding.

Tech Stack

FrontendReact 19 + Vite (TypeScript)
BackendNode.js / Express 4
API-laagtRPC 11 (type-safe end-to-end)
DatabaseMySQL via Drizzle ORM
AuthenticatieManus OAuth (cookie-sessies, rolgebaseerd)
BestandsopslagS3-compatibele opslag (foto's)
StylingTailwind CSS 4 — zwart-wit minimalistisch

Functies

Publieke website

  • Overzichtspagina — PROJECTEN 2026 met projectenlijst
  • Rood hover-effect op de projectenlijst
  • Links naar fratsemacher.nl en vettebeeldenmedia.nl
  • Projectdetailpagina — foto's, omschrijving, datums, locatie
  • Medewerkers, subsidiegevers, sponsoren en website-URL per project

Admin-paneel

  • Beveiligd admin-paneel op /admin (Manus OAuth)
  • Rolgebaseerde toegang (admin / gebruiker)
  • Projecten aanmaken, bewerken en verwijderen
  • Foto's uploaden per project (max. 3 per project, S3)
  • Beheer-knop in de footer van alle publieke pagina's

API & Integraties

  • Publieke JSON REST API: /api/json/projecten
  • Publieke JSON REST API: /api/json/projecten/:id
  • WordPress-plugin v2.0.0 (.zip) — shortcode [vettebeelden_projecten]
  • Foto-thumbnails in plugin (zwart-wit, kleur bij hover)
  • Aanpasbare accentkleur via WordPress admin
  • Automatische cache-verversing via webhook bij projectwijziging

Database-schema

projecten

idINT

Primaire sleutel, auto-increment

naamVARCHAR

Projectnaam (verplicht)

startdatumDATE

Startdatum (verplicht)

einddatumDATE

Einddatum (optioneel)

locatieVARCHAR

Locatie (verplicht)

omschrijvingTEXT

Beschrijving (verplicht)

websiteUrlVARCHAR

Externe URL (optioneel)

medewerkersTEXT

Komma-gescheiden namen (optioneel)

subsidiegeversTEXT

Komma-gescheiden namen (optioneel)

sponsorenTEXT

Komma-gescheiden namen (optioneel)

fotos

idINT

Primaire sleutel, auto-increment

projectIdINT

FK → projecten.id (cascade delete)

urlVARCHAR

S3-opslag URL

sleutelVARCHAR

S3-sleutel voor beheer

volgordeINT

Weergavevolgorde (0–2)

URL-structuur

/

Publieke projectenlijst

/project/:id

Publieke projectdetailpagina

/admin

Admin-login (Manus OAuth)

/admin/dashboard

Admin-dashboard (projectbeheer)

/admin/project/nieuw

Nieuw project aanmaken

/admin/project/:id/bewerken

Bestaand project bewerken

/api/json/projecten

REST API — alle projecten (JSON)

/api/json/projecten/:id

REST API — één project (JSON)

Volgende stappen

01

Webhook instellen: WORDPRESS_WEBHOOK_URL en WORDPRESS_WEBHOOK_SECRET toevoegen als omgevingsvariabelen

02

Admin-account aanmaken: log in via /admin en promoveer uw e-mailadres naar admin-rol in de database

03

Projecten toevoegen via het admin-paneel

04

WordPress-plugin installeren en shortcode [vettebeelden_projecten] plaatsen op uw WordPress-site

WordPress-integratie

Plugin installatie

  1. 01Download de plugin-zip via het admin-paneel
  2. 02Upload via WordPress → Plugins → Nieuwe plugin → Plugin uploaden
  3. 03Activeer de plugin en stel de API-URL in
  4. 04Plaats de shortcode op een pagina of bericht

Shortcode opties

[vettebeelden_projecten]

Standaard weergave met foto-thumbnails en aanpasbare accentkleur.

Webhook URLWORDPRESS_WEBHOOK_URL (omgevingsvariabele)
Webhook secretWORDPRESS_WEBHOOK_SECRET (omgevingsvariabele)