Vibe Coding This Website with Astro
A sunny Sunday
The day was Sunday.
Not any Sunday, but the last Sunday of 2025.
We had a couple come over to help us clean the apartment to prepare it for the New Year New us bonanza.
The cats were running around, the Sun was indeed shining. It was a sunny Sunday!
My Website
I’ve bought andreiilinca.com and andrei-ilinca.com a few years ago from GoDaddy thinking that I will make them my personal CV one day and will write insightful, juicy tech articles for the ages, ones that Primeagen will read to his audience and reference forever with Teej during The Standup like inside jokes.
But I never actually published any articles… Because I suck at writing.
Well now AI is here and I have a ton of ideas to POC out somewhere and remembered that I have not 1 but 2 domains that I pay for yearly and don’t serve any meaningful purpose. You can subscribe to my newsletter but unless I’m publishing something there is not much value in having it like it is.
I had the idea in the back of my mind for a while now but didn’t have a concrete plan to do anything with it yet… until today.
I pay for Ghost Starter pack ( 15$/month ) and I originally chose it because it allowed me to create posts using a nice WYSIWYG editor, had newsletter integration by default, is written in JS, had a offered a nice SaaS solution ready to go in minutes and was recommended by Ali Abdaal. Now when I tried to customise my theme to test out a recent loader game experience I vibe coded with Antigravity, they told me to upgrade to the 29$/month Publisher subscription for theme customisation. So I said PERFECT! What a great motive to VIBE CODE MY WHOLE WEBSITE FROM SCRATCH.
A bit extreme but okay ?
Yea so I launched Antigravity, I searched for how to prevent it from sharing my secret keys online like I saw in a gruesome video a few weeks ago, added some files in the deny list and started hacking.
Told it to look at the state of the current website, gave it a long prompt about my goals with the new solution, and let it rip. Mainly what I wanted was:
- control - ability to code the app to my liking
- speed - super fast load exp for the posts
- editor experience - ability to write, edit and track posts in an organised fashion
- no hassle deployment - 1 click deployment, integration with Git
- low cost - under 150$ a year in maintenance cost
What it came up with was Astro, React, TS & Tailwind for the frontend, Sanity.io for the headless CMS and Vercel for the deployment & hosting. Convinced it to use pnpm instead of npm, made sure that the Free Tiers for Sanity and Vercel were generous enough for my expected trafic ( less than 5k visits a month ), did some pushback on cost control, security guardrails, vendor lock in to make sure the solution is sound and I let it GO TO TOWN.
Was the setup easy
Pretty much. I created my account on Sanity and Vercel using Github, let Antigravity create the repo, used the Astro project setup on Vercel to import the repo, added the Sanity project ID as env variables in Vercel and bada bing bada boom, we have a new site up. Editing this article was done locally using Sanity CLI to spin up the Admin dashboard.
What about the details
Pareto’s Law, baby. Getting the first dummy pages up was a breeze but addressing all my nitpicky desires was a hassle that prolonged into the night.
- The theme selector appeared to work out of the box but was not correctly changing the text font colours when switched during runtime due to a missing Tailwind variable and it required many iterations for Gemini 3 Flash to catch it and a lot of handholding
- Sanity Project Id was being hardcoded instead of reading from env
- Usage of deprecated APIS
- Various elements needed a finer styling touch, like cursor effects, box shadow, highlighting on hover, smooth transitions
Most of these have been vibe fixed with a few prompts, with ocassional manual changes here and there.
Performance OK ?
Not by default. Ran a Lighthouse on this page you’re seeing right now and got less than ideal result, with issues accross the board:
- Big main image render blocking ( even though was served from Sanity CDN )
- Critical rendering path being blocked by an unusually big CSS and big fonts
- Missing A11y aria-label attributes
- Errors in the console related to hydration issues
Told Gemini 3 Flash about these issues 1 by 1 and it applied a few optimisations which resulted in…
… the desired result.
What about that house cleaning ?
I mentioned it because I let Antigravity do all these things while the couple made the house spotless. I had to help give them stuff, renew the trash bags, recycle plastic bottles, groom one of the cats, order lunch and various other activities around the house. Fun Sunday!
So what’s next
By the time you’re reading this the post should be up and served by andrei-ilinca.com. If all goes well, there should a nice welcoming blazingly fast and nicely animated home page there. Possibly also a Projects page with a few things listed and demoed.
Until then, I’ll work on this website until I like it enough, maybe even write a few more posts. Probably not because as I said, I suck at writing. We’ll see.
Maybe one day I’ll sell something here. Maybe a course, a book or a PDF about how to vibe code your personal blog in 3 easy steps. Maybe I’ll add a “Buy Me a Coffee” link if my content gets so good I feel like I deserve coffees from strangers. The world is my oyster and I’m hungry for salty water bivalve molluscs.
Stay around and find out!
Thank you for reading!
Andrei