Aplicação consciste em um API de Enquetes. Foi desenvolvida ultilzando um arquitetura bem definida e desacoplada, ultilizando TDD como metotologia de trabalho e Clean Architecture para fazer a distribição das resposabildades em camadas, e sempre que possível ultilizando os principios do SOLID.
Os requisitos necessários são:
- Node
- npm
- Mongodb
Faça o clone do projeto e rode o comando npm install
para instalar as dependências.
npm install
Subir o servidor de desenvolvimento atravéz do comando npm run dev
npm run dev
Configurar as variáveis de ambiente criando um arquivo .env
na raiz do projeto, e seguindo o examplo do arquivo .env.example
.
npm test
A documentação completa pode ser encontrada no Swagger através do endpoits /api-docs
- Cadastro
- Login
- Criar enquetes
- Listar enquetes
- Responder enquetes
- Resultado da enquete
[POST] /signup
{
"name": "string",
"email": "string",
"password": "string",
"passwordConfirmation": "string"
}
{
"accessToken": "string",
"name": "string"
}
{
"error": "string"
}
[POST] /login
{
"email": "string",
"password": "string"
}
{
"accessToken": "string",
"name": "string"
}
{
"error": "string"
}
[POST] /surveys
{
"x-access-token": "string"
}
{
"question": "string",
"answers": [
{
"image": "string",
"answer": "string"
}
]
}
{
"error": "string"
}
[GET] /surveys
{
"x-access-token": "string"
}
[
{
"id": "string",
"question": "string",
"answers": [
{
"image": "string",
"answer": "string"
}
],
"date": "string",
"didAnswer": boolean
}
]
{
"error": "string"
}
[PUT] /surveys/{surveyId}/results
{
"x-access-token": "string"
}
{
"surveyId": "string"
}
{
"answer": "string"
}
{
"surveyId": "string",
"question": "string",
"answers": [
{
"image": "string",
"answer": "string",
"count": number,
"percent": number,
"isCurrentAccountAnswer": boolean
}
],
"date": "string"
}
{
"error": "string"
}
[GET] /surveys/{surveyId}/results
{
"x-access-token": "string"
}
{
"surveyId": "string"
}
{
"surveyId": "string",
"question": "string",
"answers": [
{
"image": "string",
"answer": "string",
"count": number,
"percent": number,
"isCurrentAccountAnswer": boolean
}
],
"date": "string"
}
{
"error": "string"
}