尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Cardápio online com pedido, checkout, nota fiscal automática (NFC-e) e painel do dono. Roda na Vercel (site e API) com banco Supabase (Postgres e armazenamento das fotos).
Site no ar: https://garage-burger-delta.vercel.app (painel do dono em /admin/).
/): as 10 categorias e os 79 itens copiados do InstaDelivery, com fotos. O cliente pode tirar ingredientes, pôr adicionais e escrever uma observação./checkout): nome, CPF (validado), WhatsApp e localização atual (GPS) são obrigatórios. Também tem retirada no balcão e pagamento por Pix, cartão ou dinheiro com troco./pedido?c=CÓDIGO): status do pedido, QR do Pix, nota fiscal e botão do WhatsApp./admin/, link discreto no rodapé): login com e-mail e senha validado no servidor. Tem pedidos em tempo real, preços, itens, ingredientes, adicionais, estoque, financeiro com gráficos e configurações (loja, entrega, Pix e nota fiscal).server/schema.sql) e importa o cardápio.[YOUR-PASSWORD] pela senha do banco.https://abcd1234.supabase.co).service_role (clique em Reveal). Essa chave é secreta: use só na Vercel e nunca no navegador.Entre em vercel.com com a sua conta do GitHub.
Add New… → Project e importe o repositório joaovitordhdid/garage-burguer.
Em Framework Preset deixe Other. Não precisa mudar o comando de build nem a pasta: o vercel.json já configura tudo.
Abra Environment Variables e cadastre:
| Variável | Valor |
|---|---|
DATABASE_URL | a connection string do Transaction pooler (passo 1) |
ADMIN_EMAIL | o seu e-mail de login no painel |
ADMIN_PASSWORD | uma senha forte (só vale no primeiro acesso, depois troque pelo painel) |
SUPABASE_URL | Project URL do Supabase |
SUPABASE_SERVICE_ROLE_KEY | chave service_role do Supabase |
FOCUS_NFE_TOKEN, NFE_MODE | opcionais: token e modo da nota fiscal (senão vale o que estiver no painel) |
Clique em Deploy. Em um ou dois minutos o site está no ar no endereço https://<projeto>.vercel.app.
Abra o site uma vez (o primeiro acesso cria as tabelas, a conta do dono e o cardápio) e entre em /admin/.
Daqui em diante, cada git push no GitHub publica sozinho uma nova versão. Para usar um domínio próprio: Project → Settings → Domains.
Se alguma variável mudar, refaça o deploy (Deployments → ⋯ → Redeploy) para ela valer.
public/ é servido direto pela CDN da Vercel (/checkout, /pedido e /admin/ funcionam sem .html)./api/* vai para uma única função serverless (api/index.js), que é o mesmo app Express do npm start.uploads, criado sozinho no primeiro envio), porque o disco da Vercel é somente leitura.schema.sql liga o RLS em todas as tabelas, e assim a API pública do Supabase não expõe nada.Precisa do Node.js 22.
npm install
[email protected] ADMIN_PASSWORD=umaSenhaForte npm start
# abre http://localhost:3000
Sem DATABASE_URL, o sistema usa um Postgres embutido (PGlite) salvo na pasta data/, e você não precisa instalar nada. Para usar o banco do Supabase no computador, coloque a DATABASE_URL no ambiente (veja .env.example).
Sem as variáveis do Supabase Storage, as fotos enviadas ficam em public/images/uploads/.
A conta do dono é criada no primeiro start com o ADMIN_EMAIL e o ADMIN_PASSWORD informados. Se você não informar, uma senha aleatória aparece no terminal. Depois dá para trocar a senha no painel, em Configurações.
Para recomeçar do zero com o cardápio original no computador: npm run reset-db (apaga data/) e reinicie.
Veja também o arquivo .env.example.
| Variável | Para quê |
|---|---|
DATABASE_URL | Postgres do Supabase (Transaction pooler, porta 6543). Sem ela, roda o banco embutido em ./data |
ADMIN_EMAIL, ADMIN_PASSWORD | Conta do dono, criada no primeiro acesso |
SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY | Envio de fotos pelo painel (Supabase Storage) |
FOCUS_NFE_TOKEN, NFE_MODE | Opcional: substitui o token e o modo configurados no painel |
NODE_ENV=production | Cookie seguro e desliga os dados de exemplo (na Vercel isso já é automático no deploy de produção) |
ORDER_RATE_LIMIT | Pedidos por IP a cada 10 min (padrão 8, contado por instância) |
DATABASE_POOL_MAX | Conexões por instância (padrão 3) |
DATA_DIR | Só local: pasta do banco embutido (padrão ./data) |
Veja docs/NOTA-FISCAL.md. O sistema começa em modo teste: as notas saem como "sem valor fiscal". Para emitir de verdade, você precisa do certificado digital A1, do CSC da Sefaz-SE e de uma conta na Focus NFe.
server.js app Express: API pública do cardápio, login, preparo do banco
api/index.js função serverless da Vercel (exporta o app)
vercel.json rotas, arquivos estáticos e cabeçalhos de segurança
server/schema.sql tabelas do Postgres (idempotente, roda a cada start)
server/db.js banco: Supabase via DATABASE_URL ou PGlite local
server/auth.js senha bcrypt + sessão em cookie httpOnly
server/seed.js importa server/menu-source.json se o cardápio estiver vazio
server/routes/orders.js checkout, Pix, acompanhamento
server/routes/admin.js API do painel (toda protegida)
server/nfe/ emissor NFC-e (teste e Focus NFe), DANFE, Pix, QR code
public/ cardápio, checkout, pedido e painel (/admin)
scripts/ extração do cardápio original
A versão de demonstração em HTML puro (demo/, npm run demo) foi feita para o banco SQLite antigo e não gera mais. Ela fica congelada como está.