Code Monkey home page Code Monkey logo

e-classmate's Introduction

e-classmate

Inspiração

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.

Descrição da API

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.

Funcionalidades

  • Cadastro de estudantes e salas virtuais conforme temas de estudo.
  • Filtro das salas por assunto e tags.
  • Criar recomendações para usuários.

Funcionalidades Futuras

  • 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.

Documentação

Veja a documentação do POSTMAN com as Rotas e demonstrando as informações a serem passada: Postman

Arquitetura

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

Instalação

Para a instalação do projeto siga as instruções:

Pré-requisitos

É 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.

Rodando o Projeto

  1. Clone este projeto

$ git clone https://github.com/Siglyane/e-classmate.git

  1. Acesse o repositório local

$ cd e-classmate

  1. Instale as dependências

$ npm install

  1. Crie um arquivo .env conforme o .env.example e adicione os valores as variáveis de ambiente.

  2. Execute o servidor

$ npm start

Tecnologias

Para construção desse projeto foi utilizado:

Pacotes Utilizados

Rotas

Rota inicial

Localhost

Método HTTP Tipo Rota Endpoint Descrição
GET Pública http://localhost:5000/ Mensagem de apresentação (Index)

Heroku

Método HTTP Tipo Rota Endpoint Descrição
GET Pública e-classmate.herokuapp.com/ Mensagem de apresentação (Index)

Rotas usuários

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

Rotas salas

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

Rotas recomendações

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

e-classmate's People

Contributors

siglyane avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

xeniabarreto

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.