Esta API foi desenvolvida como Projeto Final de conclusão do curso Todas Em Tech Backend {reprograma}, a proposta era criar um API aplicando CRUD com tema livre.
Procurando por necessidades que me motivassem a contruir uma API, eu percebi uma dificuldade pessoal em me relacionar com colegas de cursos EAD. Antes da pandemia sempre escolhi por fazer cursos presenciais, pois a conexão com meus colegas, a troca de conhecimento, é algo essencial para mim e isto não acontecia em cursos onlines.
Dentro da {reprograma} percebi que não é necessário estar na presença das pessoas para criar conexões e gostaria de criar um local onde todos pudessem experimentar isto, criar uma comunidade de pessoas para se apoiar e se desenvolverem juntos.
O projeto é uma API REST que permite o cadastro de pessoas, estas pessoas podem então criar novas "salas virtuais" ou se cadastrar em uma já criada que ainda possua espaço disponível. As se cadastrar a pessoa receberá o link que o criador da sala disponibilizou.
Cada sala possui linguagens e assuntos definidos para os usuários pesquisarem e encontrarem pessoas que estejam estudando o mesmo que eles independente de por onde estejam estudando.
- Cadastro de estudantes e salas virtuais conforme temas de estudo.
- Filtro das salas por assunto e tags.
- Criar recomendações para usuários.
- Login com API do Linkedin, Github, Facebook e Gmail.
- Possibilitar as pessoas a se adicionar na rede ou favoritarem.
- Favoritar salas.
- Abrir para outras áreas de estudos.
- Possibilitar que as pessoas bloqueiem usuários e denuncias.
Veja a documentação do POSTMAN com as Rotas e demonstrando as informações a serem passada: Postman
Para esta aplicação foi adotado o modelo MVC, abaixo pode verificar a organização das pastas:
📁 reprograma-e-classmate
|
|- 📁 src
| |
| |- 📁 controllers
| |- 📑 classroomController.js
| |- 📑 recommendationController.js
| |- 📑 userController.js
|
| |- 📁 database
| |- 📑 mongoConfig.js
|
| |- 📁 helpers
| |- 📑 auth.js
| |- 📑 validators.js
|
| |- 📁 middlewares
| |- 📁 validators.js
| |- 📑 classroomValidator.js
| |- 📑 recommendationValidator.js
| |- 📑 userValidator.js
| |- 📑 auth.js
|
| |- 📁 models
| |- 📑 classroom.js
| |- 📑 recommendation.js
| |- 📑 user.js
|
| |- 📁 routes
| |- 📑 clasroomRoutes.js
| |- 📑 index.js
| |- 📑 recommendationRoutes.js
| |- 📑 userRoutes.js
|
| |- 📑 app.js
|
|
|- 📑 .env
|- 📑 .env.example
|- 📑 .gitignore
|- 📑 package-lock.json
|- 📑 package.json
|- 📑 Procfile
|- 📑 README.md
|- 📑 server.js
Para a instalação do projeto siga as instruções:
É necesário possuir instalado as ferramentas:
- Git
- Node.js
- database NoSQL Mongodb
- IDE de sua preferencia, para a criação deste projeto foi utilizado o VSCode.
- Clone este projeto
$ git clone https://github.com/Siglyane/e-classmate.git
- Acesse o repositório local
$ cd e-classmate
- Instale as dependências
$ npm install
-
Crie um arquivo
.env
conforme o.env.example
e adicione os valores as variáveis de ambiente. -
Execute o servidor
$ npm start
Para construção desse projeto foi utilizado:
Método HTTP | Tipo Rota | Endpoint | Descrição |
---|---|---|---|
GET | Pública | http://localhost:5000/ |
Mensagem de apresentação (Index) |
Método HTTP | Tipo Rota | Endpoint | Descrição |
---|---|---|---|
GET | Pública | e-classmate.herokuapp.com/ |
Mensagem de apresentação (Index) |
Método HTTP | Tipo Rota | Endpoint | Descrição |
---|---|---|---|
POST | Pública | /user/create |
Cadastra um novo usário |
POST | Pública | /user/login |
Retorna token de login |
GET | Privada | /user/:id |
Retorna usuário conforme id |
PATCH | Privada | /user/update |
Atualiza cadastro de usuário logado |
DELETE | Privada | /user/delete |
Deleta cadastro de usuário logado |
Método HTTP | Tipo Rota | Endpoint | Descrição |
---|---|---|---|
POST | Privada | /class/create |
Cadastra nova sala |
GET | Pública | /class/all |
Retorna todas as salas online |
GET | Pública | /class/filter |
Retorna as salas conforme filtros passados |
PATCH | Privada | /class/login/:id |
Usuário logado na API cadastra na sala |
PATCH | Privada | /class/offline/:id |
Altera a sala para offline |
Método HTTP | Tipo Rota | Endpoint | Descrição |
---|---|---|---|
POST | Privada | /recomm/create/:id |
Cadastra nova recomendação conforme id do usuário |
PATCH | Privada | /recomm/update/:id |
Atualiza recomendação conforme id |
DELETE | Privada | /recomm/delete/:id |
Deleta recomendação conforme id |