Skip to content

Smart-Calendar-Ufabc/user-worker

Repository files navigation

REST API de usuários para o Ease Calendar

💻 Sobre o projeto

O Smart Calendar é um projeto que visa facilitar a organização da agenda de seus usuários. Com ele, os usuários podem cadastrar compromissos fixos e tarefas com datas de término e duração específicas. O diferencial desse calendário está na sua capacidade de distribuir automaticamente essas tarefas nos horários livres do usuário, levando em consideração a prioridade de prazo de cada uma. Assim, o Smart Calendar otimiza o tempo do usuário, garantindo que ele cumpra seus compromissos de forma eficiente e sem conflitos de horário. Esta aplicação foi desenvolvida como projeto final da disciplina de Engenharia de Software da UFABC para o gerenciamento de usuários.

🛠 Tecnologias

As seguintes ferramentas foram usadas na construção do projeto:

🚀 Como executar

Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Node.js e npm. Além disto é bom ter um editor para trabalhar com o código como VSCode

🎲 Rodando o Worker

Crie uma pasta chamada smart-calendar. Abra o terminal nessa paste e clone o repositório:

git clone https://github.com/Smart-Calendar-Ufabc/user-worker

Abra a pasta user-worker no VsCode com o seguinte comando:

cd user-worker
code .

Abra o terminal integrado dentro do VsCode e execute os seguintes comandos:

npm install
npm run dev

As rotas da API estarão disponíveis em http://localhost:3333.

Routes

Autenticação

Requisição

POST /sessions

Cria uma sessão para o usuário

Parameter Type Required
email string yes
password string yes

Exemplo

{
	"email": "janedoe@example.com",
	"password": "123456"
}

Respostas

200 Ok
{
	"profile": {
		"name": "Jane Doe",
		"avatar": "base64",
		"blockedTimes": {
			"dates": ["2021-10-01", "2021-10-02"],
			"weekDays": [0, 1],
			"intervals": [
				{
					"start": {
						"hour": 22,
						"minutes": 30
					},
					"end": { "hour": 8, "minutes": 0 }
				}
			]
		}
	},
	"token": "f9ebcdfb-e521-4523-a7d0-b4aaa24796eb"
}
400 Bad Request
{
	"message": "A new validation code was sent to email address successfully.",
	"errors": {
		"email": ["Invalid email address."],
		"password": ["Invalid password."]
	}
}
401 Unauthorized
{
	"message": "Invalid credentials"
}
500 Internal Server Error
{
	"message": "Internal server error"
}

Cadastro

Requisição

POST /sign-up

Gera um código de validação

Parameter Type Required
email string yes
password string yes

Exemplo:

{
	"email": "janedoe@example.com",
	"password": "123456"
}

Respostas

200 Ok
{
	"code": "123456"
}
400 Bad Request
{
	"message": "A new validation code was sent to email address successfully.",
	"errors": {
		"email": ["Invalid email address."],
		"password": ["Invalid password."]
	}
}
409 Conflict
{
	"message": "User already exists with this email"
}
500 Internal Server Error
{
	"message": "Internal server error"
}

Validação de código

Requisição

POST /sign-up/code-validate

Parameter Type Required
email string yes
code string yes

Valida o código do usuário e cria uma sessão

Exemplo:

{
	"email": "janedoe@example.com",
	"code": "123456"
}

Respostas

200 Ok
{
	"message": "Code validated successfully"
}
400 Bad Request
{
	"errors": {
		"email": ["Invalid email address."],
		"code": ["Invalid code."]
	}
}
400 Bad Request
{
	"message": "Invalid code",
	"errors": {
		"code": ["Invalid code."]
	}
}
404 Not Found
{
	"message": "User not found with this email"
}
500 Internal Server Error
{
	"message": "Internal server error"
}

Cria Perfil

Requisição
Parameter Type Required
name string yes
avatar string no
blockedTimes object no

POST /profile

Cria um perfil para o usuário

Exemplo:

{
	"name": "Jane Doe",
	"avatar": "base64",
	"blockedTimes": {
		"dates": ["2021-10-01", "2021-10-02"],
		"weekDays": [0, 1],
		"intervals": [
			{
				"start": {
					"hour": 22,
					"minutes": 30
				},
				"end": { "hour": 8, "minutes": 0 }
			}
		]
	}
}

Respostas

201 Created
{
	"name": "Jane Doe",
	"avatar": "base64",
	"blockedTimes": {
		"dates": ["2021-10-01", "2021-10-02"],
		"weekDays": [0, 1],
		"intervals": [
			{
				"start": {
					"hour": 22,
					"minutes": 30
				},
				"end": { "hour": 8, "minutes": 0 }
			}
		]
	}
}
400 Bad Request
{
	"message": "A new validation code was sent to email address successfully.",
	"errors": {
		"name": ["Required name."],
		"avater": ["Invalid image."],
		"blockedTimes.interval": ["Invalid interval"],
		"blockedTimes.weekDays": ["Invalid week days"],
		"blockedTimes.dates": ["Invalid dates"]
	}
}
404 Not Found
{
	"message": "User not found"
}
403 Forbidden
{
	"message": "Profile already exists"
}
500 Internal Server Error
{
	"message": "Internal server error"
}

Atualiza Perfil

Requisição

PUT /profile

Atualiza o perfil do usuário

Parameter Type Required
name string yes
avatar string no
blockedTimes object no

Exemplo

{
	"name": "Jane Doe",
	"avatar": "base64",
	"blockedTimes": {
		"dates": ["2021-10-01", "2021-10-02"],
		"weekDays": [0, 1],
		"intervals": [
			{
				"start": {
					"hour": 22,
					"minutes": 30
				},
				"end": { "hour": 8, "minutes": 0 }
			}
		]
	}
}

Respostas

200 Ok
{
	"name": "Jane Doe",
	"avatar": "base64",
	"blockedTimes": {
		"dates": ["2021-10-01", "2021-10-02"],
		"weekDays": [0, 1],
		"intervals": [
			{
				"start": {
					"hour": 22,
					"minutes": 30
				},
				"end": { "hour": 8, "minutes": 0 }
			}
		]
	}
}
400 Bad Request
{
	"message": "A new validation code was sent to email address successfully.",
	"errors": {
		"name": ["Required name."],
		"avater": ["Invalid image."],
		"blockedTimes.interval": ["Invalid interval"],
		"blockedTimes.weekDays": ["Invalid week days"],
		"blockedTimes.dates": ["Invalid dates"]
	}
}
404 Not Found
{
	"message": "User not found"
}
403 Forbidden
{
	"message": "Profile already exists"
}
500 Internal Server Error
{
	"message": "Internal server error"
}

📝 Licença

Este projeto esta sobe a licença MIT.

About

Node.js Application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published