Caso de estudo · Full Stack Developer · desde janeiro de 2026
Celina: um marketplace em produção construído por mim sozinho, do primeiro commit até ao lançamento
O Celina (celinaeda.ru) é um marketplace que junta cozinheiros caseiros e clientes. Trabalho nele em Lisboa desde janeiro de 2026, e em julho de 2026 lancei-o a partir de Lisboa, Portugal. Desenhei e construí todas as camadas — front-end, back-end, infraestrutura e SEO — e continuo a mantê-lo no ar. Não é uma demonstração, é um negócio a funcionar.
O desafio
Um marketplace de dois lados é dos sistemas mais difíceis de construir sozinho. Os dois lados têm de funcionar ao mesmo tempo: cozinheiros que se inscrevem e cuja identidade é verificada, e clientes que se atrevem a encomendar a alguém que não conhecem.
A isso junta-se uma terceira exigência que em muitos projetos só recebe atenção no fim: ser encontrado. Um marketplace que ninguém encontra no Google já nasce morto.
- Dois públicos, um produto. Os cozinheiros precisam de uma ferramenta de trabalho, os clientes de uma loja; ambos correm sobre a mesma base de código.
- Confiança à partida. Sem verificação de identidade dos cozinheiros, ninguém encomenda comida a um desconhecido.
- Visibilidade desde o primeiro dia. Sem tráfego orgânico não aparece oferta, e sem oferta não aparece tráfego.
- Um programador, não uma equipa. Cada decisão técnica tinha de ser mantida por uma só pessoa.
O front-end: uma aplicação React que o Google consegue ler
Um marketplace vive de tráfego orgânico, mas uma single-page app clássica entrega ao rastreador uma página HTML praticamente vazia. Optei por React 18 com TypeScript e geração estática através do Vite: o visitante recebe uma aplicação, o motor de busca recebe HTML pronto.
Daí resultaram mais de 100 landing pages geradas previamente, indexadas tanto pelo Google como pelo Yandex. Em cada deployment, o site submete automaticamente as páginas novas e alteradas através do IndexNow, para que uma página nova não fique à espera de que um rastreador passe por acaso.
- React 18, TypeScript e Vite com geração estática: mais de 100 páginas geradas previamente e servidas diretamente como HTML.
- IndexNow em cada deployment, para que as páginas novas se anunciem sozinhas aos motores de busca.
- Uma base de código para três papéis: cliente, cozinheiro e administrador, cada um com a sua própria vista.
- O telemóvel como ponto de partida. O processo de encomenda foi desenhado para o telemóvel e só depois para o ecrã grande.
O back-end: encomendas, identidade e acessos
Nos bastidores corre Node.js com Express e Prisma sobre MySQL. O centro de tudo é o ciclo de vida de uma encomenda: de colocada a entregue, com um estado que ambas as partes veem em tempo real. Enquanto o cliente conseguir ver onde está a encomenda, ninguém tem de telefonar.
Para os cozinheiros existe um processo de KYC: carregam o documento de identificação, que é analisado antes de a sua cozinha ficar visível. As permissões são validadas no servidor e não na interface — aquilo que o browser esconde, o servidor também bloqueia.
- Node.js, Express e Prisma sobre MySQL, com um estado de encomenda que vai de colocada a entregue.
- KYC para os cozinheiros: carregar documentos, analisar e só depois publicar.
- Os papéis são verificados no servidor, para que um pedido manipulado a partir do browser não dê acesso a mais nada.
- Sessões em vários dispositivos, com a possibilidade de o utilizador terminar uma sessão à distância.
A infraestrutura
A aplicação corre em contentores Docker atrás do nginx num VPS próprio, com certificados Let's Encrypt que se renovam sozinhos. Um deployment é um único comando; não há um passo manual onde eu me possa esquecer de alguma coisa. Todas as noites corre automaticamente uma cópia de segurança da base de dados e dos documentos carregados.
Além disso, meço o funil completo: da visita ao catálogo e do catálogo à encomenda. Em conjunto com os dados da Search Console, é isso que determina quais as páginas que recebem atenção — e não a minha intuição.
- Docker, nginx e Let's Encrypt num VPS próprio.
- Deployments automatizados, para que uma versão não seja uma lista de tarefas manuais.
- Cópias de segurança diárias da base de dados e dos ficheiros carregados.
- Um funil medível: da visita ao catálogo e à encomenda, ligado à Search Console.
Escolhas e compromissos
Cada escolha neste projeto teve um custo. A geração estática torna o site encontrável, mas qualquer alteração de conteúdo obriga a uma nova build; isso é aceitável enquanto a build for automática. A análise manual de KYC não escala indefinidamente, mas um serviço externo de verificação custa, nesta fase, dinheiro que fica melhor aplicado no produto.
Tão importante como isso é o que deliberadamente não fiz: nada de Kubernetes, nada de microsserviços, nenhum serviço extra com mensalidade. Um servidor, uma base de dados e um back-end monolítico são, com este volume, a opção mais barata e mais fácil de manter — e sou eu que me levanto a meio da noite quando alguma coisa parte.
- Geração estática em vez de server-side rendering: mais lenta a publicar, mais rápida e mais barata para o visitante.
- Análise manual de KYC em vez de um serviço pago de verificação, até o volume o justificar.
- Um VPS em vez de uma plataforma cloud, por custos previsíveis e sem ficar dependente de um único fornecedor.
- Um monólito em vez de microsserviços, porque há um programador e não cinco equipas.
O resultado
O Celina corre em produção em celinaeda.ru. Há mais de 100 páginas no índice do Google e do Yandex, os cozinheiros inscrevem-se e são verificados, e os clientes fazem encomendas que podem seguir em direto. Design, construção, publicação e gestão estão a cargo de uma só pessoa.
Mais importante do que os números é aquilo que não acontece. Não há uma agência a quem telefonar quando algo parte, não há uma plataforma que aumente os preços a meio do caminho, e não há uma parte da stack que eu não consiga reparar sozinho.
- Mais de 100 páginas indexadas pelo Google e pelo Yandex.
- Em produção em celinaeda.ru.
- Um programador para design, código, servidores e SEO.
- A stack completa sob gestão própria, sem partes dependentes de uma agência externa.
O que isto significa para o seu projeto
Tudo o que torna caro um projeto como o seu — autenticação, um processo de encomenda pronto para pagamentos, verificação, publicação e SEO técnico — já resolvi em produção na minha própria plataforma. Não me está a pagar para aprender à sua custa.
Sou português e vivo e trabalho em Lisboa. Faturo em euros, com um descritivo detalhado. O RGPD está no desenho desde o início: nenhum rastreador que não tenha pedido, estatísticas que só carregam depois do consentimento e alojamento numa região à sua escolha.
- Preço fixo à partida. Site pessoal de uma página a partir de €1.200, landing page a partir de €1.950, site empresarial com SEO técnico a partir de €3.900 e aplicação web a partir de €12.000.
- Orçamento em 48 horas, fechado antes de o trabalho começar; às mensagens respondo em 24 horas.
- Uma fatura detalhada em euros, com tudo o que dela consta definido previamente no orçamento.
- Primeira conversa por videochamada quando lhe der jeito; a partir daí acompanha o progresso num ambiente de testes que abre você mesmo.
- O mesmo fuso horário. A sua manhã é a minha manhã, por isso nada fica um dia à espera.
- Português como língua de trabalho, sem intermediários; o site é entregue integralmente em português.
- Fica dono de tudo. Código, design e dados passam para si no pagamento final, sem esquemas de licenciamento e sem mensalidade para continuar a usar aquilo que já pagou.