Marketplace · E-commerce · App mobile
Resolvi Desapegar
Marketplace de moda e luxo seminovo, com loja online, painel administrativo, API REST e app para Android e iOS. Busca própria, múltiplos meios de pagamento, frete pelos Correios e notificações push.
- Meu papel
- Desenvolvedor atual · manutenção e evolução do site, da API e do app

Em números
40+
telas no app Ionic/Angular
30+
módulos no painel administrativo
3
gateways de pagamento integrados
~25 ms
consulta ao catálogo, antes ~1,5 s
Contexto
O Resolvi Desapegar (resolvidesapegar.com.br) é um marketplace de bolsas, joias, relógios e acessórios de luxo seminovos e originais, vindos de pessoas que decidiram praticar o desapego. São dois repositórios: a plataforma web em PHP 8.2, que serve a loja, o painel administrativo e a API REST a partir de um núcleo compartilhado, e um app Ionic/Angular empacotado com Capacitor para Android e iOS, publicado nas duas lojas. Hoje sou o desenvolvedor responsável por mantê-la e evoluí-la.
O desafio
O catálogo tem peças únicas e de alto valor, então a busca precisa achar o item certo mesmo com marcas de nome curto, como “Miu Miu”, sem despejar o catálogo inteiro. Além disso, três frentes (site, painel e app) precisam usar as mesmas regras de produto, pedido e pagamento, e a operação da loja, do estoque ao envio, tem de ser feita por um painel com permissões.
O que foi construído
- Três aplicações sobre um núcleo comum: loja, painel administrativo e API REST compartilham models, formulários e helpers de regra de negócio, em vez de duplicar código entre site e app.
- Busca de produtos própria sobre uma tabela InnoDB com índice FULLTEXT, usada pelo site e pela API. O termo passa pela mesma normalização do índice (sem acento, plural reduzido ao radical) e a busca desce por degraus, do título completo até um LIKE, até achar resultado relevante. O índice é atualizado a cada 5 minutos e reconstruído de madrugada.
- Desempenho de consulta: ao filtrar na tabela base e consultar a view por uma lista de ids, em vez de filtrar na view, uma consulta caiu de cerca de 1,5 s para cerca de 25 ms.
- Checkout com vários meios de pagamento (Mercado Pago, PayPal e Braintree), webhooks para confirmar pedidos e dados de cartão tratados por tokenização do gateway, sem passar pelo servidor.
- Cálculo de frete e serviço de entrega integrados aos Correios, com cupons de desconto, pagamento à vista com desconto e parcelamento em até 10x.
- Painel administrativo com mais de 30 módulos e controle de acesso por perfis e permissões: produtos, estoque, pedidos, clientes, cupons, banners, autenticação das peças, contas a pagar, relatórios, e-mails e push.
- Fluxo para quem quer vender: cadastro de peças pelo app, acompanhamento das próprias vendas e das compras, favoritos, reservas e notificações.
- App mobile com mais de 40 telas, câmera e galeria para fotos dos produtos, leitura de código, push notifications via Firebase e notificações locais.
- Marketing e mensuração: Meta Pixel com Conversions API, feed para o Google Merchant Center, Google Analytics, newsletter e um blog em WordPress separado da aplicação.
- Infraestrutura na AWS: containers Docker em EC2 com deploy por CodeDeploy, uploads no S3 atrás do CloudFront, miniaturas geradas por Lambda e uma fila assíncrona com supervisor e cron para tarefas em segundo plano.
Destaque: Busca FULLTEXT própria · 3 gateways de pagamento · deploy na AWS com CodeDeploy
Tecnologias e papel de cada uma
- PHP
- PHP 8.2 com um framework MVC próprio, roteamento por controller e método, formulários declarativos e camada de dados ActiveModel sobre MariaDB.
- MariaDB
- Banco do catálogo e dos pedidos, com tabela InnoDB dedicada para a busca FULLTEXT.
- Ionic e Angular
- App mobile em Ionic 6 e Angular 14, com rotas por página, interceptors de autenticação e armazenamento local.
- Capacitor
- Empacota o app como Android e iOS e dá acesso à câmera, às notificações push e ao armazenamento de arquivos.
- AWS
- EC2 e CodeDeploy para o deploy, S3 e CloudFront para as mídias, Lambda para as miniaturas.
- Docker
- Container do servidor web com nginx e PHP-FPM e um container de cron, iguais no ambiente local e em produção.