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.
As seguintes ferramentas foram usadas na construção do projeto:
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
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
.
POST /sessions
Cria uma sessão para o usuário
Parameter | Type | Required |
---|---|---|
string | yes | |
password | string | yes |
Exemplo
{
"email": "janedoe@example.com",
"password": "123456"
}
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"
}
POST /sign-up
Gera um código de validação
Parameter | Type | Required |
---|---|---|
string | yes | |
password | string | yes |
Exemplo:
{
"email": "janedoe@example.com",
"password": "123456"
}
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"
}
POST /sign-up/code-validate
Parameter | Type | Required |
---|---|---|
string | yes | |
code | string | yes |
Valida o código do usuário e cria uma sessão
Exemplo:
{
"email": "janedoe@example.com",
"code": "123456"
}
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"
}
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 }
}
]
}
}
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"
}
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 }
}
]
}
}
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"
}
Este projeto esta sobe a licença MIT.