Case study

Designing the ROKIB CMS

How the portfolio keeps public pages, drafts, and the admin dashboard in one application.

Project: ROKIB Portfolio Platform

Overview

The goal was a personal engineering platform that a single owner can operate: public marketing pages and a real content system, not a hardcoded brochure.

Problem statement

New work had to show up on listing pages, detail pages, and the homepage without a deploy for every paragraph.

Requirements and constraints

Server-rendered public pages. Unique slugs. Drafts invisible to visitors. Editable navigation. Contact inquiries stored for follow-up. No confidential client material in the seed content.

Proposed architecture

Laravel handles routing, validation, and authorization. Blade renders the public site and a Kaiadmin-based dashboard. PostgreSQL or SQLite stores the content. Media uses the public disk.

Database design

Projects, posts, skills, experience, products, and services are relational tables. Tags use a pivot. Settings are key-value records. Soft deletes cover content that may need to be restored.

API design and authentication

The first release is server-rendered. A public API can be added later without changing the content model.

Security

Admin routes require an authenticated owner or editor. Passwords are hashed. Contact submissions are rate-limited and include a honeypot. Uploads are restricted by type and size.

Performance

Listing pages are paginated. Settings are cached briefly and cleared on save. Public HTML is not cached, so a draft cannot leak from a stale page.

Testing and deployment

Feature tests cover draft visibility, contact storage, admin authentication, and the sitemap.

Challenges and lessons

Making the admin feel like a working CMS without pretending unpublished sample work is a client result.

Verified results

Owners can publish and unpublish content from the dashboard. No performance percentage is claimed here.