Cardápio digital da Garage Burger: hambúrguer artesanal feito na chapa. Peça pelo celular.
Translation pending
CommerceJavaScript · CSSGitHub @joaovitordhdidOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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á.