Introduction
I have been meaning to try out AI-assisted coding for quite some time. Now don’t get me wrong, I have been using the generic LLM chatbots. While I was able to get things done, it wasn’t the best experience as a developer. I felt more and more sidelined by the process. And after a while I started picking the path of least resistance, i.e. vibe coding. And it’s not just me, many of my colleagues are going through this as well. I feel that there has to be some middle ground where a coder can utilise AI all the while improving on his skills.
Overview
In this article I will be exploring Kiro, an AI assistant by Amazon that uses Claude under the hood. I am specifically interested in the spec-driven development. While I do sound like a Kiro advert at this point, b…
Introduction
I have been meaning to try out AI-assisted coding for quite some time. Now don’t get me wrong, I have been using the generic LLM chatbots. While I was able to get things done, it wasn’t the best experience as a developer. I felt more and more sidelined by the process. And after a while I started picking the path of least resistance, i.e. vibe coding. And it’s not just me, many of my colleagues are going through this as well. I feel that there has to be some middle ground where a coder can utilise AI all the while improving on his skills.
Overview
In this article I will be exploring Kiro, an AI assistant by Amazon that uses Claude under the hood. I am specifically interested in the spec-driven development. While I do sound like a Kiro advert at this point, but come on man, they gave a lot of free credits. I am poor. Okay, so this is a hackathon project for Kiroween. And I will go through how I made it, what tools were used, and how Kiro fits in the process.
Detailed Development Process
I picked up a project I thought would align with my current knowledge and would allow me to learn new things along the way. I built a telematics provider system. I started off by creating a basic diagram in Excalidraw.
With this, I went for designing the db. I went to http://drawsql.app/ and created my first draft. Then exported the DDL and did a bit of back and forth with AI. This is the final draft of the database:
From the diagram earlier, I decided to break the project into the following backend and frontend pieces: Backend-
- Vehicle Telematics API- for GPS data ingestion.
- Insight Generator Service- to create meaningful trip insights from GPS data.
- Fleet Dashboard API- for sending data to fleet dashboard.
- Fleet Auth Service- Uses Supabase to generate auth tokens for fleet managers and drivers.
Frontend-
- Fleet Manager Dashboard- allows user to monitor and configure their fleets. Gets them insights over their vehicles, drivers and trips.
- Driver Web App- to simulate GPS points of a driver. These data points would generally come from an OBD Tracker.
I used Golang for all my backend services and Next.js with ShadCN for the frontend.
Kiro Experience
The process of developing each service was quite similar. I used the spec-driven development feature of Kiro.
- Firstly, we discussed the requirements. I explained what was expected from the service, where it fits in the bigger picture, what would be the limitations, SLA, etc.
- The second phase is design. We decide upon the tech stack, libraries, models, interactions with user, folder structure, etc. This phase solidified the expectations.
- The third phase is laying out tasks and executing them one at a time.
For executing tasks, I tried out two approaches, one where I kept unit tests after each task. While it sure is a great practice, since this was a pet project and I needed the first iteration quick, in my second approach I kept testing for the end. It worked quite well for me. I feel giving time to the design and requirement phase is totally worth it. Also, I feel using strictly typed languages like Go and TypeScript surely helps with keeping such errors at bay.
For each core service I repeated the above process, and it worked out well each time. But there was one exception. While working on Fleet Authentication Service, I slacked off a bit. I wasn’t sure about how auth was implemented; I just knew we had an access and refresh token. So I gave AI the liberty to come up with endpoints and business logic. Things took a wrong turn after that and we ended up with an over-engineered authentication API. I scrapped it and made one only with the required endpoints. It worked well that time. Tbh, this is where I can picture myself as a developer. I had an unhealthy reliance on the assistant and it led me to redo the whole thing again. So yeah, that was a testimony of sorts.
Anyways, I also tried out the vibe coding mode for bug fixes or small features that I wanted to implement. While in a professional setting I would use the spec-driven mode even for small features, here, keeping time constraint in mind, I went with vibe coding.
Note- I mostly faced issues with my ids being integers. I should have gone with strings -_-. Note- I used Claude for UI in the past and while it was functional and fast, it did not compare to UI-specific counterparts like bolt and lovable. So I was not so sure about Kiro. But it did dish out results comparable to bolt. Maybe because I used Shadcn, not Claude’s beloved Material UI. Oh, and even theming was easy since most of the stuff was configurable in tailwind’s global.css file.
Deployment
As discussed before, I am poor. Or at least I don’t have money to deploy pet projects, which is quite sad. I used all the free services available to me. Here are the details-
- Supabase: I deployed my Postgres instance on their cloud and used their Authentication service. For free! Like a savage!

- Render: Used my dearest render to deploy backend. Now I know they spin down the servers on free tier. The hack is to use the next service.
- Cron Job Org (http://cron-job.org/)--) It is a free cron job service. I made health endpoints and called them at 5 minute intervals. This is a forbidden technique. So don’t misuse it okay!
- Vercel- I have been using Netlify in the past and I also had failed on deploying on Vercel in the past. This time I had power of friendship so it all worked out great.
MCP Servers
I used two MCP servers one was querying my db. It was a simple Postgres MCP. Nothing fancy. But it worked like a charm when discussing requirements and bug fixing. I did not had to copy paste DDL files to LLM chat. I also used browser MCP, it worked like a charm when needed but yeah mostly I kept it off. I wanted to use an MCP that could look into my postman collection, but setting it up seemed quite lengthy. So I resorted to manual copy paste. Do let me know if you have any MCPs for me or if you have figured out MCP for postman. I personally prefer remote MCPs btw.
Closing thoughts
So yeah that was the crux of my experience. I know its quite casual but its quite an opinionated topic and I feel this is how opinions should be expressed.
Thank you to all the generous orgs like Render, Supabase, Kiro, Vercel and Cron job org for free tiers and credits.