🎁 Presentex é o hub onde casais, famílias e squads organizam todos os mimos de forma elegante, rápida e colaborativa. Pense nele como um “Notion dos presentes”: você cria listas temáticas, convida quem quiser, acompanha valores em tempo real e recebe ping de WhatsApp quando algo novo acontece.
Construí o app para usar no meu relacionamento (e já está vivo em produção!), mas a ideia é que qualquer pessoa possa hospedar a sua própria instância, adaptar o visual e até hackear novas integrações. Se quiser apenas utilizar, basta rodar localmente; se quiser evoluir, o código está todo aqui sob licença MIT.
| Login | Cadastro |
|---|---|
![]() |
![]() |
| Home | Perfil |
|---|---|
![]() |
![]() |
| Produtos | Tela da lista |
|---|---|
![]() |
![]() |
- Autenticação Supabase com confirmação de e-mail e fluxo protegido.
- Criação, edição e compartilhamento de listas de presentes com múltiplos membros.
- Produtos com valores sugeridos, status e estatísticas calculadas em tempo real.
- Notificações por WhatsApp via Evolution API disparadas por Edge Function.
- Experiência responsiva construída com Vite, React 18, TypeScript, Tailwind e shadcn/ui.
- Infra pronta para produção: Docker multi-stage, Nginx, Apache proxy e scripts de deploy.
| Camada | Tecnologias |
|---|---|
| Front-end | React 18, TypeScript, Vite, Tailwind CSS, shadcn/ui |
| Backend-as-a-Service | Supabase (Auth, PostgreSQL, Edge Functions, Storage) |
| Edge Functions | Deno + Supabase Functions (notify-whatsapp, scrape-product) |
| Notificações | Evolution API (envio de mensagens WhatsApp) |
| Infra/DevOps | Docker, Nginx, Supabase CLI |
React SPA (Vite) ──> Supabase (Auth + DB + Storage)
└─> Edge Function notify-whatsapp ──> Evolution API ──> WhatsApp
Docker (lista_presentes_app) ──> Nginx Host ──> Domínio público
- Node.js 20+ e npm
- Supabase CLI (
npm install -g supabase) - Docker + Docker Compose (opcional para produção/local infra)
- Conta na Evolution API (ou serviço similar) para o envio de notificações por WhatsApp
git clone https://github.com/<seu-usuario>/Presentex.git
cd Presentex
npm installO repositório inclui .env.example. Crie sua cópia local:
cp .env.example .env| Variável | Descrição |
|---|---|
VITE_SUPABASE_PROJECT_ID |
ID do projeto Supabase (supabase projects list) |
VITE_SUPABASE_URL |
URL base do Supabase (https://<project>.supabase.co) |
VITE_SUPABASE_PUBLISHABLE_KEY |
Chave anon gerada no dashboard Supabase |
NODE_ENV |
development ou production |
- Crie um projeto novo no Supabase.
- Atualize
supabase/config.tomlesupabase/.temp/project-refcom o seuproject_ref. - Link o projeto localmente e aplique as migrações:
npx supabase login
npx supabase link --project-ref <seu-project-ref>
npx supabase db pushnpx supabase functions deploy notify-whatsapp
npx supabase functions deploy scrape-product
# configure os segredos usados pelas funções
npx supabase secrets set \
EVOLUTION_API_URL=https://<sua-instancia-evolution> \
EVOLUTION_API_KEY=<apikey-evolution> \
EVOLUTION_INSTANCE_NAME=<nome-da-instancia>npm run dev
# abra http://localhost:5173npm run build # gera o bundle de produção
npm run preview # serve o build para QA rápidoEste repositório inclui tudo necessário para subir o front-end estático dentro de um Nginx Alpine.
docker-compose build
docker-compose up -ddocker-compose.yml: expõe o app em127.0.0.1:3001(ajuste conforme seu host)configs/nginx-host.conf: reverse proxy (porta 8083) para expor o container dentro do VPSscripts/deploy.sh/scripts/health-check.sh: automação de deploy e verificação
Adapte as portas segundo a sua infraestrutura — o README descreve o fluxo usado em produção (Apache → Nginx → Docker → App).
.
├─ src/
│ ├─ components/ # UI (cards, dialogs, forms, shadcn/ui wrappers)
│ ├─ contexts/ # Auth provider com Supabase
│ ├─ hooks/ # useListaSums, useToast, useMobile
│ ├─ integrations/
│ │ └─ supabase/ # client e tipagens locais
│ ├─ lib/ # utilitários (preço, cores, notificações)
│ └─ pages/ # Auth, Listas, Profile, etc.
├─ supabase/
│ ├─ migrations/ # histórico completo do schema
│ ├─ functions/ # notify-whatsapp, scrape-product
│ └─ config.toml # apontar para o seu project_ref
├─ configs/ # Nginx/Apache prontos para VPS
├─ scripts/ # deploy + health check automatizados
└─ docker-compose.yml # build & run em produção
- Nunca exponha chaves reais (
anon,service_role, tokens Evolution API) em commits públicos. - Use
.env, Supabase Secrets e gerenciadores seguros (1Password, Doppler, Vault, etc.). - Antes de publicar um fork, execute um
git greppara ter certeza de que IDs e URLs sensíveis não ficaram no histórico.
Pull Requests são bem-vindos! Siga este fluxo:
- Abra uma issue descrevendo a melhoria/bug.
- Crie um branch a partir de
main. - Rode
npm run lint/npm run buildantes de enviar o PR. - Descreva claramente mudanças de schema ou dependências.
Este projeto está sob a MIT License. Use, modifique e distribua como preferir, mantendo os créditos originais.
Se você publicar algo nas redes (por exemplo, no LinkedIn), marque o projeto e compartilhe melhorias! Isso ajuda outras pessoas a reutilizarem a mesma base para listas colaborativas de presentes.





