I have been pretty busy over the past few days.
I have now upgraded and completely rebuilt my website, https://truthwillout.co.uk, and taken it from what was essentially a black screen with a few links and images into something I would classify, for my level at least, as a fully functional and fairly high level website.
The original site did its job at the time, but only just. It existed, it loaded, and it showed something. Beyond that, it was basic, limited, and honestly not very useful. Not long after the original release, I already knew I would need to rebuild it properly at some point, I just did not have a clear reason or trigger to do so.
That trigger ended up being the release of Umbraco v17.
When Umbraco v17 became available, I knew this was the right moment to go back to the drawing board and rebuild the site properly, using newer tooling and a cleaner approach.
The tools and setup
To build the new version of the site, I used Umbraco MCP, Claude Code, and a free Umbraco trial.
The interesting part of this build is that I did not start with a template, theme, or pre built solution. Instead, I started with an idea.
I began by explaining to ChatGPT what I wanted my site to look like, how I wanted it to behave, and what sort of pages and features it should include. From that, it generated a Claude Code friendly prompt. Once MCP was set up, I fed that prompt into Claude.
What came back was, honestly, better than I expected.
Claude produced a fairly nicely designed website structure, complete with layouts, blocks, and sensible defaults. It removed the need for a template entirely, which was a big deal for me. I am much more comfortable on the backend, and while I understand the basics of frontend development, it is not where I am strongest.
This approach let me move forward without being blocked by frontend decisions or spending hours tweaking CSS from scratch.
Iterating on the design with ai
Once the site was generated and filled with dummy content, the real work started.
I began targeting specific areas of the site rather than trying to change everything at once. For example, I would ask things like “can you redesign the contact page to do this” or “can you help me redesign the footer with these elements”. Each time, Claude would update the relevant parts quickly, often faster than it would take me to manually create or adjust a document type in the Umbraco backoffice.
From there, I started getting more technical with it.
I began changing smaller features, adding more block lists, refining naming, and adjusting content structures. At this stage, things were less smooth. More often than not, the first attempt was wrong. Sometimes the styling was off, sometimes the naming conventions were not what I wanted, and sometimes the document type aliases were completely wrong.
However, after correcting it and explaining what had gone wrong, it would generally get it right on the next prompt. That feedback loop was surprisingly effective, even if it was not perfect.
The reality of ai assisted development
However, not everything that glitters is gold, and that became very apparent during this project.
I constantly ran into Claude’s limits. There were times where errors were introduced by the AI itself, and those errors could not be fixed by it. This was not a massive issue, but it was noticeable.
In those situations, I had to fall back on traditional debugging. I would trace the error, identify the source, and fix it manually. In a way, this was reassuring. It reminded me that the AI is a tool, not a replacement for understanding what is actually happening in the code.
Once the main structure of the site was in place, I started experimenting with animations and small interactive features. I played around with things like animated headers on the services and contact pages, scroll based animations, and other visual effects.
Some of these worked, some did not, and some just did not feel right.
Knowing when to stop
At a certain point, I had to be realistic with myself.
I did not want to spend weeks perfecting animations and micro interactions when the site is not going to receive massive traffic. More importantly, I wanted to get the site live and move on.
There were two main reasons for this. First, the return on time investment was not there. Second, I did not want this project to turn into something that never ships because I keep tweaking small details.
So I made a decision to stop chasing perfection.
I focused on making sure the fundamentals were solid. The frontend looked good, the backoffice was tidy, the codebase was clean, and all features and configuration were working exactly as intended.
Once I reached that point, I knew it was time to push the site live.
Shipping the site
By the time I deployed the site, all blocks had been built using MCP, the frontend was in a good place, the backoffice structure made sense, and the code was readable and maintainable.
This is not a perfect site. It is not groundbreaking, and it is not going to win any industry awards.
But for me, it is genuinely revolutionary.
I have never created or used animations like this before. I have never built a site with this level of structure, flexibility, and polish. Even though the build was heavily supported by AI, I am still extremely happy with what I created, especially considering that I am still a junior developer.
What I learned from this project
If anything, this project has proven to me just how powerful MCP can be when used correctly. It has also helped me understand why so many people are leaning into what is often called vibe coding.
Used properly, these tools let you move faster, experiment more, and focus your energy on decision making rather than boilerplate work. At the same time, they expose gaps in your understanding very quickly if you are not paying attention.
This build reinforced the importance of knowing the fundamentals. The AI helped me move faster, but it was my responsibility to validate, correct, and refine what it produced.
Final thoughts
I hope you like the site overall.
If you spot anything that does not quite work, feels off, or could be improved, I am genuinely open to feedback. Whether that is via email, a LinkedIn message, or even a comment on the LinkedIn post related to this site’s release, I would love to hear it.
For now, I am proud of what I have built, and even more excited about what I can build next.