I built this portfolio website from scratch to showcase my projects and development skills to recruiters and employers. What makes it different from a typical portfolio is that every project includes a full version history timeline with screenshots and videos, so you can follow exactly how my work evolved over time. I manage all content through a password-protected admin panel I built myself, with drag-and-drop media uploads and a live preview. The site is available in both English and Dutch and works on any device. I wrote the entire backend by hand in plain PHP 8.1 no frameworks, no shortcuts backed by a MySQL database, styled with Tailwind CSS, and running on Apache. Security was a priority throughout: session-based authentication, CSRF protection on every form, and bcrypt password hashing.
Version history
Changes
- Availability banner — Toggleable top banner with localised text
- Skills block — Tag cloud of skills/technologies managed from settings
- CTA buttons — Download CV, "Get in touch", and LinkedIn links in the hero
- Contact form — New contact section with name/email/message fields; submissions stored in a new contact_messages DB table
- Admin: Settings page — New page to edit hero name, role, description, banner text, skills list, and CV path
- Admin: Messages inbox — New page to read and manage incoming contact form messages
- DB: cover_image column — Added cover_image field to the projects table
- Localisation — Added NL/EN strings for hero, contact, skills, and home sections
Changes
- updated .gitignore
Changes
- public entry point (index.php)
- database schema (init.sql)
- authentication (Auth.php)
- database connection (Database.php)
- language system (Lang.php)
- config, helpers, all admin templates (dashboard, login, project form, version form, change password)
- all public templates (home, project, layout)
- .env.example, .gitignore, and .htaccess