Back to Work

abyiber.com

TL;DR:   I built a headless CMS using Next.js, React, and Contentful to efficiently manage and showcase content. The system allows dynamic updates, automated deployments, and high-performance rendering. Using Tailwind CSS, Jest, Cypress, and Lighthouse, I ensured optimal performance and accessibility. The project features CI/CD integration with Vercel, making content updates and deployments seamless while maintaining a scalable, developer-friendly architecture. 🚀.

abyiber.com thumbnail image

Problem

I needed a headless CMS that would allow me to efficiently manage and showcase content while keeping the development process scalable and easy to maintain. The goal was to create a flexible content system that could:

  • Allow for dynamic content updates without modifying code.

  • Provide a consistent and visually appealing design.

  • Support fast, automated deployments with a smooth CI/CD pipeline.

  • Ensure high performance, accessibility, and SEO optimization.

  • Be developer-friendly, while also making content creation easy for non-technical users.

Another challenge was balancing design flexibility with efficiency, ensuring that the website could adapt to future needs without unnecessary complexity. 

Solution

A headless CMS built with a static site generation framework, designed to efficiently manage and showcase content.


Planning

To ensure the system met the needs of developers, content creators, and end-users, I started by writing user stories from each perspective. This helped define the tech stack, visual design, and content workflow, allowing me to break the project into manageable tasks.

Since I was working solo, I didn’t use JIRA. Instead, I created a Kanban board in a spreadsheet that automatically prioritized daily tasks based on risk assessment, due dates, and sprint progress.


Design

For the UI/UX, I used Figma to design the homepage and project showcase page.

  • Created a style guide and design tokens for consistency.

  • Ensured a clean, modern, and scalable designfor future iterations.


Development

Setting Up the Environment

I built the system using: Next.js, React, TypeScript – Ensuring performance, maintainability, and flexibility. Tailwind CSS – For rapid UI development and responsive design. ESLint & Prettier – For clean and structured code. Node.js, Jest, Cypress – For backend processing and testing.

Content Management System (CMS)

I integrated Contentful to manage content dynamically:

  • Stored text, images, and links for easy updates.

  • Used Rich Text Editor over MDX to separate content from code.

  • Optimized for non-technical users, making content updates seamless.

Once the CMS was set up, I began writing end-to-end tests with Cypress to validate the workflow and user experience.

New Tech Exploration – Tailwind CSS

Coming from Styled Components, Sass, Bootstrap, and vanilla CSS, I found Tailwind CSS incredibly time-efficient while still allowing flexibility. It streamlined component styling, reducing development time significantly.


Testing

Test-Driven Development (TDD) played a major role in ensuring code reliability and performance.

  • Unit Tests: Used Jest for individual components.

  • Integration Tests: Used React Testing Library to validate UI interactions.

  • End-to-End Testing: Used Cypressto simulate user actions from content creation to display.

  • Performance Testing: Used Lighthouse and Vercel Analytics to measure page load speed and accessibility.

A major challenge was achieving a perfect Lighthouse score:

  • LCP Fix: Optimized images by testing different formats and resolutions.

  • CLS Fix: Refactored the Navbar implementationto prevent layout shifts.

After these optimizations, the performance score hit 100%, unlocking the Lighthouse fireworks 🎇.


Deployment

Deployment was smooth with Vercel: GitHub Integration – Auto-deploys every push. Staging Environment – Runs Cypress E2E tests before production. Custom Domain & SSL – Ensures secure, professional hosting.


Continuous Integration & Development

The system is designed for fast, efficient content and feature updates:

  • Next.js, Contentful, and Vercel provide an automated CI/CD pipeline.

  • Vercel Analytics helps monitor user engagement and performance.

  • Future Roadmapincludes adding new layouts, interactive content, and more automation.

With a structured CMS, high-performance front-end, and seamless deployment, this portfolio is built to scale, adapt, and evolve effortlessly. 🚀

project management Kanban spreadsheet

Lighthouse celebration gif

Deployment Dashboard Vercel