Poste suas duvidas à comunidade, verifique por dúvidas não respondidas, e verifique se algém respondeu sua dúvida

🚧 Concluído 🚀 🚧


Tabela de conteúdos


💻 Sobre o projeto

💻 Full stack overflow é uma api para alunos postarem suas dúvidas e que qualquer pessoa pode solicitar as questões não respondidas e responder a essas dúvidas


⚙️ Funcionalidades

  • Criar uma dúvida
  • Ver a resposta da dúvida criada
  • Pegar as perguntas não respondidas
  • Responder à uma pergunta
  • Cadastrar usuários para responder as perguntas

🚀 Como executar o projeto Localmente

Este projeto conta apenas com o back-end da api

Pré-requisitos

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

🎲 Rodando o Backend (servidor)

# Clone este repositório
$ git clone https://github.com/camilocoelhogomes/projeto_18_fullstack_overflow_developer.git

# Acesse a pasta do projeto no terminal/cmd
$ cd [projeto_17_api_sing_me_a_song_back_end](https://github.com/camilocoelhogomes/projeto_18_fullstack_overflow_developer.git)

# Instale as dependências
$ npm install

# crie o banco de dados a partir do arquivo dbConfig.sql e coloque as variavies de ambiente conforme o .env.example e crie um arquivo .env.dev baseado nele

# Execute a aplicação em modo de desenvolvimento
$ npm run dev

# O server iniciará na porta configurada em sua variavel de ambiente do .env.test

🛠 Tecnologias

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

Server (NodeJS)

Veja o arquivo package.json

Veja o arquivo .env.exemple


End Points

➡️ GET para a rota /is-live

Retorna I'm alive para verificar se o servidor está no ar

➡️ POST para a rota /users

Deve ser enviado um Json com o formato

{
  "name": "String contendo o Nome do usuário",
  "class": "String contendo a turma do usuário"
}

E receberá de volta um token de usuário, que será utilizado posteriormente para responder à perguntas

{
 "token": "Token no formato JWT"
}

➡️ POST para a rota /questions

Deve ser enviado um objeto no formato:

{
  "question": "Uma string contendo a pergunta",
  "student": "Uma string contendo o nome do aluno ",
  "class": "Uma string contendo o nome da turma ",
  "tags": "Uma string contendo algumas tags de indentificação da área da pergunta ",
}

Receberá de volta um Objeto identificador da pergunta que será utilizado mais tarde para saber se a pergunta foi respondida ou não

{
  "id": "id no formato UUID"
}

➡️ GET para a rota /questions

Recebe de volta todas as perguntas nã respondidas em um array de objetos

[
  {
    "id":"id no formato UUID",
    "question": "Uma string contendo a pergunta",
    "student": "Uma string contendo o nome do aluno ",
    "class": "Uma string contendo o nome da turma ",
    "tags": "Uma string contendo algumas tags de indentificação da área da pergunta ",
    "isAnswer":"false"
  }
]

➡️ POST para a rota /questions/:questionId

  • Essa rota é utilizada para responder à alguma questão

    • questionId = id da questão a ser respondida
  • Deve passar junto a rota um header authorization do tipo Bearer Token contendo o token do usuário recebido pelo mesmo quando criou o usuário na rota users

O body da requisição deve ser no formato

{
  "answer": "String contendo a resposta da questão",
}

➡️ GET para a rota /questions/:questionId

  • Essa rota é utilizada para obter informações de questões específicas
    • questionId = id da questão a ser respondida

Ela poderá ter duas respostas diferentes uma quando a questão ainda não foi respondida, e outra caso a questão já tenha sido respondida

  • Questão não respondida
{
  "submitAt":"Informação no formato datetime indicando quando a questão foi criada",
  "question": "Uma string contendo a pergunta",
  "student": "Uma string contendo o nome do aluno ",
  "class": "Uma string contendo o nome da turma ",
  "tags": "Uma string contendo algumas tags de indentificação da área da pergunta ",
  "isAwnser":"Boolano indicando false, já que a questão não foi respondida"
}
  • Questão respondida
{
  "submitAt":"Informação no formato datetime indicando quando a questão foi criada",
  "question": "Uma string contendo a pergunta",
  "student": "Uma string contendo o nome do aluno ",
  "class": "Uma string contendo o nome da turma ",
  "tags": "Uma string contendo algumas tags de indentificação da área da pergunta ",
  "isAwnser":"Boolano indicando false, já que a questão não foi respondida",
  "answeredAt": "Informação no formato datetime indicando quando a questão foi respondida",
  "answeredBy": "O nome da pessoa que respondeu a pergunta",
  "answer": "A resposta da pergunta em si",
}

🦸 Autor


Camilo Coelho Gomes

Linkedin Badge GitHub Badge

Feito com ❤️ por Camilo Coelho Entre em contato!