A One-Feature Service in 21 Hours

· Read in Russian

I was curious to use “nano banana” when it was initially launched. So, I decided to build a simple application in my free time that converts selfies into document-ready photos. It might sound easy, but let’s dive in and see what I learned.

I started by exploring SEO and found the phrase “digital photo near me” with a low level of difficulty and moderate to high volume. I used Ahrefs to find this phrase and made it the main keyword for my app.

For the frontend, I used AstroJS, TypeScript, React, and Tailwind CSS. This was my first attempt with this tech stack, and the main reason was that AI is great with these technologies. Astro even has its own MCP server. For the backend, I chose Go for its simplicity.

I used Codex, Claude Code, and JetBrains Junie as coding agents. Usually, the basic $20/30 plan throttles a lot, so instead of upgrading to a higher tier, I prefer to switch to another agent. It also helps to compare the quality of the agents on similar tasks.

It took me ~21 hours to build everything:

  1. During the first 3 hours, I conducted research and prepared the text for the landing page.
  2. The next 4 hours were dedicated to building the landing page.
  3. The backend was built in 9 hours and integrated with Gemini (nano banana) and Stripe.
  4. The next 3 hours were spent refining the prompt to ensure consistent results and adding post-processing to ensure the resulting photo has the correct size and face proportions.
  5. Finally, I deployed the service to production in 2 hours using Docker, tested it, and configured metrics collection and alerts.

Here’s what I’ve learned:

  • AI is incredibly useful for building UI under your guidance. It’s no surprise that Lovable is growing so quickly. You still need to guide the AI in using components as you want, but it’s great for prototyping.

  • Nano banana is a fantastic model, and the results are incredibly good. However, if you modify an uploaded photo by asking the model to remove a hat, you might be surprised that the model assumed the person is bald. So, I have to adjust the prompt and leave the existing clothes, which pushes the model to be less creative.

  • Photos for documents must be of a very specific size, and there are also requirements for face size and position. No model can do everything for you. As a solution, you can use post-processing tools to enhance the image. I’ve used OpenCV, which finds a face and crops it as needed.

  • Users can upload low-quality photos or photos of multiple people. So, I use AI-powered preprocessing to determine if the original photo is suitable.

  • I’ve discovered that most countries, including Canada, don’t accept digitally modified photos for documents. However, it can still be useful for work or other applications.

It was a fun activity that I’ll definitely do again. Let me know if you’d like me to share more stories like that!

↑ Back to top