Ndifreke Ekott

Thoughts, stories, ideas and programming

02 Jun 2025

Lovable Plus Jetbrains Junie - A Love Story

Banner

It is nearly impossible to look around anywhere on the internet without seeing a mention of AI. I must admit, when the craze for Large Language Model reached its peak last year, I was skeptical, then I am mostly skeptical of anything that makes the rounds on social media platforms. We know in our tech space, there is a tendency to always jump onto the next hype.

When you know people who wouldn’t spend a minute keying in data into an Excel spreadsheet or can barely type “Facebook.com” into the address bar but have to Google search Facebook in order to visit Facebook, suddently start talking about effortlessly building software applications. It seems to good to be true.

I have been fortunate enough to work in the Software industry for more than a decade, I have jumped around different industries, picked up a few programming languages along the way, learned and unlearned techniques and yet - I will never say building software is easy.

Many times I have been stuck working on a bug, collaborating with AI and the situation got worse. I then had to turn to fellow engineers around an through a stroke of luck or hickery pokery we fixed the bug. So, even with the all knowing AI, it still took the intervention of experienced developers more than an hour to resolve a bug that required just a typo change. So when my dear friend who can barely remember his email password, talks about building an E-commerce idea all with AI without learning code, I roll my eyes and just want to disconnect from the internet.

However

However, my perspective on AI has improved from my first proof of concept project over a year ago, to me not going a day without utilising AI in my day to day. However, I approach AI as a facilitator—a pair programming or rubber ducking companion. Which means, I won’t say to A.I “Build me something about a field I have no knowledge about”. And the truth is A.I has a vast amount of knowledge and can easily retrieve the information needed to accomplish a specific task.

I have also discovered that even though for bulk of the tasks I have gotten AI to execute, it has done it well, there is always that fraction that A.I gets wrong. So it is now up to me to determine why it got that wrong. Remember it generates its content based on the current context accessible to it. It is very good at reading the current context and generating results that align with the theme of the context.

An example of using context, I am actively working on a project that makes use of Domain Driver Design concepts with a splash of Clean Architecture layout, getting the AI to implement certain feature and adhering to the project structure and naming conventions as worked so well. I now spend more time thinking about what feature to build and get it to implement it, and feeling confident it won’t do something outside the norm.

Enter Lovable.dev

I must admit, I am not the guy to speak too when it comes to Design. Like most developers who are good at all the none user facing aspects of software development, I suck at Designs. Specifically, I suck at thinking in colours. I can easily and I have worked with numerous frameworks from React, Angular and can pick up pretty much anything. I just fail at making it look pretty and matching current web design themes.

This deficiency has led to many ideas of mine languishing. I can’t get a designer or a frontend expert to collaborate on the project. I don’t have the money to pay a designer to build the frontend. I have tried taking design courses but never able to focus long enough to get good at it, which means I default back to my backend preference and let someone else make it pretty.

A casual conversation with a friend who I would say is similar in experience to me as a non UI developer, showed me a recent website he built for his business. The site was amazing and I asked, did you pay someone to build it? He responded - “Na bruh, I use AI”. Not only did he build the site using AI, he scaffolded the backend logic powering his site and even built a support chatbot using AI. And this tool is lovable.dev.

lovable.dev image

Now, remember I said I couldn’t think in colours to save my life? Well let me demonstrate. Below is a design I started, I justified this by saying to myself -“Work on functionality first and come back to resolve UI later”. The decision made sense as trying to get the pages to look good would take me forever thereby risking forward momentum on the project.

Starting Developer design

old designs

I will say, functionality wise, this worked, it just wasn’t pleasing to look at. And there is no way I would have shipped that without some major refactoring. Imagine my excitement when I tried out lovable.dev.In just 10 minutes, I had a completely transformed design! let me show you.

First design iteration

First design iteration

Which version would you likely use? The good thing with lovable, is the fact I can concurrently run two design and see what ideas each interaction generates. Below is a concurrent design generated by Lovable.

Second prototype

Both designs are solid, but I ultimately went with a different approach not showcased here.

Enter Jetbrains Junie

In the software development space, jetbrains is known for their Amazing set of IDEs and language tooling. I have been a user for more than eight years now. They have added more AI assistance within the IDE and the most recent is Junie. They also have one called JetBrains AI. JetBrains AI previously was mostly a conversation type AI but recently it has been given the ability to actually create code files within the IDE. However, there is some difference and when I want code written, files generated, I turn to Junie. I haven’t had time to really tell the difference as Junie also has a conversational mode.

Junie I think is Jetbrains homegrown solution while Jetbains AI is an interface that wraps AI models. JetBrains AI allows you to choose your LLM from ChatGPT, Claude, Deepseek etc. But the focus today is on Junie.

Jetbrains Junie

I have been able to get Junie to not only optimise code I have written but I use it to generate API specification, generate an implementation of the spec, and even used it to generate a Deployment workflow for my project.

Now, I find myself playing the role of an Architect, thinking, ‘What should the system be?. I boldy proclaim - THIS IS THE WAY.

Neo meets the architect in the matrix

My Development Workflow

This is an iterative approach. I do however, find that building out the pages using mock data, allows you to focus on the user experience, look and feel to nail down what the experience of using the app will be. Lovable also provides a preview link that allows you to share a view of the mock data, making it easy to solicit feedback.

workflow

Focusing on implementing small aspects of the screen makes it easy to keep AI on track.

An example of a prompt:

Implement the save form by calling the saveEvent operations as described on the openapi spec. On successful creation of event, redirect to /events list page. On error, show toast with eerror message.

I can later update the form whenever a new field is added to the API. I have also looked at the code generate and the code is pretty much what I would write if I were to spend time writing react. I also clone the UI frontend to run locally to make sure it all works and I am not fully dependent on lovable.

Let me know what you think. Though this workflow works, it isn’t all smooth sailing and there were times I needed to roll up my sleeves and get to coding. I will write a follow up article on the challenges working this way.