PHP

Charymeld — Developer Portfolio & Project Showcase

A personal developer portfolio built from scratch to showcase real-world projects, skills, and professional background. The site features a dark glassmorphism design, dynamic project filtering, a fully functional contact form with AJAX submission, and a custom-built admin panel for managing projects and messages — all without any framework, using plain PHP and MySQL.

The portfolio itself is one of the projects it showcases, serving as both a live product and a demonstration of the development skills it advertises.


Charymeld — Developer Portfolio & Project Showcase screenshot

Key Features

14 features built into this project

Dark glassmorphism UI with violet/blue gradient accents
Dynamic project grid with category filter (no page reload)
Project detail pages with features and challenge sections
AJAX-powered contact form with server-side validation
Admin panel — add / edit / delete projects and view messages
Dynamic stats (years experience auto-calculated from career start year)
Live project count pulled from DB
Typing effect and scroll-triggered AOS animations
Fully responsive across mobile
tablet and desktop
Social links — GitHub
Facebook
WhatsApp
TikTok

Challenges & Solutions

Technical problems encountered during development and how each was resolved.

1

Building without a framework: Every feature — routing, auth, CSRF protection, file uploads, AJAX endpoints — was implemented from scratch using plain PHP and PDO. This kept the codebase lean and demonstrated low-level mastery rather than reliance on abstraction.

2

Dynamic stats without over-engineering: The Years Experience stat auto-increments every year by computing the difference between the current year and the career start year (2022) at render time. The Projects Shipped count is a live COUNT(*) from the database — no manual updates ever needed.

3

Admin security without a framework: The admin panel uses session-based authentication with a bcrypt password hash, an auth guard included on every protected page, and FILTER_SANITIZE_SPECIAL_CHARS on all POST inputs to prevent XSS — security handled deliberately rather than delegated to a framework.