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.
- 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
- 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)
POST /cadastro/
End-poit para cadastro de usuario
POST /token/
Para efetuar o loginPOST /token/refresh/
End-point para renovar o tokensPOST /VerifyAuthenticated/
End-point para verificar se o usuarios está autenticado
GET /user/
Retorna dados do usuario autenticado do requestPUT /user/{id}/
Para editar dados do usuario autenticado do resquestPATCH /user/{id}/
Para editar parcialmente dados do usario autenticado do resquestDELETE /user/{id}/
Para deletar usuario logado
GET /all_users/
Para visualizar todos os usuarios do sistemaPOST /all_users/
Para cadastro de um novo usuarioGET /all_users/{id}/
Para recuperar um usuario pelo idPUT /all_users/{id}/
Para alterar dados de um usuarioPATCH /all_users/{id}/
Para alterar parcialmente dados de um usuarioDELETE /all_users/{id}/
Para deletar um usuario
Permissões: Cadastro, editar, excluir permitido apenas para admins. Usuarios comum permitdo apenas visualização.
GET /livros/
Para visualizar todos os livrosPOST /livros/
Para cadastrar um novo livroGET /livros/{id}/
Para recuperar um livro pelo idPUT /livros/{id}/
Para editar dados de um livroPATCH /livros/{id}/
Para editar parcialmente dados de um livroDELETE /livros/{id}/
Para deletar um livroGET /novoslivros/
Retorna os cinco ultimos livros retornado pelo sistemaGET /recomendacao/
Retorna cinco livros aleatorios
Permissões: Cadastro, editar, excluir permitido apenas para admins. Usuarios comum permitdo apenas visualização.
GET /emprestimos/
Para todos visualizar emprestimos do sistemaPOST /emprestimos/
Para cadastrar um novo emprestimoGET /emprestimos/{id}/
Para recuperar um emprestimo especificoPUT /emprestimos/{id}/
Para editar um emprestimoPATCH /emprestimos/{id}/
Para editar parciamente um emprestimoDELETE /emprestimos/{id}/
Para deletar em emprestimoGET /usuarios/{id}/emprestimos/
Retorna todos os emprestimos relacionado ao usuario
Em andamento
Para executar testes unitários entre na pasta ApiBiblioteca e digite o comando:python manage.py test
- Python 3.11.4
- Venv
- Pip
- Node 18.16.0
- Entre na pasta
biblioteca
pelo terminal. - Instale as dependências com o comando
npm install
. - 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. - Para inciar o servidor:
npm run dev
.
- Entre na pasta
ApiBiblioteca
pelo terminal - Digite:
python -m venv env
, para criar um ambiente virtual para instalar as bibliotecas - Ative o ambiente virtual:
source env/bin/activate
- Agora digite:
pip install -r requirements.txt
, para instalar as bibliotecas - E finalmente rode o projeto:
python manage.py runserver
- Para cadastrar 55 livros apartir do backup
python manage.py loaddata livros_backup.json