Giter Club home page Giter Club logo

dscatalog's Introduction

DSCatalog

Esse é um projeto backend, desenvolvido em java utilizando spring boot na versão 2.4.4 visando performance para o seu prpósito. A ideia do projeto é criar um sistema simples de catálogo de produtos, onde terá crud de usuários e produtos. Pensando ao longo prazo, apesar deste projeto ser simples, ele conta com as melhores práticas de programação, obedecendo a modelagem abaixo no qual foi proposto, respeitando o padrão em camadas e suas responsabilidades, aplicando o princípio de inversão de controle e injeção de dependência por meio do spring framework e disponibilizando os dados via web services por meio de uma API Rest.

O projeto também conta com testes unitários utilizando mockito, o que dá a flexibilidade de testar cada entidade de forma individual. Além disso, foi implementado testes de integração para que o sistema possa ser testado como um todo e claro, tudo isso seguindo as boas práticas bem como o padrão Arrange, Act & Assert para criação, execução das ações e declaração do que deveria acontecer em cada teste.

Pensando em validação, o projeto conta com bean validation para que o backend se garanta nas validações da aplicação, como por exemplo: A entidade usuário precisa dos campos nome e e-mail para cadastro, e aí que entra as constraints @NotNull e @Email que garante que esses atributos estejam adequados para a consistência e persistência do cadastro do usuário no banco de dados, caso contrário, há um tratamento de exceções para capturar esses possíveis GAPs.

Pensando na segurança, foi implementado o protocolo OAuth2 para autenticação e autorização aos endpoints configurados, visto que um usuário pode ter papeis de ROLE_ADMIN e ROLE_OPERATOR para controle de acesso aos endpoints. Como método para geração de token, foi utilizado o padrão JWT que funciona muito bem e é muito utilizado em Web Services

O projeto foi dividido em cinco camadas, sendo elas: entidades, repositórios, serviços, objeto de transferência de dados & recursos, tornando a aplicação flexivel e escalável!

Este é um monorepo pensado em separar o backend de uma possível implementação de um frontend!

Técnologias implementadas

  1. Spring Boot: Fornece toda configuração do projeto inicial
  2. Spring Data: Fornece uma abordagem consistente para a camada de acesso a dados
  3. Spring Framework: Fornece todo o mecanismo de gerenciamento do projeto
  4. Spring Security: Fornece o mecanismo para segurança da aplicação
  5. Hibernate bean validation: Módulo no qual fornece o esquema de bean validation
  6. Mockito: Fornece mecânismo para testes da aplicação
  7. H2 Database: É um banco de dados relacional em memória
  8. Padrão de Arquitetura em Camadas: Visando produtividade, manutenabilidade e escalabilidade do sistema

Postman

Login

Login

New category

{
    "name":"Garden"
}

New product

{
  "date": "2020-07-20T10:00:00Z",
  "description": "The new generation PS5 video game",
  "name": "Console PS5",
  "imgUrl": "",
  "price": 6000.0,
  "categories": [
    {
      "id": 1
    },
    {
      "id": 3
    }
  ]
}

Nova Categoria

New Category

Novo Produto

New Product

Exceções

New Product

dscatalog's People

Contributors

alissonwenceslau avatar

Watchers

 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.