Builder · Projeto pessoal

Feira Viva

Resumo executivo. Concebi, arquitetei e implementei sozinho o Feira Viva, uma plataforma web para descoberta de feiras livres e reserva de produtos para retirada presencial. Defini problema, escopo, modelo de dados e regras de autorização; usei IA (Lovable e Claude Code) como aceleradora de construção. O MVP está funcional e publicado. É um projeto de aprendizagem: o objetivo era provar, na prática, o ciclo completo de concepção a deploy.

Estágio
MVP funcional em produção
Papel
Tudo, do discovery ao deploy
Stack
React, TypeScript, TanStack Start (SSR), Supabase, RLS, Vercel

Contexto

Feiras livres são uma instituição brasileira: acontecem toda semana, em dias fixos, em milhares de bairros. Mas a informação sobre elas é analógica. Quem muda de bairro não sabe onde nem quando tem feira; quem quer um produto específico não sabe qual banca vende; o feirante não tem canal digital próprio e depende de ponto e clientela habitual.

Problema e oportunidade

Dois lados com problemas complementares:

  • Consumidor: descobrir feiras por localização e dia, conhecer bancas e garantir produtos sem depender de sorte.
  • Feirante: dar visibilidade à banca e receber pedidos antecipados, sem operar logística de entrega.

A hipótese central: uma camada fina de descoberta + reserva (sem pagamento on-line, sem entrega) resolve a dor dos dois lados com uma fração da complexidade de um delivery.

Meu papel

Tudo. Definição de problema, proposta de valor, escopo, arquitetura, modelo de dados, regras de autorização, UX, implementação, deploy e iteração. Sem time, sem cliente, sem prazo externo: as restrições eram tempo pessoal e a decisão consciente de aprender construindo.

Decisões de escopo (e o que ficou de fora)

O corte do MVP foi a decisão de produto mais importante:

EntrouFicou de foraPor quê
Descoberta por estado, cidade, bairro e dia da semana, com ordenação por proximidadeMapa interativoDistância calculada resolve “qual feira é perto de mim” sem o custo de renderizar, carregar e manter um mapa
Catálogo de bancas por feiraPagamento on-linePagamento na retirada elimina PCI, split e disputas
Reserva para retirada no diaEntrega e logísticaEntrega transformaria o produto em delivery, outro negócio
Dois perfis (consumidor e feirante)Avaliações e socialSem massa crítica, avaliação é ruído

Reserva para retirada é a aposta que define o produto: preserva o ritual da feira (a pessoa vai até lá) e dá previsibilidade ao feirante, sem criar operação logística.

Arquitetura e decisões técnicas

  • TanStack Start com SSR: descoberta local depende de busca; renderização no servidor garante páginas de feiras indexáveis por SEO.
  • Supabase (Postgres + Auth): backend gerenciado para ir do modelo de dados à API sem construir servidor próprio.
  • Row Level Security: autorização resolvida no banco, não na aplicação. Feirante só enxerga e edita a própria banca; consumidor só vê as próprias reservas. Defini as policies como parte do modelo de dados, não como remendo posterior.
  • Vercel com deploy contínuo: cada push em produção em minutos, o que sustentou iteração rápida.

Como usei IA (e onde ela não decidiu nada)

  • Lovable acelerou a base de interface e a estrutura inicial.
  • Claude Code acelerou implementação, refatoração e evolução do código.

O que a IA não fez: definir o problema, cortar o escopo, escolher reserva em vez de delivery, desenhar o modelo de dados, decidir que autorização viveria no banco via RLS. IA multiplicou minha velocidade de execução; a direção foi humana em todas as decisões que importam.

O produto

A jornada completa do consumidor, do MVP em produção.

Tela de descoberta do Feira Viva: lista de feiras em cards, com filtros de estado, cidade, bairro e dia, e ordenação por proximidade
Descoberta. Filtros por localização e dia, com ordenação opcional por proximidade. A distância aparece em cada card; o mapa ficou de fora de propósito.
Página de uma feira no Feira Viva, com endereço, dia e horário, e as bancas cadastradas
Página da feira. Endereço, dia e horário no topo; abaixo, as bancas daquela feira. É a página pensada para ser indexável por busca, o que motivou o SSR.
Catálogo de uma banca com produtos e preços por quilo, e o painel lateral de reserva com total, data de retirada e observação
Catálogo e reserva. Quantidade por item, total calculado e data de retirada. Sem pagamento on-line: o dinheiro continua acontecendo na banca.
Lista de reservas do consumidor com status pendente e cancelada, feira, data de retirada, itens e valor
Minhas reservas. Estado explícito (pendente, cancelada) e cancelamento pelo consumidor. Cada usuário só enxerga as próprias reservas, regra garantida por RLS no banco.

Telas da visão do consumidor. A visão do feirante (gestão de banca, catálogo e pedidos recebidos) existe no produto e não está retratada aqui.

Resultados e estágio atual

  • MVP funcional publicado, com jornada completa: encontrar feira → explorar bancas → reservar → retirar.
  • Validação qualitativa com usuários próximos, com boa recepção. Sem lançamento comercial e sem claim de tração: o projeto cumpriu o objetivo de aprendizagem para o qual foi desenhado.

O que eu faria diferente

  • Ter definido as policies de RLS antes das primeiras telas, não durante: refazer autorização com o produto andando custa mais caro do que desenhá-la junto com o modelo de dados.

Se o projeto saísse da aprendizagem para operação real

Levar o Feira Viva ao mercado foi uma possibilidade considerada e abandonada: o objetivo era aprender construindo. Mas o caminho de validação estaria mapeado:

  • Onboarding assistido de feirantes reais de uma única feira piloto.
  • Notificação de véspera de feira para reservas.
  • Taxa de retirada das reservas como métrica central de confiança.

Competências demonstradas

Definição de problema e proposta de valor · corte de escopo de MVP · arquitetura e modelo de dados · autorização por RLS · SSR e SEO · desenvolvimento assistido por IA · deploy contínuo · iteração sobre produto em produção