HannahFreitas / cestas-solidarias

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Projeto Final {Reprograma}


💻 Sobre o projeto


API desenvolvida como Projeto Final com o auxílio da professora Paula Allemand para a conclusão do curso de Backend {Reprograma}

Este projeto nasceu da minha vontade imensa de ajudar as pessoas. Nessa pandemia, observei que os pedidos de ajuda por meio das redes sociais, aumentaram em demasiado. Como já tinha a ideia de construir um projeto que me abrisse oportunidades para construir uma ONG no futuro, então aproveitei esse momento.

Apesar do aumento da desigualdade e do desemprego, há pessoas que também se disponibilizam a ajudar, então o objetivo principal da construção dessa API, é a conexão dessas pessoas que precisam de ajuda, com as pessoas que têm a possibilidade de ajudar. Por meio de doações de cestas básicas, ou até mesmo, transferência bancária via pix. Sempre com a preocupação de proteção dos dados de todos os envolvidos.

Com o pensamento no futuro de se tornar um projeto grande e viável para a criação de um espaço seguro, que essas pessoas em situação de vulnerabilidade social possam ter oportunidades melhores, de ajuda de todas os tipos, e não só de doações, mas com uma possibilidade de contratações, como implementação futura.



🚀 Descrição da API Cestas Solidárias


O projeto é uma API REST que permite que pessoas em situação de vulnerabilidade social, consigam se cadastrar, informando seus dados e descrevendo informações sobre a sua situação atual, de forma objetiva, para que haja a conexões com pessoas ou projetos sociais, que estejam procurando formas de ajudar, contendo assim dois cadastros, um para os beneficiários, e outro para os doadores que querem fazer uma busca de quem necessita ser beneficiado, tendo assim uma opção de login para estas que buscam ajudar, conseguindo acesso as informações de quem está cadastrado no sistema.

A interface é um CRUD completo integrado com o banco de dados, onde é possível listar os usuários, tanto que precisam de auxílio e quem pode dar este auxílio, cadastrar novos usuários, atualizar os dados e deletar o cadastro do usuário. Tudo isso passando por uma autenticação, gerando um token que permite ou não o acesso as pessoas que estarão no sistema.

🔗 Link


⚙️ Funcionalidades/Objetivos

  • Listar todas as pessoas que estão cadastradas no sistema;
  • Conseguir puxar os dados das pessoas por uma rota privada;
  • Cadastrar pessoas que estejam em caso de vulnerabilidade social e pessoas que possam oferecer um auxílio;
  • Atualizar os dados dessa pessoa, caso haja mudança de bairro, pix, email, celular;
  • Deletar essa pessoa caso não seja mais necessário este suporte a mesma ou a pessoas cadastrada não consiga mais ajudar;

📚 Aprendizados

O projeto final consiste em uma API fundamentada no CRUD, que são: CREATE (CRIAR), READ(LER-CONSULTA), UPDATE(ATUALIZAR) e DELETE(DESTRUIÇÃO).


🛠️ Tecnologias utilizadas nesse projeto


Para a construção do projeto, as seguintes tecnologias foram utilizadas:

Pacotes Utilizados


📁 Arquitetura MVC

 📁 cestas-solidarias
   |
   |-  📁 src
   |    |
   |    |- 📁 controller
   |         |- 📑 cestasSolidariasController.js
   |         |- 📑 loginUsuarioController.js
   |     
   |
   |    |- 📁 database
   |         |- 📑 mongoConfig.js
   |
   |    |- 📁 helpers
   |         |- 📑 authCestasSolidarias.js
   |
   |    |- 📁 middlewares
   |         |- 📑 authCestasSolidarias.js
   |
   |    |- 📁 models
   |         |- 📑 cestasSolidariasSchema.js
   |         |- 📑 loginUsuarioSchema.js
   |         
   |
   |    |- 📁 routes
   |         |- 📑 cestasSolidariasRoutes.js 
   |         |- 📑 indexRoutes.js
   |         |- 📑 loginUsuarioRoutes.js
   |
   |    |- 📑 app.js
   |    |- 📑 swagger.json
   |
   |
   |- 📑 .env
   |- 📑 .env.example
   |- 📑 .gitignore
   |- 📑 package-lock.json
   |- 📑 package.json
   |- 📑 README.md
   |- 📑 server.js

🔃 Rotas


🔃 Retorna a documentação no swagger:

Swagger - Heroku:

Método HTTP Endpoint Descrição
GET http://localhost:9095/api-docs documentação swagger

🔃 Retorna teste com apresentação:

Método HTTP Endpoint Descrição
GET http://localhost:9095/ Mensagem de apresentação (Index)

🔃 Manipulação das Rotas de Usuários que serão ajudados:

Método HTTP Endpoint Descrição
GET /users Retorna todos os usuários
GET /users/private Retorna todos os dados
POST /users/create Cria/cadastra um novo usuário
PUT /users/update/:id Altera informações de um usuário
DELETE /users/delete/:id Deleta um usuário específico

🔃 Manipulação das Rotas das pessoas que fizeram Login:

Método HTTP Endpoint Descrição
GET /helpers Retorna todos os usuários
GET /helpers/private Retorna todos os dados sem restrição
POST /helpers/register Cria um novo cadastro/login
POST /helpers/login Faz o login
PUT /helpers/update/:id Altera informações de um usuário
DELETE /helpers/delete/:id Deleta um usuário específico

✅ Dados para Collection Cestas Solidarias:

  • id: gerado automaticamente
  • nome: texto e obrigatório
  • sobrenome: texto e obrigatório
  • email: texto e obrigatório
  • celular: número e obrigatório
  • whatsapp: booleano e obrigatório
  • cpf: número e obrigatório
  • bairro: texto e obrigatório
  • pix: texto e obrigatório
  • termosDeUso: texto e obrigatório
  • informacao: texto e obrigatório
  • criadoEm: data gerada automaticamente e obrigatório

✅ API deve retornar seguinte JSON:

{
    "_id": "61b780fa0fd8f51ac598b64b",
    "name": "Henrique",
    "nickname": "Neves",
    "whatsapp": true,
    "bairro": "cordeiro",
    "termosDeUso": true,
    "informacao": "Três filhos, desempregado, sem alimentos em casa, necessitando urgente de ajuda com cestas básicas ou qualquer tipo de doação",
    "criadoEm": "2021-12-13T17:19:43.701Z",
    "__v": 0
}

✅ Dados para Collection Login:

  • id: gerado automaticamente
  • nome: texto e obrigatório
  • sobrenome: texto e obrigatório
  • cpf: número e obrigatório
  • email: texto e obrigatório
  • password: texto e obrigatório
  • termosDeUso: texto e obrigatório

✅ API deve retornar seguinte JSON:

{
    "messagem": "Pessoa cadastrada com sucesso",
    "saveUser": {
        "name": "Vitória",
        "nickname": "Leite",
        "cpf": 33355566788,
        "email": "vicsleite@gmail.com",
        "password": "$2b$10$n9jsDR1jjcN3Gpk8.EDXDeTOHwKCedTERQQyWh38jgCoZlwixFbq6",
        "termosDeUso": "false",
        "_id": "61b7a3a8a02e42b50f53a427",
        "createdAt": "2021-12-13T19:48:56.683Z",
        "updatedAt": "2021-12-13T19:48:56.683Z",
        "__v": 0
    }
}

🚧 Melhorias para o futuro (Em construção)


  • Implantação de código Front-end, com ReactJs ou AngularJs. Para o usuário ter a interação na tela.
  • Acrescentar no banco de dados, uma requisição que grava o ID de quem está logado, para segurança de quem está cadastrado.

Estou aberta a opiniões, caso queiram contribuir com meu projeto.


👨‍💻 Autora




🥰 Agradecimentos:

O que não pode faltar em um projeto? Isso mesmo, as considerações finais! Esse ano pra mim foi uma loucura, eu realmente decidi entrar de cabeça no que sempre amei e tocar pra frente meus planos de seguir em uma área que sempre fui fascinada. De imediato, minha noiva, sempre muito prestativa, me apoiou em todas as minhas decisões, mesmo que significasse menos tempo comigo, pois cá estou sempre me matando de estudar. Então primeiramente gostaria de agradecer a ela, por tudo que ela sempre tem feito, por toda a compreensão, por todo auxílio e amor.

Após toda essa minha decisão, conheci a reprograma sem querer, e decidi tentar como quem não quer nada, não muito confiante, pois ainda não acredita ser capaz de ser uma (como diz Andréa), reprogramer. Me inscrevi e minha maior surpresa foi a aprovação no meio de tanta candidatura e no meio de tanta gente boa. Logo de início, quis criar um vínculo forte com a minha turma, pois queria viver a experiência completa de ser uma reprogamer, e assim o fiz, e aqui vem os meus agradecimentos, "SPOILER": A lista vai ser longa!

Não encontrei o Linkedin de todas, por isso atualizarei todas no futuro

VOCÊ RECRUTADOR, ISSO MESMO, VOCÊ QUE PODE ESTAR AQUI NO PERFIL, CONTRATA MINHAS MENINAS!!!!!!!

Bem, agradeço quem chegou até aqui, e teve a paciência de ler tudo que escrevi, agora que agradecer as mulheres maravilhosas da minha vida, que me orientaram, que me mostraram o caminho e principalmente que: LUGAR DE MULHER É ONDE ELA QUISER! Obrigada, a todas vocês que fizeram de tudo para nos mostrar como seguir, ser forte, não desistir e o não menos importante, como codar! Aqui vai um pequena lista das minhas deusas possuidora de todo conhecimento:

  • Raquel Andrade - A pessoa que realmente facilita minha vida
  • Jéssica Osko - Essa mulher, é aquela que é literalmente sua sombra, ela sempre está de observando e te ajudando mesmo sem você ter nem ideia
  • Tabita Barbosa - Primeira professora e inesquecível né? Quem esquece o primeiro erro com git? KKKKKKKK
  • Paula Allemand - Além de me proporcionar um workshop incrível, ainda foi uma professora maravilhosa no dia a dia.
  • Beatriz Ramerindo - Achei que depois que tu mostrasse o banco de dados eu iria surtar, mas seguimos aqui no amor intacto.
  • Lilit Bandeira - Async e Await até hoje está nos meus pesadelos, mas graças a você fez todo o sentido do mundo!!
  • Tassila Bomfim - Primeiro projeto guiado a gente nunca esquece, nem parece que tu tava nervosa, arrasa sempre!
  • Edlaine Pontes - Nos mostrando a base com o seu projeto incrível.
  • Keyla Rosa - Que nos deu a base de toda uma lógica e foi sensacional.
  • Analu - Analu, obrigada pela paciência de ensinar um CRUD do zero, graças a você o CRUD ta ai!

Sou extremamente grata a vocês e amo cada uma de vocês da minha forma louca, obrigada!

E quero agradecer a todas as monitoras que tiverem presente nessa trajetória pra nos auxiliar, mas quero agradecer a uma em especial, pois sempre se colocou a minha disposição, sempre me ajudou da melhor forma que poderia, eu me guiei pelo projeto dela e além de tudo, é super inteligente, RECRUTADORES, SE ELA NÃO TIVER EMPREGADA OU MESMO SE TIVER, LUTEM POR ELA, ESSA É A OPORTINUDADE DE VOCÊS!!!! Obrigada, Bete, por tudo e pra você, além de link do Linkedin, em especial, dedicarei o meu projeto ao seu, OBRIGADA:

📝 Licença

Este projeto esta sob a licença MIT.

About

License:MIT License


Languages

Language:JavaScript 99.8%Language:Shell 0.2%