/Sistema-Biblioteca

Um sistema para gerenciar livros e emprestimos de livros feitos em uma biblioteca

Primary LanguageJavaScriptMIT LicenseMIT

Menino lendo um livro na lua

Sistema Biblioteca

Gereciamento de livros, empréstimos e acervo de biblioteca

Bower GitHub Repo stars GitHub Repo forks

Status: em progresso


  1. Sobre
  2. Funcionalidades
  3. Tecnologias usadas
  4. Banco de dados
  5. End-points da api
  6. Testes
  7. Instalação
  8. Licensa

Sobre

Este projeto tem como objetivo criar uma aplicação web completa para gerenciar o acervo, empréstimos e devoluções de livros em uma biblioteca. A aplicação conta com funcionalidades de login cadastro de usuários, cadastro de livros e bibliotecários.

Durante o meu aprendizado em Vue.js, percebi que o Vue.js carrega a página em branco antes de carregar o JavaScript e, consequentemente, o conteúdo da página. Após pesquisar sobre soluções para este problema, descobri o Server Side Rendering (SSR). Decidi utilizar o Nuxt, um framework baseado em Vue, para facilitar a renderização no lado do servidor e aplicar meus novos conhecimentos.

Funcionalidades

  • Cadastro de usuários e bibliotecários
  • Autenticação de usuários e bibliotecários com JWT (JSON Web Token)
  • Gerenciamento de livros (adicionar, remover, editar e visualizar)
  • Gerenciamento de empréstimos (adicionar, remover, editar e visualizar)
  • Gerenciamento de arquivos de imagens para livros e fotos de usuários
  • Hierarquia de funcionalidades: a edição de livros e empréstimos é permitida apenas para administradores, enquanto os usuários comuns têm acesso a requisições seguras, como GET, HEAD e OPTIONS.
  • Responsividade
  • Pesquisa de livros e empréstimos

Tecnologias usadas

  • Front-End
    • Nuxt
    • Vue.js
    • Javascript
    • Html
    • CSS
    • Pinia
  • Back-End
    • Python
    • Django rest framework
    • uWsgi
    • Nginx
    • SqlLite (Pretendo trocar no futuro para o Postgresql)

Banco de dados

Diagrama do banco de dados relacional

Diagrama do banco de dados

End-points da Api

Cadastro de usuario

  • POST /cadastro/ End-poit para cadastro de usuario

Autenticação JWT(JSON Web Token)

  • POST /token/ Para efetuar o login
  • POST /token/refresh/ End-point para renovar o tokens
  • POST /VerifyAuthenticated/ End-point para verificar se o usuarios está autenticado

User autenticado

Permissões: Apenas usuarios autenticados.
  • GET /user/ Retorna dados do usuario autenticado do request
  • PUT /user/{id}/ Para editar dados do usuario autenticado do resquest
  • PATCH /user/{id}/Para editar parcialmente dados do usario autenticado do resquest
  • DELETE /user/{id}/ Para deletar usuario logado

Gerenciamento de usuarios

Permissões: Apenas usuarios admins tem acesso.
  • GET /all_users/ Para visualizar todos os usuarios do sistema
  • POST /all_users/ Para cadastro de um novo usuario
  • GET /all_users/{id}/ Para recuperar um usuario pelo id
  • PUT /all_users/{id}/ Para alterar dados de um usuario
  • PATCH /all_users/{id}/ Para alterar parcialmente dados de um usuario
  • DELETE /all_users/{id}/ Para deletar um usuario

Livros

Permissões: Cadastro, editar, excluir permitido apenas para admins. Usuarios comum permitdo apenas visualização.
  • GET /livros/ Para visualizar todos os livros
  • POST /livros/ Para cadastrar um novo livro
  • GET /livros/{id}/ Para recuperar um livro pelo id
  • PUT /livros/{id}/ Para editar dados de um livro
  • PATCH /livros/{id}/ Para editar parcialmente dados de um livro
  • DELETE /livros/{id}/ Para deletar um livro
  • GET /novoslivros/ Retorna os cinco ultimos livros retornado pelo sistema
  • GET /recomendacao/ Retorna cinco livros aleatorios

Empréstimo

Permissões: Cadastro, editar, excluir permitido apenas para admins. Usuarios comum permitdo apenas visualização.
  • GET /emprestimos/ Para todos visualizar emprestimos do sistema
  • POST /emprestimos/ Para cadastrar um novo emprestimo
  • GET /emprestimos/{id}/ Para recuperar um emprestimo especifico
  • PUT /emprestimos/{id}/ Para editar um emprestimo
  • PATCH /emprestimos/{id}/ Para editar parciamente um emprestimo
  • DELETE /emprestimos/{id}/ Para deletar em emprestimo
  • GET /usuarios/{id}/emprestimos/ Retorna todos os emprestimos relacionado ao usuario

Estrutura do servidor / Projeto

Em andamento

Testes

Para executar testes unitários entre na pasta ApiBiblioteca e digite o comando:python manage.py test

Instalação

Requisitos

  • Python 3.11.4
  • Venv
  • Pip
  • Node 18.16.0

Instalação Front-End

  1. Entre na pasta biblioteca pelo terminal.
  2. Instale as dependências com o comando npm install .
  3. Crie um arquivo .env para configurar a url do servidor, e adicione a seguinte linha no arquivo. NUXT_PUBLIC_API_BASE_URL = "http://127.0.0.1:8000/" Essa linha poderá mudar dependendo do seu computador.
  4. Para inciar o servidor: npm run dev.

Instalação Back-end

  1. Entre na pasta ApiBiblioteca pelo terminal
  2. Digite: python -m venv env, para criar um ambiente virtual para instalar as bibliotecas
  3. Ative o ambiente virtual: source env/bin/activate
  4. Agora digite: pip install -r requirements.txt, para instalar as bibliotecas
  5. E finalmente rode o projeto:python manage.py runserver
  6. Para cadastrar 55 livros apartir do backup python manage.py loaddata livros_backup.json

Licensa

MIT