/appdelivery

Uma plataforma de código aberto com aplicativos para clientes, entregadores e restaurantes, que oferece flexibilidade para personalização completa em toda a sua estrutura.

Primary LanguageTypeScriptMIT LicenseMIT

Delivery

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!

App de Comida

IMG1 IMG2 IMG3 IMG4

Videos

Video - Utilizando o App de Comida

Web Restaurante

web1 Kanban de fluxo de trabalho do restaurante.

Gestor de Cardápio

web2 Gestor de cardápio para criação e alteração de produtos.

App de Entregas:

IMG2 IMG4 IMG3 IMG3

Principais Características

  • 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.

Técnico

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.

Arquitetura:

image info

Uma arquitetura baseada em microserviços

Back-end / Infra:

  • 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.

App Entregas:

  • 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.

App Comida:

  • Quando o pedido é feito pelo app de comida e aprovado pelo estabelecimento, ele é publicada na fila indicada na variavel de ambiente: RABBIT_DELIVERY_QUEUE.

Como Rodar

Backend:

É 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.

Rodar um serviço em especifico:

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

Frontend:

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.

Configuração do Estabelecimento

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.

Configure o Modo:

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.

Cadastrar Estabelecimento:

  • 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

Geraração de Aplicativo:

  • 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).