Disfrazate
전 세계 매장을 스크랩해 할로윈드 복장을 찾고, AI가 변신시켜 줍니다
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗PDV operacional (vendas, mesas/comandas, fiado, caixa) e administração (produtos, estoque, clientes, caixas, usuários, painel, análise e lista de reposição).
Princípio: simplicidade na operação, profundidade na gestão.
server/src)central-pdv, banco pdv, região São Paulo), migrations versionadas em server/src/migrations; testes usam PGlite (Postgres em memória)web/src), tema claro/escuro automático, responsivaserver/test)npm install
cp .env.example .env # cole a DATABASE_URL do Neon
npm run migrate # aplica migrations pendentes (também roda ao iniciar)
npm run create-admin -- --name "Dono" --username dono --super # super admin (pede a senha no terminal)
npm run create-admin -- --name "Gerente" --username gerente # admin comum (opcional)
npm run dev # API :3001 + interface :5173
Entre com o super admin e libere os módulos em Administração → Liberações (Mesas, Fiado, Estoque, Inventário, Análise, Reposição, Auditoria vêm bloqueados). Depois: Administração → Configurações, defina o código do caixa e o código de cancelamento, cadastre produtos e crie as contas das funcionárias (perfil Operador).
Produção: npm run build && npm start (a API serve a interface em dist/). Use HTTPS e COOKIE_SECURE=true.
Demonstração com dados fictícios (Postgres em memória, nada vai ao Neon):
npm run build
PDV_DEMO_PASSWORD=uma-senha-qualquer PDV_DEMO_CASH_CODE=2468 npm run demo # usuários: super / admin / caixa
npm test # testes de API e regras de negócio
npm run typecheck
| Variável | Padrão | Uso |
|---|---|---|
PORT | 3001 | Porta da API |
DATABASE_URL | — | Conexão do Neon (obrigatória em produção; sem ela usa memória) |
DB_POOL_MAX | 10 | Conexões por instância |
BUSINESS_TZ | America/Sao_Paulo | Fuso para dias/relatórios |
COOKIE_SECURE | false | true atrás de HTTPS |
SETUP_TOKEN | — | Só no primeiro acesso ao painel central (/central) |
STRIPE_SECRET_KEY | — | Chave secreta do Stripe (sk_live_… / sk_test_…) |
STRIPE_PRICE_ID | — | Preço recorrente da assinatura (price_…) |
STRIPE_SETUP_PRICE_ID | — | Complemento da 1ª cobrança (instalação), cobrado uma vez junto com a 1ª mensalidade (opcional). Ex.: instalação de R$ 250 já com o 1º mês = mensalidade R$ 80 + complemento R$ 170 |
STRIPE_WEBHOOK_SECRET | — | Segredo do webhook (whsec_…) |
MONTHLY_PRICE_CENTS | 8000 | Mensalidade usada na receita estimada do painel central |
SIGNUP_TRIAL_DAYS | 0 | Dias de teste grátis para quem contrata pelo site (0 = paga na hora) |
APP_URL | — | Endereço do site, ex.: https://centralpdv.vercel.app (volta do Checkout) |
Nenhum segredo é necessário em código. Senhas e códigos de caixa são guardados com hash scrypt.
Mais detalhes: docs/ARQUITETURA.md e docs/PENDENCIAS.md.
localhost).vercel.json já define build, saída dist/ e a função api/index.ts).DATABASE_URL — string de conexão do Neon (use a do endpoint -pooler).DB_POOL_MAX — 3 (funções serverless abrem poucas conexões cada).SETUP_TOKEN — texto longo e aleatório, usado só no primeiro acesso.BUSINESS_TZ — America/Sao_Paulo./ é a apresentação; o sistema fica em /app): no primeiro acesso, informe o SETUP_TOKEN e crie o administrador central (dono da plataforma)./central): cria e suspende estabelecimentos, libera módulos, dá teste grátis ou isenção, redefine senhas.Cada estabelecimento tem um schema próprio no Postgres (t_<nº>); logins são únicos entre todos.
price_…. Para a taxa de instalação, crie um preço avulso (one-time) e use em STRIPE_SETUP_PRICE_ID.https://SEU-SITE/api/stripe/webhook com os eventos
checkout.session.completed, customer.subscription.created, customer.subscription.updated,
customer.subscription.deleted e invoice.payment_failed. Copie o whsec_….STRIPE_* e APP_URL na Vercel e faça o deploy.Sem assinatura ativa (ou com pagamento recusado), o sistema sai do ar na hora para o estabelecimento; o administrador vê o botão para pagar e volta assim que o Stripe confirma.
O caixa continua vendendo sem internet (dinheiro, Pix e cartão): a venda fica guardada no aparelho e é enviada sozinha quando a conexão volta, com o horário real. Fiado, mesas, cadastros, relatórios e fechamento de caixa precisam de internet. É preciso ter aberto o sistema com internet pelo menos uma vez no aparelho.
GET /api/health responde {"ok":true} quando o servidor e o banco estão no ar. Aponte um monitor (ex.: UptimeRobot, grátis) para https://SEU-SITE/api/health.