← BACK 01 / PROJECT

GELATO STOCK.

Inventory control built for gelato and ice cream shops: a real multi-tenant web app, still shipping its first version.

STATUS: SHIPPING V1
03 / OVERVIEW

Why it exists.

Before software, I spent a stretch of years in Germany working jobs that had nothing to do with code. Selling gelato was one of them: restocking flavors, noticing what ran out first before a weekend rush, figuring out what to reorder, all of it done by memory and paper, the way most small shops still run today.

Gelato Stock is an attempt to fix that exact problem. It's a proper inventory system for gelato and ice cream shops: what's in stock, what's about to run out, and a clean, auditable record of every delivery that comes through the door. Built to replace the notebook, not add another app on top of it.

It's built as a real product, not a prototype: a multi-tenant Next.js application with a PostgreSQL database, transactional stock movements that never go negative, and a permission system that separates what an owner can do from what staff on the floor can do.

Engineering choices

Stock updates are transactional so a movement cannot leave a negative balance. Owner and staff permissions separate administrative work from day-to-day operations. The next step is connecting recipes to stock movements; recipe registration currently remains a catalog operation.

04 / PREVIEW

The stock, at a glance.

gelatostock.app/dashboard
8 Produtos cadastrados
3 Estoque normal
4 Estoque baixo
1 Sem estoque
⚠ 5 produtos precisam de atenção Revise os itens prioritários antes da próxima compra.
Abrir lista de compras →
Precisa comprar5 itens
Casquinha tradicionalCasquinhas Atual 0 un · Mínimo 200 un · Comprar 200 un
Açúcar refinadoIngredientes Atual 3 kg · Mínimo 5 kg · Comprar 2 kg
Copos descartáveis 500mlCopos Atual 120 un · Mínimo 500 un · Comprar 380 un

RECREATED FROM THE LIVE APP, SAMPLE DATA

05 / FEATURES

What v1 does.

06 / STACK

Under the hood.

  1. 01Next.js App Router + TypeScript
  2. 02PostgreSQL with Prisma ORM, fixed-precision decimals
  3. 03Zod validation at every input boundary
  4. 04Role-based auth and permissions
  5. 05Multi-tenant: one isolated workspace per shop
  6. 06Deployed on Vercel, database on Neon
07 / WHAT'S NEXT

Always shipping the next version.

Recipe cards already exist: each flavor gets a name, a yield, and a list of ingredients pulled straight from the stock, no duplicate products and no separate spreadsheet. But as the app itself says on that screen today: registering a recipe doesn't move the stock yet. It's a catalog, not an engine.

Two things turn it into one. An AI reading layer for delivery notes: instead of retyping every item from a supplier's paper note, a photo of it is read automatically and turned into stock entries. And recipes that actually drive the stock: define what's being produced today, and the system checks it against the recipes and the current stock, then deducts everything it used, on its own.

Here's a projection of that screen, built in the app's own visual language. Not live yet, but exactly how it will look.

gelatostock.app/producao/preview
PRÉVIA DA PRÓXIMA VERSÃO, AINDA NÃO EXISTE
Produção de hoje
4× Pistacchio 3× Vanilla 2× Chocolate 3× Caramel 1× Stracciatella
Verificação automática de ingredientes
Leite integral12.4 L necessários OK
Pasta de pistache1.8 kg necessários OK
Açúcar refinado600 g necessários ESTOQUE BAIXO
Creme de leite fresco9.2 L necessários OK

✓ Ingredientes disponíveis: estoque será descontado automaticamente.

PROJECTION IN THE APP'S REAL VISUAL LANGUAGE, NOT YET BUILT

Gelato Stock is still on its first version, and it already replaces the notebook-and-memory system most small shops run on. The next steps carry it from record-keeping into real automation: reading a delivery note instead of retyping it, and letting a day's production plan settle the stock count on its own. Same instinct that started it: noticing something in a real shop that was harder than it needed to be, and building the fix.