Jan 4, 2026

How I Built My Website With Lovable, ChatGPT, and a Little Code

AI Coding CSS HTML Learning Sales & Business technology Web Design
My custom website theme I wrote in HTML using ChatGPT and Lovable to clean up the code.

I’ve built personal sites before. I’ve used Wix, Weebly, and Squarespace. They all work, and they’re all “easy” in the way people mean when they say you can publish a site in a weekend. But none of them ever felt like they reflected the theme I wanted. I’d start with a template, tweak fonts and colors, maybe rearrange a section or two, and then I’d hit the same wall: I was still building inside someone else’s styles and preferences. The layout was never quite my cup of tea. The writing page felt like an afterthought. The site looked fine, but it didn’t feel like mine.

Most personal sites die in the same place: the “someday” folder. You buy a domain, pick a theme, tweak a few colors, and then you realize you’re trapped inside someone else’s design decisions. The layout fights you. The fonts don’t match your voice. The homepage can’t say what you actually mean.

So I did the opposite. I started with a blank WordPress theme and used ChatGPT to help me build the simplest possible version of my site, fast, clean, and mine. The result is a custom theme called “Jackson Aaron HQ,” a lightweight foundation I can keep expanding as my writing, projects, and career evolve.

I built the website by having ChatGPT act like a patient pair programmer: I described the vibe and the job the site needed to do, then generated a tiny WordPress theme piece by piece, testing each change as we went.

The Stack That Made It Work: Lovable + ChatGPT + WordPress

This wasn’t “one tool built my site.” It was a workflow where each piece did a specific job.

Lovable handled the hardest part for any site build: momentum. It helped me get to a real starting structure quickly, something I could click through and react to instead of overthinking in a blank canvas.

ChatGPT handled the precision work after that. It acted like a pair programmer while I shaped the site into my style: minimal, readable, professional, and built around writing. The important part is that I didn’t ask for “a whole website.” I asked for small, testable pieces.

WordPress is the engine that makes it sustainable. It’s built for publishing, and it lets me own the structure instead of renting a template. Setting up your HTML and CSS files step by step is a great way to ensure the website is up to your tastes and standards. I know my Plattsburgh Communications 242 Basic Web Design professor would be happy to see that I still remember all her coding lessons.

Why I Didn’t Start With a Prebuilt Them

Prebuilt themes are great when you want “a website.” They’re less great when you want a personalized blog or HQ something that reflects how you think, what you create, and what you want people to do when they land on your page.

My requirements were simple: a homepage that communicates my positioning in one sentence, a Writing page that lists posts cleanly, a dark professional look that’s easy to read, and no bloated page builders or mystery settings panels. Instead of hunting for the perfect theme, I used ChatGPT to help me create a minimal theme that I can iterate on.

How I Built the Theme Piece by Piece

The biggest unlock was learning that each prompt needs to be specific; you can’t start with “make it professional, sleek, or cool.” ChatGPT needs constraints. So I wrote prompts like: “Create a minimal WordPress theme called Jackson Aaron HQ,” “Keep it lightweight: header, footer, homepage template, and a Writing page template,” “Dark background, readable type, nothing flashy,” and “Use WordPress best practices: enqueue assets properly, include wp_head/wp_footer.”

From there, I built the theme in small steps that match how WordPress actually works.

First, I created the theme identity. Every WordPress theme starts by identifying itself, which in practice is a simple style.css header that declares the theme name, author, and version. That file is basically WordPress’s “this theme exists” handshake, but it set the tone: custom theme, simple foundation, versioned like software.

Next, I wired the assets correctly. The core of the theme is functions.php, where you enqueue your CSS/JS and enable the standard WordPress title tag. This matters more than it sounds. Instead of hard-linking CSS in the header (tempting when you’re moving fast), WordPress wants you to enqueue styles/scripts so it can manage dependencies, caching, and plugin compatibility. ChatGPT helped me do it the professional way from the start, including a basic safety guard to prevent direct access.

Then I built the site with reusable parts. WordPress themes are modular by default, so I leaned into that structure: header.php to open the HTML and call wp_head() so WordPress/plugins can inject what they need, and footer.php to close everything and call wp_footer() so scripts/hooks load correctly. This is where ChatGPT shines, because you can say “keep it minimal but correct” and it won’t forget the details that are easy to miss.

After that, I defined the homepage message in one punchy line. The homepage template (front-page.php) is intentionally small, with a header, a footer, and a clear headline with a supporting line. The headline “Sales, stories, and systems for the AI economy” is the point. If someone lands on my site, they should understand what I’m about in five seconds.

Then I built the most “website-y” part: the Writing page. I created a custom page template (I called it “Writing”) that WP_Query grabs recent posts and prints titles and excerpts. No plugins. No page builder. Just WordPress doing what it’s good at: publishing. This page becomes the engine for my blog presence, especially since I also publish elsewhere, but I still want a home base that I own.

Finally, I kept the design intentionally simple. My CSS is minimal, toggleable dark background, light text, readable defaults. That’s not the “final design.” It’s the baseline. You can always make something prettier later. You can’t easily make something simpler later. I also left a tiny “heartbeat” in the JavaScript: a simple console log that lets me know the theme loaded correctly, which makes iteration and debugging faster.

The Repeatable Workflow I Used

This is the loop I used for everything: ask ChatGPT for one small piece (one file, one template, one function), paste it in, load the site, confirm it works, and only then ask for the next improvement. The key is resisting the urge to request “the whole site” in one prompt. That’s how you get spaghetti code you can’t debug. Small steps keep you in control.

A few prompts that consistently worked for me: “Create a minimal WordPress theme with header.php, footer.php, front-page.php, and a Writing page template,” “Enqueue site.css and site.js properly in functions.php and add theme support for title tag,” “Make a page template that lists the 10 most recent posts with titles and excerpts,” “Keep the HTML clean no extra wrappers,” and “Explain what each file does in one sentence so I can maintain it later.”

The point isn’t that ChatGPT “built it for me.” The point is that I directed the build, and ChatGPT shortened the distance between idea and working code.

What I’m Adding Next

Now that the foundation works, the fun part is iteration. The next upgrades are straightforward: a real navigation and header styling, a social links block (Medium/Substack/LinkedIn) so it’s always one click away, a cleaner typography system (headings, spacing, readable line length), a little personality in the design without turning it into a gimmick, and basic SEO structure like consistent meta descriptions and a solid Open Graph image.

That’s the part I like most: it’s a living and breathing theme. I can edit the design and style with HTML instead of trying to drag and drop, center, duplicate, and insert. Improving the theme is easy, just one commit at a time.

← Back to Writing