FoodDesk

Adeus aos blocos de papel. A fila anda mais depressa.

O FoodDesk é o sistema de pedidos open source para festas gastronómicas, restaurantes pop-up e cozinhas comunitárias. Os empregados registam os pedidos no telemóvel, a cozinha marca os pratos num tablet, os talões imprimem-se sozinhos — e no fim da noite as contas já estão feitas. Sem nuvem, sem subscrições, sem comissões por pedido.

Contas de demonstração: mario (empregado), cucina (cozinha), admin — palavra-passe fooddesk-demo. Abre em dois dispositivos: envia um pedido num deles e vê-o aparecer no outro no mesmo instante.

A registar um pedido no telemóvel do empregado

Pensado para toda a equipa

Cada função tem exatamente o ecrã de que precisa — e nada mais.

🧾 Os empregados

Uma PWA nascida para o telemóvel: tocas nos produtos, contas os couverts, acrescentas a nota para a cozinha, envias. Os pedidos são numerados por jornada e uma falha de rede nunca cria um duplicado.

🍳 A cozinha

Os pedidos novos aparecem no instante em que são enviados, sem recarregar. Cada prato marca-se como pronto com um só toque, e um pedido anulado grita ANULADO em vez de desaparecer em silêncio.

🎩 O chefe de sala

Comanda a sala com poderes quase de administrador: o menu, todos os pedidos, anulações e relatórios — mas sem página de definições, e no pessoal só gere os empregados de mesa.

⚙️ O administrador

Constrói o menu, gere pessoal e funções, e desenha no navegador todos os documentos impressos — logótipo, marca de água, tamanho do papel, rolo térmico de 80mm incluído — em cinco idiomas.

📊 Quem faz as contas

Um painel diário em tempo real: receitas, couverts, média por couvert, detalhe por produto e categoria — mais CSV limpo e relatório PDF de uma página.

🖨 A impressão

Os talões de cozinha vão diretos para qualquer impressora CUPS, com nova tentativa automática se a impressora encravar; sem impressora, entra em ação o diálogo de impressão do navegador.

Vê em ação

A demo ao vivo carrega uma noite de festa de exemplo, reiniciada a cada 6 horas.

Ecrã de cozinha com pedidos ao vivo
O ecrã da cozinha: um toque grande por prato, os pedidos completam-se sozinhos.
Painel de relatórios de fim de dia
Relatórios de fim de dia: receitas, couverts e detalhes, prontos a exportar.

Uma noite na festa

Tudo corre numa única máquina barata — um mini-PC ou uma placa classe Raspberry — no Wi-Fi do recinto. Os telemóveis instalam o FoodDesk como uma app nativa, diretamente do navegador.

📱 Telemóveis dos empregadosPWA no Wi-Fi do recinto
🍳 Tablet da cozinhaatualizações ao vivo
🖥 Uma única máquinanginx · Fastify · SQLite
🖨 ImpressoraCUPS

A base de dados é um único ficheiro SQLite, com cópia de segurança automática a cada 15 minutos. Um pedido registado à 1h30 ainda conta para a noite em curso — os restaurantes não acabam à meia-noite.

Põe-no a funcionar

Um comando com Docker. A palavra-passe de admin gerada é impressa no primeiro arranque.

docker run -d --name fooddesk -p 3000:3000 -v fooddesk-data:/data \
  ghcr.io/adefilippo83/fooddesk:latest
docker logs fooddesk   # no primeiro arranque imprime a palavra-passe de admin gerada

Preferes um servidor no local? Um script idempotente configura systemd, nginx e backups em Debian. Ou abre-o no GitHub Codespaces para uma instância descartável.

Princípios que o código faz mesmo cumprir

TypeScript de ponta a ponta · Fastify · SQLite · React 19 PWA · GPLv3.

  • O dinheiro são cêntimos inteiros — sem floats no caminho do dinheiro, e os preços vêm sempre da base de dados — um cliente adulterado não consegue obter descontos.
  • A história é imutável — as linhas de pedido fotografam nome e preço; as anulações ficam auditadas, nunca apagadas. Os recibos de ontem sobrevivem ao menu de hoje.
  • A autorização vive no servidor — todas as rotas estão protegidas; a UI que esconde os ecrãs de admin é só cosmética e a suite de testes é o contrato verdadeiro.
  • Blindado de origem — palavras-passe scrypt, bloqueio de login, CSP e cabeçalhos de segurança, verificação de Origin nas escritas, envio de pedidos idempotente.