/challenge

tech assessment

Primary LanguageJavaMIT LicenseMIT

project-logo

Tech Challenge

E-commerce Price Query Service

Build Status build
JaCoCo Test Coverage coverage
Other Information GitHub style

Features

Feature Description
โš™๏ธ Architecture The project follows a layered architecture, with a clear separation between the controller (REST) layer, service layer, and data access layer. The single responsibility principle is used to keep each layer focused on a specific task.
๐Ÿ”ฉ Code Quality The codebase demonstrates good coding practices, adhering to the Google code style guidelines. It follows a modular approach, making the codebase easy to read, understand, and maintain. Proper naming conventions and documentation enhance code readability.
๐Ÿ“„ Documentation Although not extensive, the provided documentation is sufficient for developers to understand the codebase and its components.
๐Ÿงฉ Modularity The codebase demonstrates good modularity, separating different components into their respective modules. This modular approach allows for easy reusability and maintainability of code. Each module focuses on a specific functionality, making it easier to understand and modify.
๐Ÿงช Testing The project includes unit tests using JUnit to verify the functionality of individual classes. It also includes some integration tests. The tests cover important features such as data storage, JSON conversion, and user interactions.
โšก๏ธ Performance The project is designed to be efficient and responsive, with no noticeable performance issues.
๐Ÿ“ฆ Dependencies Key external libraries and dependencies used in the project include Flyway for manage database migrations, and JUnit for unit testing. These dependencies provide necessary functionality and enhance development efficiency.

Repository Structure

โ””โ”€โ”€ challenge/
    โ”œโ”€โ”€ .github
    โ”‚   โ”œโ”€โ”€ badges
    โ”‚   โ””โ”€โ”€ workflows
    โ”œโ”€โ”€ LICENSE
    โ”œโ”€โ”€ doc
    โ”‚   โ””โ”€โ”€ prices.http
    โ”œโ”€โ”€ mvnw
    โ”œโ”€โ”€ mvnw.cmd
    โ”œโ”€โ”€ pom.xml
    โ””โ”€โ”€ src
        โ”œโ”€โ”€ main
        โ””โ”€โ”€ test

Getting Started

System Requirements:

  • Java: version 17.0.9

Installation

From source

  1. Clone the challenge repository:
$ git clone https://github.com/jvegaf/challenge
  1. Change to the project directory:
$ cd challenge
  1. Install the dependencies:
$ mvn clean install

Usage

From source

Run challenge using the command below:

$ java -jar target/challenge-1.0.0.jar

Tests

Run the test suite using the command below:

$ mvn test

Contributing

Contributions are welcome! Here are several ways you can contribute:

Contributing Guidelines
  1. Fork the Repository: Start by forking the project repository to your github account.
  2. Clone Locally: Clone the forked repository to your local machine using a git client.
    git clone https://github.com/jvegaf/challenge
  3. Create a New Branch: Always work on a new branch, giving it a descriptive name.
    git checkout -b new-feature-x
  4. Make Your Changes: Develop and test your changes locally.
  5. Commit Your Changes: Commit with a clear message describing your updates.
    git commit -m 'Implemented new feature x.'
  6. Push to github: Push the changes to your forked repository.
    git push origin new-feature-x
  7. Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
  8. Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
Contributor Graph


License

This project released under the MIT License. For more details, refer to the LICENSE file.