Skip to content

API desenvolvida em NestJS para cadastro de livros. Conexão com banco de dados PostgreSQL via docker-compose. Interface WEB em Vue.js.

License

Notifications You must be signed in to change notification settings

paulocsilvajr/api-livros-nestjs

Repository files navigation

API-LIVROS-NESTJS

API desenvolvida em NestJS para gerenciamento(cadastro e emprestimo) de livros. Conexão com banco de dados PostgreSQL via docker-compose. Interface Web via VUE.js. Desenvolvido em Ubuntu22.04+ ou derivados.

Este repositório contém uma API desenvolvida em NestJS para o gerenciamento de livros, um docker-compose configurado para criar um conteiner PostgreSQL, para salvar a base de dados, e uma interface web desenvolvida em Vue.js para gerenciamento dos livros. O propósito deste repositório é o estudo dos frameworks apontados e a integração entre eles. O repositório contém shell scripts para automatizar a tarefa de instalação dos frameworks citados e de conteiners via docker.

Pré-requisitos:

  • Instalar o Node.js com o script install_node_snap_ubuntu20.04+.sh, instalar o NestJS com o script install_nestjs-cli.sh e o Vue com o script install_vue-cli.sh, se necessário.
  • Instalar o Docker e docker-compose com o comando sudo apt install docker.io docker-compose docker-doc em Distribuição Linux baseadas no Ubuntu22.04+.
  • Scripts desenvolvidos para o Ubuntu 22.04+ ou derivados.

Docker-compose para o banco de dados PostgreSQL

Detalhes dos scripts em db/:

  • O script postgres_docker_up.sh cria a pasta data, se não existir, e inicia o projeto postgres-api-livros-nestjs baseado no arquivo docker-compose.yml. A pasta data mantém a base de dados do PostgreSQL(volume Docker) e docker-entrypoint-initdb.d contém a definição do usuário docker(senha "masterkey") para o PostgreSQL e do banco de dados livros.
  • O script postgres_docker_ps.sh mostra o estado do conteiner.
  • O script postgres_docker_down.sh para a execução do conteiner. Ao executar esse script, é gerado um backup na pasta backup, montada dentro do conteiner(/backup), e depois é finalizado o conteiner.
  • O script postgres_docker_reset.sh para o conteiner e remove a pasta data, resetando as informações do banco de dados.
  • A pasta backup contém um script para fazer o backup(plain text) do banco de dados Livros. Esses backups são armazenados nesta pasta com o formato YYYY-MM-DD_backup_db_livros.dump.
  • Quando em execução, a Base de Dados em Postgres está disponível no endereço http://localhost:25432.

API em NestJS

A pasta livros-api contém a API do projeto desenvolvido em NestJS:

  • Para instalar as dependências, execute: npm install.
  • O arquivo .env possui variáveis de ambiente que configuram a conexão com o banco. Altere de acordo com a sua conexão com o banco.
  • API desenvolvida para conexão como PostgreSQL via TypeORM. Foi utilizado migrations para criar a estrutura do banco e tabelas.
  • Antes da primeira execução da API, deve-se executar o script migration_run.sh para criar a estrutura das tabelas e views definidas via migration. Para isso, o banco de dados Postgres via Docker deve estar rodando e a conexão ao banco deve estar correta no arquivo .env.
  • Para iniciar a API, execute npm run start ou npm run start:dev. Obs: o banco de dados deve estar em execução para evitar erro de conexão.
  • O script create_user_admin.sh cria um usuário inicial para acessar a interface WEB. Visualize esse arquivo para obter a senha do usuário "admin". A API deve estar em execução para executar esse script.
  • Quando em execução, a API está disponível no endereço http://localhost:3000.

O arquivo livros-api.postman_collection.json contém testes efetuados via Postman. Importe esse arquivo no Postman para visualizar os testes e criar novos. Crie um Environment com a variável token para armazenar o token usado nas requisição.

Interface WEB em Vue.js

A pasta livros-vuejs-cli contém a interface web desenvolvida em Vue.js a partir de um projeto gerado pelo CLI do Vuejs:

  • Para testar essa aplicação, com o Node instalado, execute npm install para instalar todas as dependências.
  • Use o script run-serve.sh para testar no modo desenvolvimento ou compile com o script run-build.sh para gerar a aplicação final na pasta build. Para rodar a interface WEB, o banco de dados e a API devem estar rodando.
  • O script install_http-server.sh instala um servidor HTTP em Node para rodar a interface web. Use o script run-server-http_dist.sh para rodar o interface web que está na pasta dist.
  • Na interface WEB é possível cadastrar um novo usuário já na tela inicial, gerenciar livros e autores e emprestar/devolver livros.
  • Configuração de url da API e Porta em arquivo .env
  • Quando em execução, a interface WEB está disponível no endereço http://localhost:8088.

Licença

Licença MIT, arquivo em anexo no repositório.

Contato

Paulo Carvalho da Silva Junior - pauluscave@gmail.com

About

API desenvolvida em NestJS para cadastro de livros. Conexão com banco de dados PostgreSQL via docker-compose. Interface WEB em Vue.js.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published