尚未偵測到更新。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á.