Testing the Best AI Model for UI in OpenCode - and Somehow Ending Up Exploring Astro
A simple OpenCode experiment to find the best AI model for portfolio UI took an unexpected turn—from Muse and React to Cloudflare, Next.js, and finally the Astro journey I’d been meaning to start ever since Arjun chettan first introduced me to it.


<span style="white-space: pre-wrap;">Image Generated by ChatGPT</span>
Published and syndicated from the Inovus Labs engineering publication by Amith Abey Stephen.
I first heard about Astro from Arjun Krishna.
And honestly, if you're someone from INOVUS, there's a good chance you've heard his name before.
Arjun chettan has been around INOVUS since somewhere around 2017–18, and somehow, all these years later, he's still there — mentoring, helping, experimenting, and casually building things that make the rest of us wonder why we aren't spending more time on GitHub.
For me, he's not just another developer I know.
He's the person I genuinely look up to the most when it comes to tech.
His knowledge of the web is insane. But what I like even more is his curiosity. Every time something new comes out, somehow he finds a reason to try it.
And then there is his GitHub.
Bruh.
There are projects in there that genuinely look like they could be worth millions, and then you realise he built some of them just because he thought it would be fun and could learn something new!!.
Some of his hobby projects — things like Kutti-netlify (a self hosted netlify with all those piplines, domain configuration..basically creating his own netlify ), Kutti-N8n (He created a n8n for himself, like where you can add nodes connect nodes and execute workflows), Kutti-Lovable (basically a website generator where you have to just give in prompt and it will build website just like as we see in Lovable, V0, bolt.new etc ) and others — are exactly the kind of projects he builds for fun and learning. Well I hope, now you have clear idea of how great this man is!
So yeah, that's Arjun chettan.
But this isn't actually a blog about Arjun chettan. It's about Astro. And somehow, Once again Arjun chettan was the reason I tried up something new!
All of this started as a experiment to find best model for UI in opencode - with a prompt for building portfolio
Today, me and Nithin were experimenting with different models available through OpenCode.
OpenCode is completely free to use, without the usual limits you'd expect, and it has some pretty interesting models available.
We wnated to test the free models available there to find the best model for UI designs and for that we needed something real to throw at it.
We asked for a prompt to Monson one of our office colleague who is the designer. He gave us the prompt for his portfolio. 😂
Perfect.
We ran the same portfolio prompt through different models and compared the results.
And eventually, Muse a model by meta came out looking really good. We discussed about the result and later, I naturally did what every developer does after getting something that looks good:
"Okay... let's make it production ready."
And that's where things got funny.
"Production ready" apparently means EVERYTHING
I gave Muse a very simple instruction:
Make it production ready.
And the model took that personally. Suddenly, my tiny portfolio project had an entire ecosystem around it.
Vercel configuration. Netlify configuration. Docker files. Prettier configuration. Various supporting files. Deployment-related setup.
Basically, the model looked at a simple project and decided:
"What if we prepare this thing to be deployed literally anywhere?" 😂
At that point, the project had accumulated considerably more infrastructure than the portfolio actually needed.
So at evening I sat down with Antigravity and started cleaning things up.
Removing unnecessary files. Organising things. Making the project easier to maintain. And, most importantly, getting it into a state where Monson could actually use it as his portfolio.
Then Navaneeth gave me another idea
While discussing about whole these experinces one of our product manager, Navaneeth, said something along the lines of:
"Bro, copy my portfolio. You built it using my prompts anyway. Give it to him."
And that reminded me of something he'd previously asked for. He wanted his portfolio to have an editor/admin page: Something where he could log in and update his portfolio content himself.
No opening the source code.
No asking a developer to change a heading.
No rebuilding the entire project just because he got a new certificate.
Just:
Login → Edit → Save.
And I immediately thought:
"Wait... that's actually a really good idea."
So I added it.
Suddenly, this wasn't just a portfolio
Now we had:
- A portfolio frontend
- An admin/editor interface
- Content management
- Asset management
- Cloudflare R2 for storing assets
- A Cloudflare Worker handling the backend
And because Muse had originally converted the project from a simple HTML implementation into React, we ended up with a React-based application.
Eventually everything was ready.
The frontend went to Vercel.
The backend became a Cloudflare Worker.
Cloudflare R2 handled the assets.
And Monson finally had a portfolio that he could actually manage himself.
Done. Right?
Nope.
Because apparently I have a problem.
I wasn't happy with React.
Don't get me wrong.
I like React. I've used React a lot.
But if you ask me what framework I enjoy working with the most, my answer is probably going to be Next.js.
I love the whole monolithic experience.
Frontend. Backend. API routes. Everything in one project.
And then:
Deploy → Vercel → done.
No unnecessary separation. No wondering where the backend should live. No managing multiple deployments for a relatively small application.
Just one application. One repository. One deployment.
So looking at this React + Cloudflare Worker setup, I started thinking:
"There has to be a nicer way to do this."
And that's when I asked Antigravity to suggest a better stack. The answer surprised me.
It basically came down to:
Astro + TypeScript if I wanted maximum performance, strong design preservation and a simple architecture.
Next.js + TypeScript if I wanted a heavily interactive React application with things like rich forms and server actions.And my first thought was obviously:
Next.js.
Because... obviously. But then I stopped.
"Wait."
I've never actually tried Astro.
So why am I automatically choosing Next.js? Maybe I should finally try it. Thats how my new learning starts. Its been over 2 -3 months i heard arjun chettan mentioning it to me for 1st time , but now i too had a reaon for using it, trying it and learning how it works. What if this becomes my new favoruite, what if its much more convenient than next.js to me!
Okay. Let's try Astro.
I told the model:
"I've never tried Astro. Let's go with Astro."
In my mind, i was in hope like the model will teach e, but something else happened, under 10 sec it gave me a implementation plan
So instead of blindly letting the model do everything, I started reading the implementation plan it generated.
And Astro immediately started making more sense.
The architecture felt surprisingly familiar. Kind of structure I liked in Next.js.
You could build pages, have server-side functionality, have backend/serverless-style logic.
But none of these was the key feature of astro, it was :
Astro wasn't forcing me to commit to one UI framework.
I could use React. But I could also use Vue. or Svelte or other supported technologies. along with the other in within the same project.
That idea was fascinating. In the simplest possible way:
Astro lets you build the application around Astro, while still letting you bring different UI frameworks into the parts that need them.
And that flexibility was something I hadn't really explored before. I was sold. I have never properly learned to work in Vue.js. I still remember i my exploration in vue started as part of updating the contents in our official website inovuslabs.org. Over the time on updating the texts, and navaigation through various files, minor changes out curosity teached me vue. Even now i m not well clear how to start a vue projct from scratch but ik to make way and understand a project in vue. And again thanks to arjun chettan, cause he was the one who teached me this file navigations what and why it was etc... But the twist didn't end up there, i responded proced to the gemini model for implementation and thats when another twist happend.
And then Gemini had something to say...
I told the model to go ahead and start the migration. And right around then, Antigravity hit me with:
NEW MODEL — GEMINI 3.8 IS HERE.
Perfect timing. I switched models. 😂
And gave Gemini the job of building it. At this point, the portfolio was officially becoming an experiment. But I wasn't done yet.
I went down the Astro rabbit hole
Instead of just letting the model build everything, I opened YouTube.
Searched:
"What is Astro?"
saw a 100seconds of astro video
then i searched "Getting started with Astro."
And that's when I found a tutorial by Mike Murphy.
His own portfolio was built with Astro.
https://mikemurphy.ai/
So naturally, I opened it. And honestly? It was interesting. The site the really nice color palette, and UI was simply nice!
Then I found his Astro tutorials.
And instead of just reading about Astro through an AI-generated explanation, I started going through the documentation and tutorials myself.
https://mikemurphy.ai/tutorials/astro/ this was my reference doc along with the official docs of astro: docs
I even started another small Astro project.
This time, without AI.
Because if I let AI build everything, I'll end up with a beautiful Astro project and absolutely no idea what Astro actually does.
And that's not what I want. I wanted to understand it.
So... what started as a portfolio became something else
This whole thing started because we were simply testing AI models.
Then we found a model that generated a good portfolio.
Then I asked it to make it production-ready.
Then it generated half the infrastructure of the internet.
Then I cleaned it up.
Then we added an admin panel.
Then Cloudflare entered the picture.
Then I deployed the frontend to Vercel.
Then I wasn't happy with React.
Then Antigravity suggested Astro.
Then I realised I'd never actually tried Astro.
Then Gemini 3.8 conveniently showed up.
Then I went to YouTube.
Then I found Mike Murphy.
Then I started reading Astro's documentation.
And now...
I'm learning Astro.
Not because I had a task that required Astro.
Not because someone told me I needed to learn it.
But simply because I reached a point where I thought:
"I've never tried this. Why not?"
And honestly, I think that's one of the best ways to learn technology.
This is only the beginning.
The portfolio we're building is going to become a proper Astro project.
And alongside it, I'm building another small project completely without AI — just so I can actually understand what's happening under the hood.
In the next blog, I'll share what I actually learned while getting started with Astro:
And of course...
I'll share the finished portfolio too.
Stay tuned.
The portfolio experiment became an Astro experiment.
And the Astro experiment has officially begun.
Enjoyed this reflection?
Read community comments, responses, and join the discussion directly on Inovus Labs.
Discuss on Inovus Labs Blog