Coder Social home page Coder Social logo

rdswyc / truckregistration Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 224 KB

Sample Truck Registration app with add, delete, get and update options.

C# 78.52% Shell 0.02% HTML 2.51% JavaScript 18.25% CSS 0.69%
charp dotnet5 entityframeworkcore sqlserver unit-testing reactjs bootstrap javascript

truckregistration's Introduction

TruckRegistration

Trata-se de uma solução pequena, apenas como amostra de alguns conceitos. Pela simplicidade e para focar na lógica, arquitetura da solução e testes unitários, a aplicação não inclui autorização/autenticação. Também pela simplicidade, não existe código assíncrono e nem programanção paralela no back-end. Na ocasião de expansão da solução, é ideal separar as camadas de domínio e infraestrutura como bibliotecas dedicadas, e referenciar os projetos conforme a seguir:

  • Applicação depende do Domínio, para usar os modelos de dados e interfaces dos repositórios.
  • Aplicação também pode depender da Infraestrutura, para registrar as classes que implementam os repositórios.
  • Infraestrutura depende do Domínio para usar os modelos de dados e interfaces dos repositórios.
  • Domínio não deve ter dependência, já que representa a camada principal da aplicação.

Quanto à aplicação do front-end, o desenvolvimento encontra-se inacabado dada a restrição de tempo.

Tecnologias

  • .NET 5
  • Entity Framework Core
  • SQL Server
  • xUnit, Moq
  • ReactJs (não concluído)
  • Bootstrap

Servir a applicação localmente

Para iniciar o projeto, use o comando dotnet run --project .\TruckRegistration\TruckRegistration.csproj na raiz do sistema.

Então o projeto será servido nos seguinte endereço: http://localhost:5000

Se necessário, permita o modo de navegação não seguro, já que a aplicação não inclui certificado SSL.

Testes

Para rodar os testes unitários, use o comando dotnet test na raiz da aplicação. Se preferir realizar testes diretamente na API, utilize a coleção Postman providenciada TruckRegistration.postman_collection.json para verificar outros comandos.

Documentação

A aplicação foi construída seguindo alguns padrões de design como adapter e repository. A estruturação de arquivos se assemenlha à arquitetura DDD, apesar da simplicidade. Também devido à simplicidade, a solução contém apenas dois projetos:

  1. TruckRegistration
  2. Tests

Aplicação

  • ClientApp contém a aplicação front-end ReactJs. Essa aplicação não foi concluída devido ao prazo.
  • Controllers contém as rotas da API, simular ao modelo MVC.
  • Domain corresponde à camada principal de uma aplicação, composta idealmente por classes planas e sem dependências. Ela contém a lógica de negócio principal da aplicação, bem como os contratos de implementação de suas dependências, seguinto o padrão de design adapter. Num cenário de expansão da aplicação, essa pasta deve ser movida para uma biblioteca dedicada.
  • Exceptions contém classes para construção de um manipulador de erros customizado, baseado no código de status HTTP. Devido ao tamanho da aplicação, essa implementação é bem simples.
  • Infrastructure contém a lógica de acesso de dados, além da configuração do banco de dados, seguindo o padrão de design repository. Num cenário de expansão da aplicação, essa pasta também pode ser movida para uma biblioteca dedicada.
  • Migrations contém os arquivos de migração do banco de dados, para habilitar versionamento do banco de dados como código.
  • Models contém os modelos de dados mapeados como tabela no banco de dados. Deve pertencer à camada de domínio da aplicação.

Testes unitários

Seguindo a estrutura de pastas apresentada acima, apenas os serviços e repositórios foram incluídos nos testes unitários. Todas as outras classes são consideradas detalhes de implementação, e dispensam a necessidade de testes.

truckregistration's People

Contributors

rdswyc avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.