/BellaLeitura

Projeto Final {Reprograma - Implementação de posto de compartilhamento de livros infantis.

Primary LanguageJavaScriptMIT LicenseMIT


Projeto Final {reprograma}

Bella Leitura

Compartilhamento de Livros Infantis


📚 Descrição da API


Esta aplicação visa facilitar a implantação de postos de compartilhamentos de livros infantis. Os postos são estruturas simples, lúdicas e acessíveis às crianças. Localizados na calçada de comércios locais, em áreas próximas a escols públicas, eles visam proporcionar uma experiência continua de descoberta da leitura para o público infantil.

Através desta aplicação comércios locais (mercados, padarias, farmácias, petshops, etc.) podem se cadastrar como postos de hospedagem das estruturas de compartilhamento de livros. Enquanto outras instituições (editoras, livrarias, sebos, etc.) podem se cadastrar como colaboradores para a doação de livros. Por fim, a comunidade na qual os posto são instalados tem papel fundamental no compartilhamento de livros e pode através da aplicação checar a lista de livros doados e sugeridos para crianças.


⚙️ Funcionalidades

  • Cadastro de estabelecimentos comerciais para a hospedagem de postos de compartilhamento de livros.
  • Cadastro de empresas colaboradoras para a doação de livros infantis.
  • Listagem dos postos de compartilhamento de livros.
  • Listagem do catalogo de livros doados e sugeridos para crianças.

📚 Aprendizados

Desenvolvimento de uma API RESTful fundamentada no CRUD (Create, Read, Update, Delete) com integração com o banco de dados MongoDB. Criação de rotas públicas e privadas com sistema de cadastro e login de usuários.


🛠️ Tecnologias


Tecnologias utilizadas para desenvolvimento do projeto:

Pacotes Utilizados


📁 Arquitetura MVC

 📁 bella-leitura
   |
   |-  📁 src
   |    |
   |    |- 📁 controllers
   |         |- 📑 authController.js
   |         |- 📑 doacaoController.js
   |         |- 📑 hospedagemController.js 
   |         |- 📑 livrosController.js 
   |
   |    |- 📁 database
   |         |- 📑 MongoConfig.js
   |
   |    |- 📁 middleware
   |         |- 📑 auth.js
   |
   |    |- 📁 models
   |         |- 📑 doacaoSchema.js
   |         |- 📑 hospedagemSchema.js
   |         |- 📑 livroSchema.js
   |         |- 📑 userSchema.js
   |
   |    |- 📁 routes
   |         |- 📑 authRoutes.js 
   |         |- 📑 doacaoRoutes.js
   |         |- 📑 hospedagemRoutes.js
   |         |- 📑 index.js
   |         |- 📑 livrosRoutes.js
   |
   |    |- 📑 app.js
   |
   |
   |- 📑 .env
   |- 📑 .env.example
   |- 📑 .gitignore
   |- 📑 LICENSE
   |- 📑 package-lock.json
   |- 📑 package.json
   |- 📑 Procfile
   |- 📑 README.md
   |- 📑 server.js


🔃 Rotas


🔃 Rota Index

Método HTTP Endpoint Descrição
GET http://localhost:8080/ Apresentação (Index)

🔃 Rotas de Login:

Método HTTP Endpoint Descrição
POST /postos/novo-posto Cadastra posto de compartilhamento
POST /login/novo-doador Cadastra colaboradores para doação de livros
POST /login/autentica Autentica usuário

🔃 Rotas de Hospedagem:

Método HTTP Endpoint Descrição
PUT /postos/:id Atualiza de posto de compartilhamento
DELETE /postos/:id Remove posto de compartilhamento

🔃 Rotas de Busca por Postos de Compartilhamento:

Método HTTP Endpoint Descrição
GET /postos Retorna todos os postos
GET /postos/bairro Filtra postos por bairro
GET /postos/cidade Filtra postos por cidade
GET /postos/estado Filtra postos por estado

🔃 Rotas de Colaboradores Para a Doação de Livros:

Método HTTP Endpoint Descrição
GET /doacao Retorna todos os colaboradores que doam livros.
PUT /doacao/:id Altera cadastro do colaborador doador de livros.
DELETE /doacao/:id Remove colaborador da lista de doadores de livros.

🔃 Rotas de Cadastramento de Livros:

Método HTTP Endpoint Descrição
POST /livros/novo-livro Cadastra um novo livro
PUT /livros/:id Altera informações de um livro
DELETE /livros/:id Remove um livro específico

🔃 Rotas de Busca de Livros Doados/Sugeridos:

Método HTTP Endpoint Descrição
GET /livros Retorna todos os livros cadastrados
GET /livros/autor Filtra livros por autor
GET /livros/titulo Filtra livros por título

✅ Dados para Collection Hospedagem

  • id: autogerado e obrigatório
  • nome: texto e obrigatório
  • email: texto e obrigatório
  • password: texto e obrigatório
  • telefone: texto e obrigatório
  • cnpj: texto e obrigatório
  • endereco: texto e obrigatório
  • bairro: texto e obrigatório
  • cidade: texto e obrigatório
  • estado: texto e obrigatório
  • termoDeCompromisso: boolean e obrigatório
  • criadoEm: data gerada automaticamente

✅ API deve retornar seguinte JSON:

{
    "message": "Posto de compartilhamento cadastrado com sucesso",
    "hospedagem": {
        "nome": "Acai Tropical Berry ",
        "email": "acaitropical@tropicalberry.com",
        "telefone": "(34) 2477-0512",
        "cnpj": "18.976.496/0001-07",
        "endereco": "Av Perreira Correia , 1272",
        "bairro": "Centro",
        "cidade": "Uberaba",
        "estado": "Minas Gerais",
        "termoDeCompromisso": true,
        "createdAt": "2021-12-16T15:09:59.522Z",
        "_id": "61bb570b9c45654e143eb22a",
        "__v": 0
    }
}

✅ Dados para Collection Doacao

  • id: autogerado e obrigatório
  • nome: texto e obrigatório
  • email: texto e obrigatório
  • password: texto e obrigatório
  • telefone: texto e obrigatório
  • cnpj: texto e obrigatório
  • termoDeCompromisso: boolean e obrigatório
  • criadoEm: data gerada automaticamente

✅ API deve retornar seguinte JSON:

{
    "message": "Doador cadastrado com sucesso",
    "doacao": {
        "nome": "Livrooks",
        "email": "livrooks@livrooks.com",
        "telefone": "(11) 2017-0763",
        "cnpj": "70.165.190/0001-82",
        "termoDeCompromisso": true,
        "createdAt": "2021-12-16T15:15:05.260Z",
        "_id": "61bb5868703291a368ea6dc6",
        "__v": 0
    }
}

✅ Dados para Collection Livros

  • id: autogerado e obrigatório
  • titulo: texto e obrigatório
  • texto: texto e obrigatório
  • ilustracao: texto e obrigatório
  • tradutores: texto e não-obrigatório
  • editora: texto e obrigatório
  • idades: texto e obrigatório
  • ano: número e obrigatório
  • pais: texto e obrigatório
  • paginas: número e obrigatório
  • idDoador: texto e obrigatório
  • createdAt: data gerada automaticamente

✅ API deve retornar seguinte JSON:

{
    "message": "Livro cadastrado com sucesso",
    "livro": {
        "titulo": "AMORAS",
        "texto": "Emicida",
        "ilustracao": "Aldo Fabrini",
        "editora": "Companhia das Letrinhas",
        "idades": "3-5, 6-8",
        "ano": 2018,
        "pais": "Brasil",
        "paginas": 44,
        "idDoador": "61bab7e0ff367e6c9d6fcd84",
        "createdAt": "2021-12-16T15:24:34.719Z",
        "_id": "61bb5add1698486c3a191473",
        "__v": 0
    }
}

🚧 Implementações Futuras


  • Desenvolvimento Front-end da aplicação.
  • Mecanismo de busca dos postos por proximidade.
  • Gerenciamento de autorização do sistema.

👨‍💻 Autora

Victoria R. Bastos

LinkedIn


📝 Licença

Este projeto esta sob a licença MIT.