Giter Site home page Giter Site logo

mjvschool.net-cruddajustica's Introduction

MJV School .NET - CRUD da Justiça

Desenvolvi este projeto para colocar em prática tudo que aprendemos durante a primeira MJV School de .NET, que foi ao ar entre 23/10/2023 e 23/11/2023.

O CRUD da Justiça é uma aplicação simples que lida com informações sobre super-heróis. Programas desse tipo são maçantes por natureza, e por isso, escolhi um tema leve para tentar torná-lo menos entediante. Ele possui duas interfaces de usuário: uma web implementada com o ASP.NET MVC e uma de console. Você pode vê-las na seção de imagens deste readme.

Sumário

Conceitos abordados

Durante o curso foram abordados diversas características e funcionalidades do C# e .NET. A seguir estão aquelas que melhor se encaixaram no escopo deste projeto.

ASP.NET

  • REST API: o backend do sistema web é um API. Link
  • ASP.NET MVC: a interface web do projeto. Link
  • ADO.NET: o projeto consegue armazenar dados por meio do SQL Server. Link
  • Leitura do arquivo appsettings.json: a string de conexão do banco de dados é lida deste arquivo. Link
  • Injeção de dependências: tanto o website quanto o aplicativo de console fazem injeção de dependências. Link

C#

  • String e StringBuilder: a interface de linha de comando é desenhada usando strings. Link
  • Array: o projeto tem um repositório virtual que armazena informações em arrays. Link
  • Serialização e manipulação de arquivos: o projeto consegue salvar dados em arquivos JSON. Link
  • Listas: atalhos de teclado são armazenados dentro de uma lista. Link
  • Queues e tipagem genérica: usados para gerar e preencher formulários de linha de comando. Link
  • Records: os modelos de exibição do website são records. Link
  • Structs: as páginas de dados são encapsuladas em um struct. Link
  • Classes: quase todos os tipos do projeto são classes. Link
  • Interfaces: os repositórios de dados implementam interfaces. Link
  • Classes abstratas e herança: ambos são usados para desenhar decorações de janela na linha de comando. Link

Design patterns e padrões de projeto

Estes conceitos não foram abordados durante o bootcamp, porém apliquei alguns deles para assegurar a qualidade da implementação.

  • MVC: o website é estruturado neste padrão.
  • MVP e Mediator: a comunicação entre a interface de linha de comando e o backend é mediada pelos controladores.
  • Repository ou Façade: os controladores não sabem com quais repositórios eles se comunicam.
  • Decorator: a interface de linha de comando é implementada neste padrão.

Diagramas UML

Arquitetura do projeto

Arquitetura da solução

Website

Design do website

WebApi

Design do WebApi

Camada de dados

Design da camada de dados

Aplicativo de linha de comando

Design do aplicativo de linha de comando

Interface de linha de comando

Design da interface de linha de comando

Imagens

REST API

Endpoints

Website

Listagem no website Prompt de confirmação Validação nos formulários de criação de hérois Validação nos formulários de atualização de hérois

Linha de comando

Listagens na linha de comando Formulários na linha de comando Validação de formulários na linha de comando

mjvschool.net-cruddajustica's People

Contributors

marvipi avatar

Stargazers

João Gabriel V.M avatar

Watchers

 avatar

mjvschool.net-cruddajustica's Issues

Validação de dados

Nenhuma validação de dados é feita nos dados lidos de um formulário. Talvez seja melhor esperar até a implementação de Web APIs para implementá-la de modo que cubra tanto a CLI quanto a API.

Formulários devem formatar os nomes dos campos durante o processo de geração

A classe Form usa o nome das propriedades públicas de um tipo para gerar um formulário automaticamente. Isso expõe a implementação de T para a interface de usuário e torna-o ilegível.

Creio que a melhor maneira de melhorar esse aspecto é formatando os nomes das propriedades durante a geração de formulários.

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.