Giter Site home page Giter Site logo

chrystianmelo / bookstore Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 202 KB

This project consists of a library management system. The system allows users to perform operations such as adding, removing, and searching for books, as well as managing library user information. The application was developed using Java, with dependency management handled by Maven and continuous integration configured via GitHub Actions.

Home Page: https://app.codecov.io/gh/ChrystianMelo/BookStore

Java 100.00%
java maven ci-cd swing-gui codecoverage jacoco-plugin

bookstore's Introduction

BookStore

Membros do Grupo

  • Chrystian Paulo Ferreira de Melo
  • Sanny Cristiane Moreira de Sales

Descrição do Sistema

Este projeto consiste em um sistema de gerenciamento de biblioteca. O sistema permite aos usuários realizar operações como adicionar, remover e pesquisar livros, bem como gerenciar informações dos usuários da biblioteca. A aplicação foi desenvolvida utilizando a linguagem Java, com o gerenciamento de dependências realizado pelo Maven e integração contínua configurada via GitHub Actions.

Funcionalidades Principais:

  • Cadastrar Livro: Permite adicionar novos livros ao catálogo da biblioteca.
  • Deletar Livro: Permite remover livros existentes do catálogo.
  • Adicionar ao Carrinho: Permite adicionar livros ao carrinho de compras.
  • Deletar do Carrinho: Permite remover livros do carrinho de compras.
  • Fechar Carrinho: Permite finalizar a compra dos livros presentes no carrinho.
  • Ver Livros Disponíveis: Permite visualizar todos os livros disponíveis no catálogo.
  • Favoritar Item: Permite marcar livros como favoritos para fácil acesso posterior.
  • Ver Detalhes sobre o Livro: Permite visualizar detalhes específicos sobre um livro, como título, autor, ISBN, descrição e disponibilidade.

Tecnologias Utilizadas

Java

A linguagem principal utilizada para o desenvolvimento do sistema é o Java, uma linguagem de programação de propósito geral, orientada a objetos e amplamente utilizada para desenvolver aplicações robustas e seguras.

Maven

Maven é uma ferramenta de automação de compilação e gerenciamento de dependências utilizada no projeto. O Maven facilita o processo de construção, documentação e gestão de projetos Java, garantindo que todas as bibliotecas necessárias estejam disponíveis e atualizadas.

Estrutura do Projeto com Maven

O projeto segue a estrutura padrão do Maven:

├── src
│   ├── main
│   │   ├── java
│   │   └── resources
│   └── test
│       └── java
├── pom.xml
└── README.md

GitHub Actions

GitHub Actions é uma plataforma de integração contínua e entrega contínua (CI/CD) que permite automatizar fluxos de trabalho de desenvolvimento de software diretamente no repositório GitHub. Neste projeto, GitHub Actions é usado para automatizar o processo de build e testes sempre que houver um push ou pull request no repositório.

Configuração do GitHub Actions

O arquivo de configuração do GitHub Actions (maven.yml) está configurado para:

  • Executar a build do projeto utilizando Maven.
  • Executar testes automatizados para garantir que nenhuma funcionalidade existente seja quebrada com novas alterações.

bookstore's People

Contributors

chrystianmelo avatar lucasxavierveneroso avatar snycms avatar

Stargazers

 avatar  avatar

Watchers

 avatar

bookstore's Issues

Tests for gui components

Enhance Test Coverage for GUI Components

Description:

As our project continues to advance, it's crucial to ensure the reliability and robustness of our graphical user interface (GUI) components. One way to achieve this is by implementing comprehensive testing strategies.

To aid in this effort, I propose incorporating the techniques outlined in the following resource: Lab4-SENG09.pdf. These techniques, discussed in the lab slides, offer valuable insights into testing GUI components effectively. By following these guidelines, we can enhance our test coverage, identify potential issues early in the development cycle, and ultimately deliver a more stable and user-friendly product.

Let's collaborate to integrate these testing methodologies into our development process, ensuring the quality and reliability of our GUI components.

Improving Test Result Visualization

Improving Test Result Visualization with Coverage Reporting

Description:

To ensure the quality and reliability of our software, it's essential to not only conduct thorough testing but also to visualize the results effectively. One key aspect of this is showcasing test coverage, which provides insights into the effectiveness of our testing efforts.

To enhance our test result visualization, I suggest implementing coverage reporting in our testing pipeline. This can be achieved by integrating tools or plugins that generate coverage reports and display them in a clear and concise manner.

For guidance on setting up coverage reporting within GitHub Actions for Java projects using Maven, I recommend following the instructions outlined in the following resource: How to Setup GitHub Actions for Java with Maven Project. This tutorial provides step-by-step instructions on configuring GitHub Actions to generate coverage reports for Maven projects, facilitating better visibility into test coverage metrics.

By incorporating coverage reporting into our testing workflow, we can track the extent to which our code is exercised by tests, identify areas that require additional testing, and ensure comprehensive test coverage across our codebase. Let's leverage these practices to improve the overall quality of our software.

Create Presentation Video

Issue: Create Presentation Video (Maximum 3 Minutes)

Description

We need to create a presentation video, with a maximum duration of 3 minutes, that briefly covers the following points:

  1. The technologies adopted.
  2. The system in operation.
  3. An overview of the development of Stages 1 and 2.

Video Content Outline

1. Technologies Adopted (1 minute)

  • Description: Provide a brief overview of the main technologies used in the project.
  • Content:
    1. Programming Languages: Mention the primary languages used (e.g., Java, JavaScript).
    2. Frameworks and Libraries: Highlight key frameworks and libraries (e.g., Spring Boot, React).
    3. Databases: Specify the database technology (e.g., MySQL, PostgreSQL).
    4. Tools and Platforms: Include development and deployment tools (e.g., Git, Docker, Jenkins).

2. System in Operation (1 minute)

  • Description: Demonstrate the system's functionality by showcasing key features.
  • Content:
    1. User Interface: Show the main screens and navigation.
    2. Core Features: Highlight major functionalities (e.g., user registration, data retrieval).
    3. Interaction Flow: Provide a brief walkthrough of a typical user interaction.

3. Overview of Development Stages 1 and 2 (1 minute)

  • Description: Summarize the development process and milestones achieved in Stages 1 and 2.
  • Content:
    1. Stage 1: Initial setup, project planning, and preliminary development.
    2. Stage 2: Further development, feature implementation, and testing.
    3. Challenges and Solutions: Briefly discuss any significant challenges faced and how they were resolved.

Implement Integration or System (E2E) Tests

Issue: Implement 5 Integration or System (E2E) Tests

Description

We need to implement 5 integration or system (end-to-end) tests to ensure the robustness and reliability of our application. These tests should follow best practices, such as using public APIs, behavior-driven testing, focused tests, and maintaining simplicity.

Best Practices for Tests

  1. Use Public APIs: Tests should interact with the application through its public APIs.
  2. Behavior-Driven Testing: Tests should be based on the expected behavior of the application.
  3. Focused Tests: Each test should focus on a specific functionality or user scenario.
  4. Non-Complex Tests: Keep tests simple and straightforward to maintain and understand.

Add data permanance

Issue: Add Data Persistence

Description

Implement a data persistence mechanism in the project. This will ensure that information is stored persistently and can be accessed even after the program is closed. We have two main options:

  1. File Storage using the java.io package.
  2. Database Storage using the java.sql package.

Implementation Options

1. File Storage (java.io)

Utilize the java.io package to read and write data to text files. This approach is simple and straightforward.

2. Database Storage (java.sql)

Utilize the java.sql package to connect to a relational database (such as MySQL, PostgreSQL, etc.). This approach is more robust and scalable.

Publish Coverage Reports to Codecov

Issue: Publish Coverage Reports to Codecov via GitHub Actions

Description

We need to publish our coverage reports to Codecov using GitHub Actions. This involves configuring the Codecov GitHub Action to upload our coverage reports automatically after our CI pipeline runs.

About Codecov

Codecov is a platform for publishing online coverage reports. You must create an account on Codecov and allow access to GitHub. Codecov provides detailed insights into code coverage, helping maintain and improve code quality.

Examples of Coverage Reports Published on Codecov:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.