A fully custom CMS-backed website for a Tangier-based BTP firm - a Livewire admin panel, block-based content editor, bilingual management, a blog with full SEO tooling, and a cached content delivery layer.
Overview
Citabic is a Tangier-based BTP company (civil engineering, building, real estate) that needed more than a static site - they needed the ability to manage their content independently, publish blog posts, update project references, and control every piece of copy across both French and English without involving a developer every time.
The result is a full Laravel 12 + Livewire application with a custom admin panel, a bilingual content management system, a blog platform with complete SEO tooling, a portfolio of references with detail pages, and a cached content delivery layer that keeps the public site fast.
Objective
Give the client full control - every section, every text, every image manageable from an admin panel without touching code
Deliver a complete bilingual experience: admins enter content in both FR and EN, content is served by locale automatically
Enable professional content marketing through a full blog platform with block-based editing and a complete SEO toolkit
Keep the public site fast via a per-locale cache layer with a 6-hour TTL - so database queries are amortized across thousands of page views
My Role
Design & Frontend
Designed and built the complete public-facing site in Laravel Blade + Tailwind CSS v4 - video hero, services, values carousel, references, blog, and contact - all responsive.
Livewire Admin Panel
Built a full CMS admin panel using Livewire v4 - 15+ management sections covering every piece of editable content on the site.
Bilingual Content System
Architected a per-section/per-key/per-language content model (SectionContent) that lets admins manage FR and EN versions of every text block independently.
Blog Platform & SEO
Built a complete blog with a block-based editor (hero, text, image blocks), full SEO metadata (OG, Twitter cards, schema, robots, canonical), categories, tags, comments, and reading time.
Caching & Performance
Implemented a GuestPageCache service with 6-hour per-locale cache via Laravel Cache - page data is computed once and served from cache for all subsequent requests.
Notifications & Forms
Built a categorized contact form with email notification on submission, and blog comment notifications - both via Laravel Notifications.
Tech Stack
Core Features
Admin Panel
Every piece of content on the public site is manageable from the admin panel - the client can update anything without a developer.
Screenshots

Admin Dashboard

Block Editor

Public Site (FR)
Architecture
Every public page is backed by a CitabicContentService that assembles all necessary data - profile, domains, sections, missions, certifications - and caches the result per locale for 6 hours. The admin panel is built entirely with Livewire v4, keeping UI reactive with zero custom JavaScript.
Key Takeaways
The CMS is the product
For a content-driven business site, the admin experience is as important as the public face. A client who can update their own content is a client who stays engaged with their site.
Cache at the service layer, not the view
Caching full page data payloads in CitabicContentService is more powerful than view-level caching - it works regardless of how the view is rendered.
Bilingual is an architecture decision
Adding language as a first-class field in every content model from day one - rather than retrofitting it - makes bilingual management clean and performant.
Block editors are worth the upfront investment
A block-based content model in JSON gives the client flexibility to build rich posts and reference pages without needing a developer for every content change.
Work with me
A good CMS isn't just an admin panel - it's the right content model for your business. I help you figure out what should be editable, how it should be structured, and build it so your team owns it.