Curso: Ciência da Computação
Disciplina: Engenharia de Software
Semestre: 1º Semestre de 2025
Professor: Edeilson Milhomem
- Guilherme Thomaz Brito
- Ítalo Henrik Batista Reis
- Jhennifer da Silva Azevedo
- Luiz Felipe da Paz Leal
- Marcos Freire de Melo
O BiblioTech é uma livraria digital que permite a venda de livros digitais (ebooks) e livros físicos de forma acessível e organizada. Os usuários poderão explorar um catálogo de livros, realizar compras e acessar sua biblioteca digital para leitura dos ebooks adquiridos.
- O sistema deve permitir que novos usuários se cadastrem.
- O sistema deve permitir que usuários já cadastrados façam login.
- O sistema deve exibir um catálogo de livros disponíveis para compra.
- O sistema deve permitir a navegação por categorias e subcategorias de livros.
- O sistema deve exibir livros em destaque.
- O sistema deve permitir a busca de livros por título.
- O sistema deve permitir a busca de livros por gênero literário.
- O sistema deve permitir a busca de livros por palavras-chave e conteúdo.
- O sistema deve permitir a filtragem de resultados por preço.
- O sistema deve exibir informações detalhadas sobre cada livro.
- O sistema deve mostrar a capa, sinopse, informações do autor e editora.
- O sistema deve permitir que usuários adicionem livros ao carrinho de compras.
- O sistema deve permitir que usuários removam livros do carrinho.
- O sistema deve permitir que usuários alterem a quantidade de itens.
- O sistema deve salvar o carrinho para acesso posterior, mesmo após logout.
- O sistema deve calcular automaticamente o valor total da compra.
- O sistema deve adicionar automaticamente os livros comprados à biblioteca do usuário.
- O sistema deve permitir que o usuário visualize o status e detalhes de seus pedidos anteriores.
- O sistema deve armazenar o histórico de compras do usuário.
- O sistema deve permitir que usuários visualizem seus dados de perfil.
- O sistema deve permitir que usuários editem suas informações pessoais.
- O sistema deve permitir que usuários alterem suas senhas.
- O sistema deve exibir todos os livros adquiridos pelo usuário.
- O sistema deve permitir a ordenação dos livros por data de compra, título ou autor.
- O sistema deve permitir a busca de livros na biblioteca do usuário.
- O sistema deve permitir a filtragem de livros por categoria ou status de leitura.
- O sistema deve fornecer um leitor de ebooks integrado.
- O sistema deve permitir a navegação entre capítulos e páginas.
- O sistema deve permitir retornar à última página lida.
- O sistema deve permitir que administradores adicionem novos livros ao catálogo.
- O sistema deve permitir que administradores editem informações de livros existentes.
- O sistema deve permitir que administradores removam livros do catálogo.
- O sistema deve permitir que administradores categorizem livros em gêneros e coleções.
- O sistema deve permitir que o usuário adicione livros à sua lista de desejos.
- O sistema deve permitir que o usuário remova livros da sua lista de desejos.
- O sistema deve exibir todos os livros salvos na lista de desejos do usuário.
- O sistema deve refletir as alterações feitas na lista de desejos em tempo real, como adições ou remoções.
Eu, como usuário, desejo me cadastrar na plataforma BiblioTech.
Para isso, eu devo acessar a página inicial e clicar na opção de Cadastrar. Para completar o cadastro, preciso inserir informações como nome , e-mail, senha e confirmação da senha. Caso eu já tenha uma conta, posso clicar na opção "Faça login" e ser direcionado para a tela de login.
Eu, como usuário, desejo acessar minha conta na BiblioTech.
Para isso, preciso estar previamente cadastrado. Na tela de login, devo inserir meu e-mail e senha cadastrados. Caso eu não tenha uma conta, posso clicar na opção "Cadastre-se" e ser direcionado para a tela de cadastro.
Eu, como usuário, desejo visualizar os livros disponíveis na BiblioTech, para escolher que livro desejo ver detalhes ou comprar.
Para isso, ao acessar a página inicial, devo encontrar uma lista de livros exibidos de forma organizada, incluindo livros em destaque, lançamentos.
Eu, como usuário, desejo buscar livros específicos na plataforma.
Para isso, devo poder utilizar a barra de pesquisa, onde poderei inserir o título do livro ou palavras-chave.
Eu, como usuário, desejo filtrar os livros exibidos.
Para isso, a plataforma deve disponibilizar filtros por gênero literário, preço, facilitando a busca pelos livros do meu interesse.
Eu, como usuário, desejo visualizar detalhes de um livro antes de comprá-lo.
Ao clicar em um livro no catálogo, devo ser direcionado para uma página que contém a capa do livro, título, autor, sinopse, editora e preço.
Eu, como usuário, desejo adicionar livros ao meu carrinho de compras. Assim, poderei selecionar os livros que desejo comprar e finalizá-los todos juntos no momento apropriado.
Eu, como usuário, desejo remover livros do meu carrinho. Para isso, poderei acessar o carrinho e excluir os livros que não quero mais comprar.
Eu, como usuário, desejo alterar a quantidade de livros no meu carrinho. Para isso, poderei ajustar a quantidade desejada antes de finalizar a compra (no caso de livros com múltiplos volumes ou coleções).
Eu, como usuário, desejo que o sistema salve meu carrinho mesmo que eu saia da conta. Assim, ao retornar para o sistema, poderei continuar minhas compras de onde parei.
Eu, como usuário, desejo visualizar o valor total da compra no carrinho. Para isso, o sistema deve calcular e exibir o valor atualizado conforme modifico o conteúdo do carrinho.
Eu, como usuário, desejo visualizar uma confirmação clara após finalizar minha compra. Para isso, o sistema deve exibir uma tela com a mensagem “Compra finalizada com sucesso 🎉”, listando os livros adquiridos, suas quantidades, e seus respectivos preços.
Eu, como usuário, desejo visualizar o endereço de entrega cadastrado para a compra. Assim, posso confirmar que os dados estão corretos. O sistema deve exibir o endereço completo com quadra, alameda, QI, cidade e estado.
Eu, como usuário, desejo acompanhar o status da entrega dos meus livros físicos (quando aplicável). Para isso, a tela de finalização deve mostrar um indicador visual de rastreio.
Eu, como usuário, desejo visualizar meus dados pessoais cadastrados. Assim, poderei conferir minhas informações diretamente na plataforma.
Eu, como usuário, desejo editar minhas informações pessoais. Para isso, devo conseguir atualizar dados como nome, e-mail ou outras preferências.
Eu, como usuário, desejo alterar minha senha. Para isso, a plataforma deve disponibilizar uma opção segura para redefinir ou atualizar minha senha.
Eu, como usuário, desejo visualizar todos os livros que comprei. Assim, poderei acessá-los a qualquer momento em minha biblioteca digital.
Eu, como usuário, desejo buscar livros específicos dentro da minha biblioteca. Para isso, uma barra de pesquisa deve estar disponível na tela da biblioteca.
Eu, como usuário, desejo filtrar os livros da minha biblioteca por categoria. Assim, consigo localizar com facilidade os livros que ainda não li ou que fazem parte de um gênero específico.
Eu, como usuário, desejo ler meus livros digitais diretamente na plataforma. Para isso, o sistema deve disponibilizar um leitor de ebooks integrado, acessível a partir da biblioteca.
Eu, como administrador, desejo adicionar novos livros ao catálogo. Assim, posso manter a livraria sempre atualizada com novos títulos.
Eu, como administrador, desejo editar as informações dos livros já cadastrados. Para isso, devo acessar a área de gerenciamento e alterar os dados necessários, como título, sinopse ou preço.
Eu, como administrador, desejo remover livros do catálogo. Assim, consigo excluir conteúdos desatualizados ou que não devem mais ser vendidos.
Eu, como usuário, desejo adicionar livros à minha lista de desejos.
Assim, posso salvar livros que me interessam para acessá-los facilmente no futuro.
Eu, como usuário, desejo remover livros da minha lista de desejos.
Para isso, devo poder acessar minha lista de desejos e excluir os livros que não quero mais manter.
Eu, como usuário, desejo visualizar todos os livros salvos na minha lista de desejos.
Assim, posso acessar uma página dedicada onde todos os livros salvos são exibidos de forma organizada.
Eu, como usuário, desejo que a lista de desejos seja atualizada em tempo real.
Assim, ao adicionar ou remover livros, o sistema deve refletir imediatamente as alterações na interface.
Valor: Permitir que o administrador gerencie os livros disponíveis na livraria digital, incluindo cadastro, edição e remoção de títulos, enquanto o usuário pode visualizar o catálogo de livros, com opções de busca e filtragem
Objetivo: Como administrador, desejo acessar o sistema para cadastrar, editar e remover livros do catálogo, de forma organizada, para que os usuários tenham acesso aos títulos corretos.
Requisitos:
- RF02 – Login do Usuário
- RF11 – Gerenciamento de Catálogo
Objetivo: Como usuário, desejo visualizar os livros disponíveis na plataforma, podendo buscar por título, filtrar por gênero ou preço, para encontrar facilmente os livros do meu interesse.
Requisitos:
-
RF03 – Navegação no Catálogo
-
RF04 – Busca e Filtragem
Valor: Garantir que os usuários possam se cadastrar, fazer login, visualizar detalhes dos livros, adicionar ao carrinho, e salvar o carrinho após o logout.
Objetivo: Permitir que o usuário se cadastre e faça login na plataforma, visualize os detalhes dos livros, adicione livros ao carrinho e, ao dar logout, o carrinho seja salvo para que possa continuar a compra posteriormente.
Requisitos:
- RF01 - Cadastro do Usuário
- RF05 - Visualização de Detalhes do Livro
- RF06 - Carrinho de Compras
Iteração 3 - Finalização do Pedido e Gerenciamento de Perfil com Histórico de Pedidos e Lista de desejos
Valor: Proporcionar uma experiência completa de compra, permitindo que os usuários finalizem pedidos, acompanhem seu histórico de compras e gerenciem suas listas de desejos. Além disso, oferecer funcionalidades para gerenciar o perfil e visualizar informações pessoais.
Objetivo: Implementar as funcionalidades de finalização de pedidos e gerenciamento de perfil, incluindo o histórico de pedidos e a exibição dos livros salvos na lista de desejos. Isso melhora a experiência do usuário, garantindo que ele tenha acesso às informações de suas compras, dados pessoais e livros de interesse.
Requisitos:
- RF07 - Finalização do Pedido
- RF08 - Gerenciamento de Perfil
- RF12 - Lista de desejos
Valor: Permitir que os usuários acessem e leiam os livros digitais que adquiriram, além de gerenciar sua biblioteca pessoal.
Objetivo: Como usuário, desejo acessar minha biblioteca de livros comprados, organizar e buscar títulos, e ler meus eBooks diretamente na plataforma, para ter uma experiência de leitura digital completa e integrada.
Requisitos:
- RF09 – Biblioteca do Usuário
- RF10 – Leitor de eBooks
Valor: Aprimorar a experiência do usuário e a robustez do sistema através da implementação de funcionalidades de navegação otimizadas, gerenciamento de dados mais completo e refinamento de recursos existentes, além de garantir a qualidade do código com a introdução de testes unitários.
Objetivo: Como equipe de desenvolvimento, desejamos refinar a plataforma BiblioTech implementando paginação em listagens extensas, melhorando o gerenciamento de endereços para pedidos, criando uma tela de catálogo mais interativa com opções de ordenação, adicionando o gerenciamento de gêneros no painel administrativo, aprimorando o leitor de eBooks e iniciando a cobertura de testes unitários para aumentar a confiabilidade e a manutenibilidade do sistema.
Siga os passos abaixo para configurar e executar o projeto BiblioTech em seu ambiente de desenvolvimento local.
Certifique-se de que você tem os seguintes softwares instalados e configurados em sua máquina:
- Git para clonar o repositório.
- XAMPP com o módulo Apache e PHP.
- Docker Desktop para executar o banco de dados.
- DBeaver (ou qualquer outro cliente SQL de sua preferência) para gerenciar o banco de dados.
# Clone o repositório do projeto para a sua máquina
git clone https://github.com/thomazllr/bibliotech.git
-
Mova a pasta do projeto
bibliotechque você clonou para dentro do diretóriohtdocsdo XAMPP (geralmenteC:\xampp\htdocs). -
Navegue até o diretório do projeto e instale as dependências do PHP usando o Composer. Se você não tiver o Composer instalado, siga as instruções de instalação aqui.
cd C:\xampp\htdocs\bibliotech composer install -
Configure as variáveis de ambiente:
- Crie um arquivo chamado
.envna raiz do projeto, caso ainda não exista. - Edite o arquivo
.envcom as informações do seu banco de dados e outras configurações necessárias, por exemplo:
DB_HOST=localhost DB_PORT=5432 DB_DATABASE=bibliotech_db DB_USERNAME=postgres DB_PASSWORD=postgres
- Crie um arquivo chamado
-
Abra o arquivo de configuração do PHP,
php.ini, geralmente localizado emC:\xampp\php\php.ini. -
Procure e descomente (remova o
;do início) as seguintes extensões para permitir a comunicação com o PostgreSQL:extension=pgsql extension=pdo_pgsql -
Reinicie o serviço do Apache no painel de controle do XAMPP para que as alterações tenham efeito.
-
Certifique-se de que o Docker Desktop está em execução.
-
No seu terminal (Prompt de Comando, PowerShell, etc.), execute o comando abaixo para criar e rodar um container Docker com o PostgreSQL.
docker run --name postgres-bibliotech -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=bibliotech_db -p 5432:5432 -d postgres- Este comando irá criar um container chamado
postgres-bibliotech. - Um banco de dados chamado
bibliotech_dbserá criado automaticamente. - O banco ficará acessível na porta
5432da sua máquina.
- Este comando irá criar um container chamado
-
Abra o DBeaver e crie uma nova conexão com o banco de dados utilizando os seguintes dados:
- Tipo de Conexão: PostgreSQL
- Host:
localhost - Porta:
5432 - Banco de Dados:
bibliotech_db - Usuário:
postgres - Senha:
postgres
-
Teste a conexão para garantir que tudo está funcionando.
-
Após conectar, abra um Editor SQL e execute os scripts para criar a estrutura do banco e popular os dados. Os scripts estão na raiz do projeto
data.sql.- Execute o script de criação das tabelas e inserção de dados (
data.sql).
- Execute o script de criação das tabelas e inserção de dados (
-
Garanta que os serviços Apache (pelo XAMPP) e Docker Desktop (com o container
postgres-bibliotech) estão em execução. -
Abra seu navegador de internet e acesse a URL do projeto:
http://localhost/bibliotech/view
Pronto! Agora o sistema BiblioTech deve estar funcionando em seu ambiente local.