Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/matheusmartinsviana/project-manager

πŸ—ƒ Project Manager is an API developed in node.js to manage users, projects and tasks. (With API and Integration Testing)
https://github.com/matheusmartinsviana/project-manager

backend database-integration mvc-architecture swagger-documentation

Last synced: 12 days ago
JSON representation

πŸ—ƒ Project Manager is an API developed in node.js to manage users, projects and tasks. (With API and Integration Testing)

Awesome Lists containing this project

README

        

# Project Manager

Project Manager System is an application designed to assist in project production and proficiency, helping you achieve your objectives efficiently.

## API Documentation


Project Manager API developed with Swagger


Swagger is an application that has many tools for developers, and one of the tools is that you can create API documentation

## Table of Contents

- [Relationships](#relationships)
- [Requirements](#requirements)
- [Entities](#entities)
- [Technologies Used](#technologies-used)
- [Project Structure](#project-structure)
- [Setup and Installation](#setup-and-installation)
- [Integration and API Tests](#integration-and-api-tests)

## Relationships

![Relationships - Project Manager](https://github.com/matheusmartinsviana/project-manager/assets/146596878/7c9b2c21-5261-4f86-8d0b-60af12c7c0c3)

[Download Relationships Diagram](https://github.com/user-attachments/files/15796260/Relationships.-.Project.Manager.pdf)

## Requirements

Clarifying the project requirements is crucial for quality and accuracy in development.

[Download Project Requirements](https://github.com/user-attachments/files/15849351/Project.Manager.Requirements.pdf)

## Entities

### User
- ID (unique)
- Name
- Email
- Password (hash)
- Creation Date

### Project
- ID (unique)
- Name
- Description
- Creation Date
- User ID (relationship with the User entity)

### Task
- ID (unique)
- Title
- Description
- Creation date
- Completion date (optional)
- Status (pending, in progress, completed)
- Project ID (relationship with the Project entity)

## Technologies Used

- **Node.js**
- **Express.js**
- **JWT (JSON Web Token)**
- **MySQL**
- **Sequelize**
- **Bcrypt**
- **MVC Pattern**
- **CORS**
- **Nodemon** (dev dependency)

## Project Structure

```
project-manager/
β”œβ”€β”€ src/
β”‚ β”œβ”€β”€ api/
β”‚ β”‚ β”œβ”€β”€ project.js
β”‚ β”‚ β”œβ”€β”€ task.js
β”‚ β”‚ └── user.js
β”‚ β”œβ”€β”€ controllers/
β”‚ β”‚ β”œβ”€β”€ project.js
β”‚ β”‚ β”œβ”€β”€ task.js
β”‚ β”‚ └── user.js
β”‚ β”œβ”€β”€ models/
β”‚ β”‚ β”œβ”€β”€ project.js
β”‚ β”‚ β”œβ”€β”€ task.js
β”‚ β”‚ └── user.js
β”‚ β”œβ”€β”€ routes/
β”‚ β”‚ β”œβ”€β”€ project.js
β”‚ β”‚ β”œβ”€β”€ task.js
β”‚ β”‚ └── user.js
β”‚ β”œβ”€β”€ middlewares/
β”‚ β”‚ └── authMiddleware.js
β”‚ β”œβ”€β”€ config/
β”‚ β”‚ └── database.js
β”‚ β”œβ”€β”€ app.js
β”‚ └── server.js
β”œβ”€β”€ package.json
└── README.md
```

## Setup and Installation

### Prerequisites

- Node.js installed
- MySQL installed and running

### Steps

1. **Clone the repository**

```bash
git clone https://github.com/matheusmartinsviana/project-manager.git
cd project-manager
```

2. **Install dependencies**

```bash
npm install
```

3. **Configure the database**

Create a MySQL(But to deploy in rendering I needed to use PostgreSQL) database with the following details:

```plaintext
database: 'project-manager'
host: 'localhost'
username: 'root'
dialect: 'mysql'
```

4. **Run the development server**

```bash
npm run dev
```
## Integration and API Tests
To see all tests you need change this branch to:
```bash
Branch: tests
```
## Tests Structure
```
project-manager/
β”œβ”€β”€ src/
β”‚ β”œβ”€β”€ ...
β”‚ β”œβ”€β”€ tests/
β”‚ β”‚ β”œβ”€β”€ api/
β”‚ β”‚ | β”œβ”€β”€project.js
β”‚ β”‚ | β”œβ”€β”€ task.js
β”‚ β”‚ | └── user.js
β”‚ β”‚ β”œβ”€β”€ integration/
β”‚ β”‚ | β”œβ”€β”€project.js
β”‚ β”‚ | β”œβ”€β”€ task.js
β”‚ β”‚ | └── user.js
```

## Technologies Used

- **Jest** (dev dependency)
- **Supertest** (dev dependency)