https://github.com/benevanio/task-managment
API RESTful para gerenciamento de tarefas, desenvolvida em NestJS com TypeORM e PostgreSQL. Testes automatizados com Postman e Newman.
https://github.com/benevanio/task-managment
Last synced: 4 months ago
JSON representation
API RESTful para gerenciamento de tarefas, desenvolvida em NestJS com TypeORM e PostgreSQL. Testes automatizados com Postman e Newman.
- Host: GitHub
- URL: https://github.com/benevanio/task-managment
- Owner: Benevanio
- License: mit
- Created: 2024-10-15T00:49:08.000Z (12 months ago)
- Default Branch: master
- Last Pushed: 2024-10-15T16:32:04.000Z (12 months ago)
- Last Synced: 2025-01-28T11:33:29.442Z (8 months ago)
- Language: TypeScript
- Homepage:
- Size: 98.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Descrição
Este projeto é uma API RESTful para gerenciar tarefas, construída usando o **NestJS** e **TypeORM** com um banco de dados **PostgreSQL**. A API permite operações CRUD (Criar, Ler, Atualizar e Deletar) para tarefas.
## Tecnologias Utilizadas
- **NestJS**: Framework para construir aplicações Node.js eficientes e escaláveis.
- **TypeORM**: ORM para TypeScript e JavaScript que suporta vários bancos de dados, incluindo PostgreSQL.
- **PostgreSQL**: Sistema de gerenciamento de banco de dados relacional.
- **Postman**: Ferramenta para testar APIs.## Estrutura do Projeto
```
/crud
├── /src
│ ├── /tasks
│ │ ├── /controller
│ │ │ └── task.controller.ts
│ │ ├── /service
│ │ │ └── task.service.ts
│ │ ├── task.entity.ts
│ │ └── task.module.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── app.service.ts
│ └── main.ts
├── package.json
├── docker-compose.yml
└── Dockerfile
```## Requisitos
- Node.js (>= 19.x)
- PostgreSQL (>= 13.x)
- Docker e Docker Compose## Instalação
1. **Clone o repositório**:
```bash
git clone https://github.com/Benevanio/task-managment.git
cd crud
```2. **Instale as dependências**:
```bash
npm install
```3. **Configuração do Banco de Dados**:
Você pode configurar o banco de dados PostgreSQL diretamente ou usar o Docker:
- **Usando Docker**:
Execute o comando a seguir para iniciar o banco de dados:```bash
docker-compose up -d
```- **Configuração Manual**:
Crie um banco de dados PostgreSQL chamado `crud` e um usuário com permissões adequadas.4. **Configuração das Variáveis de Ambiente**:
Configure as variáveis de ambiente no seu arquivo `.env`:
```plaintext
DB_TYPE=postgres
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_NAME=crud
```5. **Executar a Aplicação**:
Inicie o servidor:
```bash
npm run start:dev
```A aplicação estará disponível em `http://localhost:3000`.
## Endpoints da API
### 1. **Criar Tarefa**
- **Método**: `POST /tasks`
- **Corpo**:
```json
{
"title": "Nova Tarefa",
"description": "Descrição da tarefa",
"status": 1,
"createdAt": "2024-10-14T00:00:00Z",
"updatedAt": "2024-10-14T00:00:00Z",
"createdBy": "usuario@exemplo.com"
}
```### 2. **Listar Tarefas**
- **Método**: `GET /tasks`
### 3. **Buscar Tarefa por ID**
- **Método**: `GET /tasks/:id`
### 4. **Atualizar Tarefa**
- **Método**: `PUT /tasks/:id`
- **Corpo**: (mesmo formato do POST)### 5. **Deletar Tarefa**
- **Método**: `DELETE /tasks/:id`
## Testes com Postman
O Postman foi utilizado para testar todos os endpoints da API. Você pode importar a coleção de requisições no Postman:
1. **Exportar Coleção**:
Exporte a coleção de requisições do Postman (arquivo `.json`) para facilitar os testes.2. **Executar Testes**:
Cada requisição inclui testes automatizados para verificar se os endpoints estão funcionando conforme o esperado.## Testes com Newman
Você pode executar os testes definidos no Postman usando o Newman, que é um CLI para Postman.
### Instalação do Newman
```bash
npm install -g newman
```### Execução de Testes
```bash
newman run Teste-Tecnico-Sysmap.postman_collection.json
```## Contribuição
Contribuições são bem-vindas! Sinta-se à vontade para abrir uma *issue* ou fazer um *pull request*.
## Licença
Este projeto é licenciado sob a MIT License - veja o arquivo [LICENSE](LICENSE) para detalhes.