Back to Projects

Building My Own Marketing Site and CMS

I wanted a site that does more than showcase my work. I wanted the site itself to demonstrate how I think about products, systems, automation, and user experience. Instead of using a template or stitching together multiple tools, I built a custom marketing site and CMS from scratch - designed to support rich case studies, strong visual identity, and easy content management for non-technical users, with AI assistance built directly into the workflow. The work was not based on guesswork. It was grounded in research and deliberate decisions across structure, design, typography, content, and usability.

!

The Problem

Most portfolio and professional service sites rely on templates or disconnected tools that are easy to launch but hard to shape into a truly differentiated product. I wanted to build a system that could support a custom site with its own visual language, content structure, and brand behavior, while still being manageable by non-technical users. The challenge was not only to create a polished site, but to avoid a setup where every content change, rewrite, or publish step requires switching between tools or relying on a developer.

Template sites do not differentiate the brand
⏱️Editing content in code is slow and error-prone
Off-the-shelf CMS tools often limit custom design and structure
👁️Many setups lack a simple preview flow before publishing
😩Non-technical users often have to jump between tools to edit, rewrite, and manage content
🤯Custom sites often become hard to maintain without a structured CMS

Constraints

  • Solo build - strategy, design, content, and development by one person
  • Must maintain strong performance and Core Web Vitals
  • Content updates should not require code edits or redeploys
  • Multi-language support and localization built into the system
  • Brand consistency across site, CMS, and AI-assisted content workflows

Solution & Approach

I built a Turborepo monorepo with two Next.js apps: a public marketing site and a private CMS. The marketing site uses motion, depth, and interactive layouts to create a stronger first impression, while the CMS gives a non-technical user a structured way to manage projects and case studies without touching code. Instead of relying on disconnected tools, the system combines editing, previewing, publishing, and AI-assisted copy improvements in one place. I built a block-based CMS with 11 content types, drag-and-drop reordering, live preview, localization support, and AI rewrite capabilities so content can stay polished, on-brand, and easy to manage over time. The product decisions behind it were shaped through research into structure, design direction, typography, and usability rather than intuition alone.

AI-assisted copy rewrite aligned to voice and style
Research-informed decisions across structure, design, typography, and UX
Custom case study system instead of a generic CMS template
Live preview before publishing

Outcome & Results

The result is a fast, custom marketing site and CMS that can be managed without opening a code editor or moving between separate systems. New projects and case studies can be added, rewritten, previewed, and published in a much simpler workflow, while performance, presentation, and brand consistency stay under control. The project works both as my own site and as a proof of how I approach custom digital products that need strong design, structured content, and non-technical usability.

FastSite performance
EasyContent management
FlexibleContent structure
0Developer dependency

Key Learnings

This project reinforced that a custom CMS can stay flexible without becoming overly complex if the content model is planned well. It also showed me how important it is to keep content editing, previewing, publishing, and AI-assisted refinement in one place, especially for non-technical users. More than anything, it proved that better outcomes come from treating structure, design, content, and usability as one connected system.

Tech Stack

Next.jsTypeScriptTailwind CSSSupabaseFramer MotionTiptapClaude APIVercelTurborepoPostgreSQL

Interested in building something similar?

No commitment. Just a conversation about your systems.