Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maiquinho/desafio-ignite-nodejs-01
API para realizar um CRUD de tasks (tarefas).
https://github.com/maiquinho/desafio-ignite-nodejs-01
crud crud-api node-fundamentals nodejs task-api
Last synced: about 8 hours ago
JSON representation
API para realizar um CRUD de tasks (tarefas).
- Host: GitHub
- URL: https://github.com/maiquinho/desafio-ignite-nodejs-01
- Owner: Maiquinho
- Created: 2024-07-10T19:33:16.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-07-16T19:05:47.000Z (4 months ago)
- Last Synced: 2024-07-17T22:22:03.690Z (4 months ago)
- Topics: crud, crud-api, node-fundamentals, nodejs, task-api
- Language: JavaScript
- Homepage:
- Size: 29.3 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🚀 Desafio 01 - Fundamentos do Node.js (Ignite)
Desafio referente ao módulo: Fundamentos do Node.js
## 📚 Introdução
Olá, pessoal!
Este projeto é parte do primeiro desafio da trilha de Node.js do Ignite, oferecida pela [Rocketseat](https://www.rocketseat.com.br/). O objetivo do desafio é colocar em prática os conceitos aprendidos no módulo de Fundamentos do Node.js, desenvolvendo uma API para realizar o CRUD de tasks (tarefas).
## 🛠️ Funcionalidades
A API desenvolvida possui as seguintes funcionalidades:
- **Criação de uma task**: Permite criar uma nova task no banco de dados.
- **Listagem de todas as tasks**: Permite listar todas as tasks salvas no banco de dados, com a opção de filtrar por título e descrição.
- **Atualização de uma task pelo `id`**: Permite atualizar o título e/ou descrição de uma task específica.
- **Remover uma task pelo `id`**: Permite remover uma task específica do banco de dados.
- **Marcar pelo `id` uma task como completa**: Permite marcar uma task como completa ou reverter para o estado não completo.
- **Importação de tasks em massa por um arquivo CSV**: Permite importar múltiplas tasks a partir de um arquivo CSV utilizando Streams.### 📋 Estrutura das Tasks
Cada task possui as seguintes propriedades:
- `id`: Identificador único de cada task.
- `title`: Título da task.
- `description`: Descrição detalhada da task.
- `completed_at`: Data de quando a task foi concluída. O valor inicial é `null`.
- `created_at`: Data de quando a task foi criada.
- `updated_at`: Data de quando a task foi atualizada.### 🔄 Rotas da API
- `POST - /tasks`
Cria uma task no banco de dados, enviando os campos `title` e `description` no corpo da requisição.
Ao criar uma task, os campos: `id`, `created_at`, `updated_at` e `completed_at` são preenchidos automaticamente.- `GET - /tasks`
Lista todas as tasks salvas no banco de dados.
Também permite realizar buscas filtrando as tasks pelo `title` e `description`.- `PUT - /tasks/:id`
Atualiza uma task pelo `id`.
No corpo da requisição, recebe somente o `title` e/ou `description` para serem atualizados.
Antes de realizar a atualização, valida se o `id` pertence a uma task salva no banco de dados.- `DELETE - /tasks/:id`
Remove uma task pelo `id`.
Antes de realizar a remoção, valida se o `id` pertence a uma task salva no banco de dados.- `PATCH - /tasks/:id/complete`
Marca a task como completa ou não. Se a task estiver concluída, reverte para o estado não completo.
Antes da alteração, valida se o `id` pertence a uma task salva no banco de dados.### 📥 Importação de CSV
A importação de tasks a partir de um arquivo CSV é feita utilizando a biblioteca `CSV Parse`. O arquivo CSV deve estar dentro do próprio projeto.
Para importar as tasks, a API lê o arquivo CSV e utiliza Streams para processar os dados de forma eficiente.
Para mais detalhes sobre a importação via CSV com Stream, acesse a [explicação detalhada](https://www.notion.so/Cria-o-via-CSV-com-Stream-21ba6d279991473792787d9265212181?pvs=21).
## 🚀 Como rodar o projeto
```bash
# Clone este repositório
$ git clone https://github.com/seu-usuario/nome-do-repositorio.git# Acesse a pasta do projeto no terminal/cmd
$ cd nome-do-repositorio# Instale as dependências
$ npm install# Execute a aplicação em modo de desenvolvimento
$ npm run dev# O servidor iniciará na porta 3333 - acesse http://localhost:3333
```## 🎉 Considerações Finais
Foi uma experiência incrível desenvolver essa API e reforçar os conceitos aprendidos. A [Rocketseat](https://www.rocketseat.com.br/) proporciona um ambiente excelente para o aprendizado e crescimento como desenvolvedor.
Feito com 💜 por [Maiquinho](https://michaelmatheus.dev).