My portfolio used to run on a WordPress child theme. It worked, but every time I wanted to change something small — a new project, a blog post, an SEO title — I was fighting plugins, updates and a database full of tables I never asked for. So I rebuilt it from scratch on CodeIgniter 4, and this is the site you are reading now.
Why CodeIgniter 4 and not another WordPress theme
CodeIgniter 4 is a small, fast PHP framework with a clear MVC structure: models talk to MySQL, controllers decide what to show, views hold the HTML. There is no page builder, no plugin stack and nothing loading that I did not write. The homepage does one job — read content from the database and render it — which keeps it quick and easy to reason about.
Everything editable, nothing hard-coded
The fear with a custom build is that every text change needs a developer. So I built a small admin panel: projects with screenshots, skills and platforms, services, experience, blog posts, contact messages, per-page SEO titles and descriptions, a media library and a redirect manager. Content lives in the database, so updating the site is a form, not a code change.
SEO is part of the structure
Every page gets its own title and meta description, Open Graph and Twitter tags, a canonical link, and JSON-LD structured data (Person, WebSite, BreadcrumbList, FAQPage and BlogPosting where relevant). The sitemap and robots.txt are generated from the database, so a new blog post appears in the sitemap the moment it is published. Images carry alt text, buttons carry titles, and there is exactly one H1 per page.
Small things that matter
- Contact form: a hidden honeypot field and a minimum-fill-time check stop most bots, and every message is saved in the database even if the mail server is down.
- 404 and redirects: a proper 404 page, plus redirects that are created automatically when a blog post link changes, so old URLs keep working.
- Images: project screenshots are served as WebP, which cut their weight by more than half.
- Security: CSRF protection on every form, hashed admin password, security headers, and uploads that can never execute as code.
Would I do it again?
For a portfolio where I control the content and want speed and full control, yes. For a client who needs a huge plugin ecosystem or a non-technical team building landing pages daily, WordPress or Shopify is still the better tool — I choose per project. But building this on PHP, CodeIgniter 4 and MySQL was a good reminder that a small, well-structured custom site is often all you need.
If you want a fast, editable website built this way — or a WordPress, Shopify or React project — get in touch.