O Delivery é uma plataforma de código aberto que permite a personalização completa com a marca e identidade visual do seu restaurante ou mais restaurantes. Similar aos principais apps do mercado, possibilita que restaurantes estabeleçam um canal de vendas diretas, eliminando intermediários e proporcionando uma experiência de compra mais próxima aos usuários. Isso não apenas reduz custos desnecessários, mas também simplifica a gestão do estabelecimento.
Fique a vontade para Criar, Modificar, Comercializar e Distribuir!
Contribuições são sempre bem-vindas!
Video - Utilizando o App de Comida
Kanban de fluxo de trabalho do restaurante.
Gestor de cardápio para criação e alteração de produtos.
-
Modos de estabelecimentos: Existe o modo unique que deixa o app focado em um estabelecimento e também o modo multi que lista os estabelecimentos presentes no servidor, no arquivo de configurações você pode selecionar o estilo desejado.
-
Personalização Total: Coloque sua marca e identidade visual no sistema, transformando-o em uma extensão exclusiva do seu restaurante.
-
Vendas Diretas: Elimine intermediários e suas taxas, oferecendo aos clientes uma experiência de compra mais acessível.
-
Gestão Simplificada: Mantenha e simplifique a gestão do estabelecimento com a facilidade de operar o sistema.
-
Uso Próprio de Entregadores: O sistema não gerencia a entrega, permitindo o uso de entregadores próprios para garantir uma experiência de entrega de alta qualidade.
-
Arquitetura Eficiente: O servidor foi projetado para suportar um ou mais aplicativos simultaneamente, permitindo a divisão de custos e manutenção simplificada em larga escala.
Um servidor tem a capacidade de executar simultaneamente N aplicativos. Dessa forma, torna-se viável reduzir os custos do servidor, necessitando apenas de um servidor para sustentar toda a infraestrutura de aplicativos.
Uma arquitetura baseada em microserviços
- Arquitetura baseada em microsserviços, permitindo a adição de novos serviços na linguagem desejada.
- Utiliza GoLang devido à sua performance e baixo consumo de recursos.
- O GoLang utiliza também o Fiber como framework API.
- Implementado em Docker, facilitando a inicialização do servidor sem exigir amplo conhecimento técnico.
- Desenvolvido em React Native e Expo, possibilitando a publicação na App Store e Google Play.
- Utiliza o Expo para construção gratuita na nuvem, dispensando a necessidade de um computador ou MacBook, especialmente para iOS.
- Quando o pedido é feito pelo app de comida e aprovado pelo estabelecimento, ele é publicada na fila indicada na variavel de ambiente:
RABBIT_DELIVERY_QUEUE
.
É importante já ter o docker instalado no sistema operacional.
Rode no terminal:
docker compose up
As credenciais de banco estão presentes no docker-compose.yml.
Para fazer o deploy é só seguir os passos que o docker-compose.yml faz.
Para rodar os microserviços separadamente você precisa já ter o GoLang instalado em sua maquina, acessar a pasta do microsserviço pelo terminal e utilizar:
go mod tidy
go install
Para rodar:
go run main.go
Tenha o node instalado na sua maquina, no caso eu utilizei a v16.15.
No arquivo Frontend/AppComida/services/api.tsx faça alterações da URL para apontar o backend que você subiu. Utilizando Ipconfig/Ifconfig é só pegar o endereço de IP da maquina juntamente com a prota que está rodando aplicativo e alterar a url.
Instalando dependências.
npm install
Para rodar:
npm start
Baixe o App do EXPO, no seu celular, pela loja de aplicativos e esteja conectado na mesma rede que o seu computador, o aplicativo será visto por toda rede interna enquando estiver em desenvolvimento.
Tendo postman na sua maquina, é só importar a biblioteca de requests presentes na pasta Backend/docs/delivery.postman_collection.json no qual você terá acesso a uma mini documentação dos endpoints e formatos esperados pela API.
No arquivo Frontend/AppComida/config/config.tsx altere a variavel APP_MODE para .unique ou .multi.
-
Unique: Para quando o app é voltado somente para 1 unico restaurante, neste caso ele consome da variavel estatica ESTABLISHMENT, também presente no arquivo.
-
Multi: Para quando o app deve comportar todos os restaurantes cadastrados no servidor, e fornece a possibilidade do usuário selecionar o restaurante que bem deseja.
- Auth / Create User & Establishment
- Product & Order / Delivery / Alter Taxe Delivery
- Product & Order / Products / Create Multi Products
- Product & Order / Additional / Create Additional
- Product & Order / Additional / Vinculo Additional Products
- No arquivo Frontend/AppComida/config/config.tsx, na propriedade ESTABLISHMENT, modifique o objeto com as informações desejadas, incluindo logotipos e coordenadas geográficas do estabelecimento (para cálculos de distância).
- No mesmo arquivo, Frontend/AppComida/config/config.tsx, atualize a propriedade ESTABLISHMENT_ID com o identificador gerado durante o cadastro do estabelecimento (REQUEST: Auth / Create User & Establishment).