Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Um aplicativo .NET de referência que implementa um aplicativo baseado em microserviços usando Kafka como broker de mensagens, Flutter como frontend e um gateway de acesso usando NGINX

License

Notifications You must be signed in to change notification settings

alexandresmoraes/mercadovila

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

MercadoVila - Um aplicativo de referência de microsserviços desenvolvido com ASP.NET 6 & Flutter

b61f3ca6-2a7c-486b-a57f-b5146bb0bd93.mp4

O aplicativo é um projeto de código aberto desenvolvido com objetivo compartilhar as melhores práticas e abordagens para o desenvolvimento de aplicativos completos e complexos utilizando tecnologias .NET.


Este projeto foi inspirado em eShop, com algumas particularidades.

Mostre seu apoio dando uma estrela! ⭐

Se algo aqui foi útil para você, ficaríamos imensamente gratos se você nos desse uma estrela. Seu apoio nos ajuda a continuar fornecendo conteúdo valioso e aprimorando nossos projetos.

MercadoMaluco

Tecnologias

  • .NET 6

    • ASP.NET MVC
    • ASP.NET WebApi
    • ASP.NET Identity Core
    • Refresh Token
    • JWT
    • gRPC
    • Entity Framework Core 6
  • Componentes / Serviços

    • Kafka
    • PostgreSQL
    • MongoDB
    • Polly.NET
    • Dapper
    • FluentValidator
    • MediatR
    • Swagger UI
  • Hosting

    • NGINX
    • Docker

Arquitetura:

  • Clean Code
  • Clean Architecture
  • SOLID Principles
  • DDD - Domain Driven Design
  • Domain Events
  • Domain Notification
  • Domain Validations
  • Integrations Events
  • CQRS
  • Fail Fast Validations
  • Retry Pattern
  • Circuit Breaker
  • Unit of Work
  • Repository Pattern
  • Result Pattern
  • Publish/Subscribe Pattern

Mobile/Web/Desktop:

  • Flutter (Android, iOS, Web, Windows, macOS)
  • Flutter Modular
  • Flutter Mobx (Stores/Controllers)

Rodando localmente 🚀

Pré-requisitos

Rodando

1. Clone o repository: https://github.com/alexandresmoraes/mercadovila e acesse a pasta src

git clone https://github.com/alexandresmoraes/mercadovila
cd .\mercadovila\src\

2. Copie e edite se necessário o arquivo sample.env para .env

(macOS/Linux)

cp sample.env .env

(Win)

copy sample.env .env

3. Rode os serviços necessários:

Warning

Confira se o Docker está inicializado.

docker-compose -f docker-compose.dev.yml up

4. Build & Run:

Parte 1 (Opcional): (Somente Win) Rodando aplicação pelo Visual Studio:

  • Abra o arquivo mercadovila.sln no Visual Studio
  • Selecione os projetos para Startup, Auth.API, Catalogo.API, Compras.API e Vendas.API
  • Pressione F5 para iniciar

Parte 2 (Obrigatório): (Win/macOS/Linux) Rodando aplicação pelo Visual Studio Code:

  • Utilize o arquivo launch.json e tasks.json para uma melhor experiência confira:
  • Escolha seu device para rodar o flutter.
  • Se optou pela opção 1, aqui não é necessário rodar "Start All" e selecionar apenas "Mercado Vila Mobile (debug mode)", senão "Start All".

tasks.json

{
    "version": "2.0.0",
    "tasks": [      
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/src/mercadovila.sln",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}

launch.json

{    
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Mercado Vila Auth API",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/src/services/Auth/Auth.API/bin/Debug/net6.0/Auth.API.dll",
            "args": [],
            "cwd": "${workspaceFolder}/src/services/Auth/Auth.API",
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": "Mercado Vila Catalogo API",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/src/services/Catalogo/Catalogo.API/bin/Debug/net6.0/Catalogo.API.dll",
            "args": [],
            "cwd": "${workspaceFolder}/src/services/Catalogo/Catalogo.API",
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": "Mercado Vila Compras API",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/src/services/Compras/Compras.API/bin/Debug/net6.0/Compras.API.dll",
            "args": [],
            "cwd": "${workspaceFolder}/src/services/Compras/Compras.API",
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": "Mercado Vila Vendas API",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/src/services/Vendas/Vendas.API/bin/Debug/net6.0/Vendas.API.dll",
            "args": [],
            "cwd": "${workspaceFolder}/src/services/Vendas/Vendas.API",
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": "Mercado Vila Mobile (debug mode)",
            "cwd": "${workspaceFolder}/src/mobile",
            "request": "launch",
            "type": "dart",
            "flutterMode": "debug",
            "toolArgs": [
                "--dart-define", "BASE_URL=http://<seu_ip>:8081"                
            ]
        }
    ],
    "compounds": [
        {
            "name": "Start all",
            "configurations": [
                "Mercado Vila Auth API",
                "Mercado Vila Catalogo API",
                "Mercado Vila Compras API",
                "Mercado Vila Vendas API",
                "Mercado Vila Mobile (debug mode)"                
            ],
            "stopAll": true
        }
    ]    
}

Aviso Legal

  • Este repositório não pretende ser um modelo de referência para todas as aplicações .NET.
  • Nosso objetivo principal é compartilhar conhecimento e experiência.
  • Tenha cuidado com o excesso de arquitetura em seus serviços. Nem sempre é necessário muitos padrões e implementações.
  • Pedimos desculpas pela mescla de português e inglês. Optamos por usar o máximo possível de termos em português nos domínios para facilitar a compreensão do DDD por parte dos estudantes. Lembre-se de que até mesmo Game of Thrones não seria tão impactante se Jon Snow se chamasse João das Neves.

Pull-Requests

Vamos abrir uma discussão sobre problemas e possíveis soluções! Se você está interessado em contribuir, é importante focarmos em problemas já identificados e discutidos. Antes de enviar um Pull Request, vamos garantir que o problema tenha sido aprovado e discutido adequadamente pela equipe.

Se estiver disposto a ajudar, escolha um problema que tenha sido aprovado e debatido. Uma vez selecionado, podemos discutir como abordar a implementação de forma eficaz e alinhada com as diretrizes do projeto.

About

Criado com ❤️ por Alexandre de Moraes

About

Um aplicativo .NET de referência que implementa um aplicativo baseado em microserviços usando Kafka como broker de mensagens, Flutter como frontend e um gateway de acesso usando NGINX

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published