From zero to overkill, journey of tech founder

Airplane

Four years ago, I left my software engineering job to work on an indie project called Valisa – a travel startup that helps people find the best fares and plan their trips faster. The goal is to save travelers' time.

I want to share bits of my co-founder/solopreneur story. How we engineered it, what worked and what didn't, and why I reevaluated the company path. This can be useful to tech founders who know how to code.

In "Down and Out in Paris and London," George Orwell claimed that French restaurants thrive thanks to their sharp knives. It can well be British humor directed at their favorite neighbors. But I enjoy the idea that competitive advantage wasn't the chef's ability to mix cheese and wine.

If human experiences are Brownian motion, the journey from start to value is like riding the atom with a jetpack. Hitting other particles that affect my path is inevitable. I have an engine for maneuvering. And I must get across before running out of fuel.

Tuning engine in flight

During the lunch discussion, my friend Siarhei and I discovered that we faced exact problems while looking for affordable flights and hotels. Trip preparation requires a ton of energy and takes time.

Comparing options and booking tickets is messy due to context switching. I take notes to ensure things align and trip events make sense. But notes are an old-school solution. There is room for improvement. We decided we could automate our travel planning routine.

It took us a year to go from idea to alpha. Valisa 1.0 was a minimalist fare finder that covered European budget airlines: Ryanair and easyJet. The feedback we have received was overwhelmingly positive. We decided to focus on adding more providers and optimizing for scale.

A classic mistake? Let's dive into details so it doesn't sound like a generic statement. Our microservices were written in Go. They all served a single client – a Vue single-page app. I pre-rendered landing pages. But SPA and search engines don't play well together. JavaScript frameworks didn't have good server-side rendering support at that time.

I invested more than a month of work into switching to SSR. Nuxt 2 hydration errors annoyed me so much that I dropped it and went for an ugly wrapper that added social preview tags.

Siarhei set up Kubernetes cluster on Google Cloud. With monthly costs of around 120-140 euros, it didn't seem like a big deal. Then AWS approved our application. We got $4.000 in credits and moved all infrastructure there. Adding blows and whistles in the process, of course.

Valisa had a load balancer, Redis cache, infrastructure as code via Terraform, staging, observability, monitoring, and a Kanban board. It also had zero paying customers!

Clean code, best practices, refactoring, and optimization are pillars of our belief system, aren't they? In the eyes of an engineer, these tasks are crucial. But customers don't care about hidden details.

Lost year

In late 2021, I started working on the planner designed to complement the fare finder. By winter, we had UI mock-ups. Siarhei started implementing auth using Ruby on Rails. After several setbacks, we concluded reinventing the wheel was a terrible idea. Ory Kratos seemed a decent option, but it was dismissed due to the complexity overhead.

Events that happened after shattered all our plans. Sick neighbors invaded Ukraine full-scale in February 2022. My priorities and values shifted overnight. I got busy helping my family, friends, and random people.

Valisa was put on hold. I barely touched the code. Siarhei decided to concentrate on his full-time job. I worked as a freelancer and organized direct aid. Arguing in German, opening the locked car with a broom. None of my jobs taught me that.

Not every day do you lose your home. Stress affected my ability to think, so I had to find a way to manage my worries. It's a true paradox: simple actions like running or working ease the pressure. I discovered this built-in protection mechanism, and it helped me restart Valisa.

Product

I'm puzzled when people brag about the simplicity of their work. "I built a revolutionary app over the weekend." Is it any good? I embrace a different approach. Conservation law is never going to let you down.

Let's leave the land of flower-eating unicorns for a moment. We need to see the dark side of the moon. Adventurers know that assembling bits into a coherent travel experience is tricky.

I wanted to undo the initial system design mistakes and use isomorphic HTML rendering for SEO. Astro was the perfect choice due to Vue support. So, I started a move from SPA to TypeScript SSR.

A few months into the transition, AWS credits expired. Infrastructure bills quickly grew from 60 to 100 euros a month with no spike in usage. Amazon started charging customers for public IPs and adjusted prices for inflation.

Valisa didn't really need Kubernetes in the first place. I decided to use an opportunity to try Netlify instead. However, I had to move the web app logic and create new bugs. Siarhei deployed Go services to Cloud Run. I tested it locally and found that backend cold start time was reasonable.

In August 2024, I finished major tasks and shipped it. This caused a short downtime due to switching DNS from Route 53 to Netlify, but overall, everything was smooth. Infra costs sunk to 20 euros per month.

I have a design system based on Material 3, better fare page, registration, updated landing and copy, and much simpler architecture. As I drew the line and looked back, I realized something.

Enough of modern tech experiments. I must build the product!

Good bits

This is ten percent luck, twenty percent skill
Fifteen percent concentrated power of will
Five percent pleasure, fifty percent pain
And a hundred percent reason to remember the name day

– Fort Minor

Starting an indie company and embracing a healthy economic model without VC money was the best decision ever. Small teams and solopreneurs can be incredibly productive.

The Estonian e-Residency program delivered awesome onboarding. We had an excellent experience with our accounting provider. A friendly business climate makes a difference between life and death for a small company.

Something that was once a weakness can become a strength. Valisa's modern tech stack is ready for scale. Tailwind UI license is definitely worth the investment. I enjoy having a design system while building a planner.

Learnings

We are riding an atom with a jetpack. And it was engine tuning in flight. The cost of this learning is high. We committed resources to secondary tasks and played the over-engineering game. Seeing the bigger picture is way more important. I appreciate this eye-opening experience.

  1. Focus on core product
  2. Avoid unnecessary complexity
  3. Reject side hustles
  4. Done is better than perfect

Conclusion

What could be better than solving a problem that frustrated you? To find an answer, you should try. Social pressure, financial constraints, and geopolitical events affected my path. A healthy portion of adventurism and strong motivation help sail storm and still.

Samurai has no drone – only a remote control.