SkillAgentSearch skills...

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.

Install / Use

/learn @carloshomar/Appdelivery

README

Plataforma de 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.

Discord: anypercent_ fique à vontade para esclarecer duvidas!<br/> Sinta-se à vontade para Adicionar, Modificar, Comercializar e Distribuir! <br/> Contribuições são sempre bem-vindas!

Se quiser apoiar nosso trabalho, contribua via Pix: loja.soberanatv@gmail.com. Agradecemos seu apoio!

Agradecimentos Especiais

<a target="_blank" href="https://www.youtube.com/@TecnologiaeClasse">Lucas Zawacki</a><br/> <a target="_blank" href="https://soberana.tv">Coletivo Soberana</a>

Backlog e Andamento do <a href="https://github.com/carloshomar/appdelivery/issues">Projeto</a>

Videos

<a target="_blank" href="./Arquitetura/video2.mp4">Video - Fazendo um pedidio, aceitando e produzindo o pedido, e realizando entrega (fluxo com todos os APPs)</a>

<a target="_blank" href="./Arquitetura/video1.mp4">Video - Utilizando o App de Comida</a>

App de Comida

<img src="./Arquitetura/IMG_9734.PNG" alt="IMG1" width="200"></img> <img src="./Arquitetura/IMG_9735.PNG" alt="IMG2" width="200"></img> <img src="./Arquitetura/IMG_9736.PNG" alt="IMG3" width="200"></img> <img src="./Arquitetura/IMG_9737.PNG" alt="IMG4" width="200"></img>

Web Restaurante

<img src="./Arquitetura/web_1.png" alt="web1" ></img> Kanban de fluxo de trabalho do restaurante, responsiva para celulares e computadores

Gestor de Cardápio

<img src="./Arquitetura/web_2.png" alt="web2" ></img> Gestor de cardápio para criação e alteração de produtos.

App de Entregas:

<img src="./Arquitetura/IMG_9967.PNG" alt="IMG2" width="200"></img> <img src="./Arquitetura/IMG_9966.PNG" alt="IMG4" width="200"></img> <img src="./Arquitetura/IMG_9964.PNG" alt="IMG3" width="200"></img> <img src="./Arquitetura/IMG_0165.PNG" alt="IMG3" width="200"></img>

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 <a href="Frontend/AppComida/config/config.tsx">arquivo de configurações</a> 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 e App Comida:

  • Desenvolvido em React Native e Expo, possibilitando a publicação na App Store e Google Play.
  • Utiliza o Expo para build gratuito na nuvem, dispensando a necessidade de um MacOS, especialmente para iOS.

Como Rodar Backend

É importante já ter o docker instalado no sistema operacional. Somente o backend inicia via docker, as aplicações frontend devem ser rodadas separadamente.

Rode no terminal:

cd ./Backend
docker compose up --build

As credenciais de banco estão presentes no docker-compose.yml. <br/> Para fazer o deploy é só seguir os passos que o <a href="/Backend/docker-compose.yml">docker-compose.yml</a> faz.

Rodar um serviço em especifico (opcional):

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

Como rodar o Frontend:

No arquivo <a href="Frontend/docker-compose.yml">Frontend/docker-compose.yml</a>, faça alterações na URL do backend, presente na variável API_BASE_URL. Você pode utilizar o ipconfig/ifconfig para obter o endereço IP local da máquina junto com a porta na qual o aplicativo está rodando, e então alterar a URL.

Ainda no arquivo <a href="Frontend/docker-compose.yml">Frontend/docker-compose.yml</a>, adicione as credenciais de acesso do Expo nas variáveis EXPO_USERNAME e EXPO_PASSWORD. Para obtê-las, basta se cadastrar em: <a href="https://expo.dev">https://expo.dev</a>. Adicione também seu IP local na variável EXPO_QR_GEN para que os QR codes dos apps sejam gerados corretamente.

Nos arquivos <a href="Frontend/AppComida/services/api.tsx">Frontend/AppComida/services/api.tsx</a>, <a href="Frontend/AppEntrega/services/api.tsx">Frontend/AppEntrega/services/api.tsx</a> e <a href="Frontend/WebRestaurant/src/services/api.js">Frontend/WebRestaurant/src/services/api.js</a>, faça alterações na URL para apontar para o backend que você subiu.

É importante já ter o docker instalado no sistema operacional.

Rode no terminal:

cd ./Frontend
docker compose up --build

O console vai exibir dois QRCodes para abrir os apps via Expo, e o painel WebRestaurante pode ser aberto usando http://localhost:3000.

Rodar um fronted em especifico (opicional):

Tenha o node instalado na sua maquina, no caso eu utilizei a v20.13.1

Nos 3 projetos de front-end (WEBRestaurante, AppComida, AppEntregas) existem arquivos no caminho services/api.tsx ou services/api.ts que precisam sofrer alterações da URL para apontar o backend/servidor que subiu. Utilizando Ipconfig/Ifconfig você precisa pegar o endereço IP ou DNS do servidor, juntamente com a porta em que está rodando o backend (docker).

O processo de alteração de URL deve ser realizado nas 3 aplicações, WEBRestaurante, AppComida, AppEntregas.

<b>Na parte WEB, em caso de não conseguir logar ou estiver tendo erro de CORS, considere instalar uma <a href="https://chromewebstore.google.com/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf?hl=pt-BR">extensão que desabilita CORS no seu navegador</a>, ou inicialize o mesmo sem essa politica.</b>

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.

Não necessários para rodar

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

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 <a href="Frontend/AppComida/config/config.tsx">Frontend/AppComida/config/config.tsx</a> 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 (Fique atento a geolocalização do estabelecimento, para o calculo correto de entrega)
  • Product & Order / Delivery / Alter Taxe Delivery
  • Product & Order / Products / Create Multi Products <b>(Pode ser feito pela aplicação WEBRestaurante)</b>
  • Product & Order / Additional / Create Additional <b>(Pode ser feito pela aplicação WEBRestaurante)</b>
  • Product & Order / Additional / Vinculo Additional Products <b>(Pode ser feito pela aplicação WEBRestaurante)</b>

Cadastrar Entregador:

  • Cada entregador deve estar devidamente cadastrado, no próprio AppEntregas tem uma pagina de cadastro básica, somente para uso de testes.

Configuração de APPComida:

  • No arquivo <a href="Frontend/AppComida/config/config.tsx">Frontend/AppComida/config/config.tsx</a>, 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, <a href="Frontend/AppComida/config/config.tsx">Frontend/AppComida/config/config.tsx</a>, atualize a propriedade ESTABLISHMENT_ID com o identificador gerado durante o cadastro do estabelecimento _(REQUEST: Auth / Create User & Establishmen
View on GitHub
GitHub Stars100
CategoryDevelopment
Updated11d ago
Forks31

Languages

TypeScript

Security Score

100/100

Audited on Mar 25, 2026

No findings