Lucas Rezende
All notes
ProdutoOperações· May 20, 2026 · ~6 min

6 versions in 6 years: lessons from keeping a product alive

Started in Excel in 2020. Went through VBA, MS Access, plain React, Next.js, and today Next.js + Supabase. What I learned between each jump about building software that survives in production in a real operation.

Loja Ella is a plus-size consignment boutique — a business I run with my wife. The system live there today, in production, is the 6th stack version — started in Excel in 2020 and reached Next.js + Supabase + Realtime in 2024. Each jump happened when the tool's ceiling hit the operation's real problem.

The timeline

  • v1 — Excel (2020). Basic consignment tracking. Worked up to 50 simultaneous pieces and 30 customers. Then it became the infamous spreadsheet nobody understood.
  • v2 — VBA (2021). Macros for records and billing. Solved automated flow, but debugging was hell and impossible to share between machines.
  • v3 — MS Access. Attempt to become a 'real database'. Hit the wall when the team grew and needed to work in parallel.
  • v4 — Plain React + Firebase. First web version. Accessible from anywhere. Undisciplined schema, excessive denormalization — snowballed.
  • v5 — Next.js + Postgres. First time with serious relational schema. Server-side pages, SEO, continuous deploy. Here it became software.
  • v6 — Next.js + Supabase + Realtime (current). Multi-role, level RBAC, realtime Kanban between counter / sales / courier. 16 integrated modules, 1,500+ active customers, +1,200 pieces in inventory.

Lesson 1 — Switch stacks when the problem changes, not before

Excel isn't 'wrong' in 2020 when the problem is tracking 30 consignment pieces. It becomes wrong when operations reach 500 pieces and 4 people working simultaneously. Each stack jump happened after I faced a real pain — not because the new tool was trendy. That was the most expensive lesson.

Lesson 2 — Relational schema only pays off when the team is multi-person

In v1-v3, I was basically the only 'technical user'. Schema could be flat, denormalized, anything — I just had to remember. When the team grew (sales, courier, finance), undisciplined schema meant everyone inventing their own convention. v5 was the first version where I decided: 1 schema, 1 source of truth, business rules in the DB with check constraints and RLS.

Lesson 3 — Software for a small business is NOT software for a startup

Everything in Loja Ella is optimized for ONE operation: ours. No multi-tenant, no internationalization, no absurd SLA. It has *exact* flows for how the store operates: consignment bag with 4 pieces has its own lifecycle, editorial storefront talks to internal inventory, the courier has a dedicated route. Skin in the game — I am the customer, I feel every bug, I profit from every improvement. That's impossible to replicate with generic SaaS.

What matters for hiring

This case taught me more about software engineering than any course. Not because I got everything right — I got almost nothing right on the first try. Because I had a real operation, with real pain, and my own money on the line for 6 years, and was forced to iterate on the same problem without being able to quit. A recruiter who understands that knows: a vibe coder with 6 years of shipping is different from a vibe coder with 6 months.

6 versions in 6 years: lessons from keeping a product alive · Lucas Rezende