DEV Community

Cover image for Kiro for Software Development?
Divyansh Sareen
Divyansh Sareen

Posted on

Kiro for Software Development?

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-

  1. Vehicle Telematics API- for GPS data ingestion.
  2. Insight Generator Service- to create meaningful trip insights from GPS data.
  3. Fleet Dashboard API- for sending data to fleet dashboard.
  4. Fleet Auth Service- Uses Supabase to generate auth tokens for fleet managers and drivers.

Frontend-

  1. Fleet Manager Dashboard- allows user to monitor and configure their fleets. Gets them insights over their vehicles, drivers and trips.
  2. 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-

  1. Supabase: I deployed my Postgres instance on their cloud and used their Authentication service. For free! Like a savage!
  2. 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.
  3. 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!
  4. 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.

Top comments (0)