Live ↗ WIP
2025Construction · 3D WebAlkayan Construction Nova
Al Kayan's business site rebuilt on a custom PHP MVC framework (front-controller pattern) — an OOP layout component system, MDBootstrap + GSAP 3D cards, and a Three.js WebGL hero scene.
PHPCustom MVCMDBootstrapThree.jsGSAPWebGL
The Business Problem
Al Kayan Construction's business site needed a ground-up rebuild (Nova v2.0) with a distinctive visual identity and tighter security than the legacy codebase, without pulling in a full framework's overhead.
My Responsibilities
Designed and built the entire Nova v2.0 platform solo: the custom PHP MVC framework, the OOP layout component system, the 3D front end, and the security hardening pass.
Main Workflows
- 1Visitor browses project categories — delivered, planned, under construction, interior design, supplies — through clean URLs
- 2The front controller (public/index.php) parses the request and routes it to the matching controller, either rendering a view or returning JSON
- 3A JSON API endpoint (?type=api&resource=projects) serves the same project data for client-side rendering and pagination
- 4Authentication and identity for the connected real-estate platform are handled by a separate microservice on a dedicated subdomain, decoupled from this app
Tech Stack & Architecture
Custom PHP MVC framework built from scratch on a single front-controller entry point
Reusable OOP component system (static layout classes) exposing navbar, footer, hero, and section blocks as composable methods, keeping markup DRY across 10+ templates
MDBootstrap, GSAP-driven 3D card animations, and a Three.js WebGL hero scene, with light/dark theme persisted via localStorage
File-based caching layer sitting in front of MySQL for the high-traffic project-listing endpoints
Security & Deployment
CSRF tokens on every form and full-stack input validation
Removed hard-coded credentials and closed .env exposure carried over from the legacy codebase
Fixed error-message leakage that could reveal internal paths or stack traces
Security hardening headers set at the front controller








