Giter Club home page Giter Club logo

crud-veiculos's Introduction

Explicação do que foi feito:

Backend

O Backend foi organizado nas seguintes pastas:

  • Main: Configurações do servidor, middlewares, factorys, adapters e routes.
  • Presentational: Controllers, schemas de validação e helpers.
  • Infra: Repositorios que faz o acesso ao banco de dados.
  • Domain: Entidades e contratos de casos de uso.
  • Data: Implementações de casos de uso.
  • types: Tipos globais da aplicação.
  • util: Funcionalidades reutilizaveis.

Outros

  • Test: Testes unitarios e mocks.
  • Prisma: Models e configurações do primsa.

Funcionalidades:

  • Autenticação: Para a implemetação da autenticação foi utilizado o jwt, o usario pode se autenticar via as rotas publicas signin e signup, após se cadastrar ou fazer o login é gerado um token, que é enviado para o lado do cliente e salvo no local ou session storage da aplicação. Para verificar se o usuario está de fato autênticado foi criado um middleware.
  • Crud de carros: Para a criação ou atualizaçao de carros, foi criado um schema de validação com o zod, se os dados fornecidos forem validos o caso de uso de criação ou atualização é chamado. Para a consulta foram criados dois controllers e dois casos de genericos, loadAll e loadById, para a criação desses objetos, usei o padrão factory, que especifico apenas o positorio será usado. Para deletar o carro foi criado um controller generico e um caso de uso especifico para a exclusão de carros, que verifica se não existe reabastecimento relacionados antes da exclusao.
  • Crud de abastecimento: Este crud foi criado de uma forma muito parecida com o de carros.

Frontend

O Frontend foi oganizado nas seguintes pastas:

  • Pages: As paginás do projeto como as de autenticação, carros e abastecimennto.
  • Constants: Variaveis constantes na aplicação.
  • Routes: As rotas do projeto como signin, signup, carros, abastecimento.
  • Services: Requisições especificas para o backend.
  • Shared: Arquivos compartilhados no projeto como os de layout, hooks, componentes, contextos, tipos e schema de validação.
  • Styles: Estilos globais da aplicação.

Funcionalidades:

  • Autenticação: Para a autenticação foi criado um contexto, neste contexto existe os estados de token e usuario, função para autenticação e funcões para gerenciar o storage. Tambem foi criado um hook que verifica se o usuario está logado.
  • Criação de carros: Para criação de carro foi utilizado o formik e yup para fazer a validação destes inputs, se estes dados estiverem corretos, é chamada a função handleCreate, que chama a função usePost para usado fazer a requisição a api e persiste estes dados.
  • Consuta de dados: Para a consulta de dados, foi criado um hook chamdo useFetch, no qual a faz uma requisição a api usando o metodo get.
  • Vizualição em datagrid: Para a vizualição dos dados, foi utilizado o data-grid do Material Ui, utilizando os o hook useFetching para obter estes dados. este grid tem as funcionalidades edit e remover, que ao selecionalas e aberto um modal.

Como iniciar o projeto?

Backend

Para instalar e executar o backend projeto em sua máquina local, siga estas etapas:

  • Para a instalação de dependecias, execute o comando:

        yarn ou npm install
    
  • No arquivo .env, mude a string de conexão com as credências do o banco de dados. Seguindo o exemplo:

      "postgresql://user:password@localhost:5432/database?schema=public"
    
  • Em seguida, no terminal execute o comando para iniciar o backend.

      yarn dev ou npm run dev
    

Frontend

Para instalar e executar o frontend projeto em sua máquina local, siga estas etapas:

  • Para a instalação de dependecias, execute o comando:

      yarn ou npm install   
    
  • Em seguida, no terminal execute o comando para iniciar o frontend:

     yarn dev ou npm run dev
    

Tecnlogias utilizadas:

Frontend

  • ReactJs
  • Material UI
  • Typescript
  • Formik
  • Styled components
  • Yup
  • Vite

Backend

  • NodeJs
  • Postgres
  • Prisma
  • ExpressJS
  • Zod
  • Jest
  • Typescript

crud-veiculos's People

Contributors

edusantanaw avatar

Stargazers

Julio Cesar 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.