Giter Club home page Giter Club logo

w3-test's Introduction

W3-Test

Desafio 1: API REST paginada usando Node.js e Express

Introdução Neste desafio, foi desenvolvida uma API REST simples usando Node.js e Express. A API permite a criação, atualização, exclusão e obtenção de tarefas. As tarefas são armazenadas em memória e a API suporta paginação através dos parâmetros "limit" e "page".

Funcionalidades da API

  1. Obter tarefas (GET /tasks) Este endpoint retorna um array de objetos de tarefa no formato JSON. É possível realizar a paginação das tarefas usando os parâmetros opcionais "limit" e "offset". Por padrão, o limite é 3 e a página inicia em 1.

Exemplo de uso:

GET /tasks?limit=3&page=1
  1. Adicionar tarefa (POST /tasks) Este endpoint permite adicionar uma nova tarefa ao array de tarefas. É necessário enviar um objeto de tarefa no corpo da requisição no formato JSON. As informações obrigatórias são "title" (string) e "isDone" (booleana).

Exemplo de uso:

POST /tasks
{
  "title": "Estudar JavaScript",
  "isDone": false
}
  1. Atualizar tarefa (PATCH /tasks) Este endpoint permite atualizar uma tarefa existente com base no seu ID. É necessário fornecer o ID da tarefa como parâmetro na URL e enviar um objeto contendo os parâmetros a serem atualizados no corpo da requisição no formato JSON. É possível atualizar o título e o status de conclusão da tarefa.

Exemplo de uso:

PATCH /tasks/1
{
  "title": "Aprender React",
  "isDone": true
}
  1. Remover tarefa (DELETE /tasks) Este endpoint permite remover uma tarefa existente com base no seu ID. É necessário fornecer o ID da tarefa como parâmetro na URL.

Exemplo de uso:

DELETE /tasks/1

Desafio 2: Aplicação de Lista de Tarefas paginada usando React

Neste desafio, foi criada uma aplicação em React que consome a API de tarefas criada no Desafio 1. A aplicação exibe uma lista de tarefas paginada, com 5 tarefas por página. É possível criar uma nova tarefa, atualizar o titulo da tarefa, marcar uma tarefa como concluída e excluir uma tarefa. As tarefas concluídas são exibidas com um estilo diferente.

Tecnologias Utilizadas ✏️:

  • React
  • Vite
  • TypeScript
  • React Query
  • Tailwind CSS

Configuração do Projeto

Clone o repositório do projeto:

git clone https://github.com/davioliveira-dev/w3-test

Instale as dependências do projeto:

cd w3-test/client && npm install

Inicie a aplicação:

npm run dev

Acesse a aplicação em seu navegador em http://localhost:3000.

Backend

O backend foi desenvolvido utilizando Node.js, Express e TypeScript. A arquitetura do projeto segue os princípios da Arquitetura Limpa (Clean Architecture) com foco em Separation of Concerns (Separação de Responsabilidades), Dependency Injection (Injeção de Dependências), Single Responsibility Principle (Princípio da Responsabilidade Única) e outros conceitos de design sólidos.

Os testes foram escritos utilizando o test runner nativo do Node.js, aproveitando as funcionalidades disponíveis na versão 20 para rodar os testes. Foram criados testes unitários e de integração para garantir o bom funcionamento do backend.

Como executar o Backend

Clone o repositório do projeto:

git clone https://github.com/davioliveira-dev/w3-test

Instale as dependências do projeto:

cd w3-test/client && npm install

Inicie a aplicação:

npm run dev

O backend estará em execução em http://localhost:3333.

Como executar os testes (Requer Node.js >= v20

Acesse a pasta do backend:

cd w3-test/server

Execute o comando para rodar os testes:

npm run test

Os testes serão executados e os resultados serão exibidos no console.

Conclusão

O projeto foi desenvolvido dentro do prazo estabelecido, iniciando na quarta-feira à noite (16/05) e finalizando na sexta-feira (19/05). Durante esse período, foram implementadas as funcionalidades solicitadas, criados os testes necessários e seguidos os princípios da Arquitetura Limpa para garantir a qualidade e a organização do código.

Caso eu tivesse mais detalhes, poderia ter implementado uma melhor arquitetura e UI no frontend e escrito testes automatizados para as funcionalidades utilizadas. Desafio bem tranquilo de desenvolver e bem fácil de dar manutenção ou implementar novas features como um ORM (Prisma, TypeORM), Websockets e Autenticação.

w3-test's People

Contributors

davioliveira-dev avatar davioliveira-6place 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.