Skip to content

IT-Academy-BCN/ita-challenges-backend

Repository files navigation

ITA-challenges-backend


Table of contents

  1. Description
  2. Usage
  3. Installation
  4. Newcomers
  5. Guidelines and Code Conventions
  6. FAQ's
  7. Contributors
  8. Contact Information
  9. License

Description

The ITA-challenges-backend project is built using Java with the Spring Boot framework and reactive programming. It is an initiative designed specifically for students enrolled in the IT Academy program at Barcelona Activa.

The primary goal is to provide students with hands-on experience in a real-world development environment, real scenarios they may encounter in their future careers.

Simultaneously, students collaborate to create a valuable learning tool for the ITA challenges application dedicated to code and programming coding-challenges. This project involves tackling new features, addressing legacy code, resolving bugs, and fostering teamwork. The emphasis is not only on technical proficiency but also on providing a holistic learning experience for our students.

This project exists thanks to all the people who contribute.

For newcomers, we strongly emphasize the importance of thoroughly reading the entire README. This document contains crucial information about installation, configuration, and daily processes necessary for effectively working on this project.

Usage

This project provides REST API services for the ITA challenges application and consists of five microservices:

  • Challenge. The challenge microservice is designed to manage and distribute information related to challenges within the project. For instance, it provides details such as title, level, creation date, solution, and other relevant information. This microservice communicates with various modules of the project through a set of endpoints.
  • Score. The score microservice is built to provide information related to the score analysis for a specific challenge solution provided in a determined language.
  • User. The user microservice is crafted to efficiently manage and deliver information stemming from user, challenge, and score interactions. For example, it facilitates access to user challenge solutions, bookmarks, and challenge statistics.
  • Auth. The auth microservice plays a pivotal role in ensuring the security and integrity of user interactions within the system. It is primarily responsible for validating user authentication tokens, thereby safeguarding access to sensitive resources and functionalities. By validating authentication tokens, this microservice verifies the identity of users and ensures that only authorized individuals can access the system's features and data.
  • Document. The document microservice serves as a unified gateway consolidating all documents from various endpoints within the system. Acting as a single entry point, it will be seamlessly redirected by the project's overarching API Gateway. Named itachallenge-document, this microservice is entrusted with aggregating all Swagger documentation from other microservices, ensuring comprehensive access and management of system documentation.

Each microservice exposes REST APIs to interact with it. To use any microservice, you can refer to the procedure section or start it from the App class in your IDE.

Installation

Required programs

It is important to make sure you have all these tools installed and configured correctly before you start working on the project.

  • MongoDB
  • Docker
  • Java SE Development Kit 17.0.7

See GUIDELINES.md to learn how to install and configure these tools.

The following programs are optional but recommended:

  • Mongo Tools
  • Mongo Shell
  • Consul
  • IntelliJ IDEA
  • Plugin SonarLint para IntelliJ IDEA

See GUIDELINES.md to learn how to install and configure these tools.

These are the libraries and frameworks used in the project, just in case you want to know more about them:

See GUIDELINES.md

Project links

Procedure

  1. Install the required software listed in the "Required programs" and "Project links" sections.

  2. Make sure you have Docker Desktop turned on.

  3. Import data into MongoDB. You can see how in the guidelines.

  4. Clone the repository:

git clone https://github.com/IT-Academy-BCN/ita-challenges-backend.git
  1. Navigate into the project directory:
cd ita-challenges-backend
  1. Install the dependencies:
  • If you use Windows cmd:
gradlew build
  • If you use Windows PowerShell, Linux, macOS, etc:
./gradlew build
  1. Run the microservice you want to start, for example 'itachallenge-challenge'.
    • If you use Windows cmd:
gradlew itachallenge-challenge:bootRun
  • If you use Windows PowerShell, Linux, macOS, etc:
./gradlew itachallenge-challenge:bootRun
  1. You can test the application in the browser at: http://localhost:8762/itachallenge/api/v1/challenge/test

  2. If you want to test the application in postman, you can import the environments and collections from the folder postman in the root of the project.

Newcomers

Git configuration

You can see git configuration in the guidelines

Daily working flow

You can see daily working flow in the guidelines

Work with cards Procedure

You can see how work with cards in the guidelines

Backend Sprint Backlog

Pull Requests

You can see the points to consider when doing a PR in the guidelines

Guidelines and Code Conventions

See GUIDELINES.md

FAQ's

  • Can I use any kind of AI as a help on this project? What is the best way to use AI?

    • You are totally allowed to use AI in this project.

    • The best way to use AI is first to understand the problem you want to solve, then to choose the best algorithm to solve it, and finally to implement it in the application. Please, remember to double-check the AI's results and to test it in different scenarios.

  • Is there any diagram of architecture, a technical description or similar?

    • Yes, you can find it in the Wiki
  • To contribute to this project, do I need make a fork?

    • No, you don't need to fork of the project, you need to clone it.

    • Our workflow is based on a single repository model, where we create separate branches for each feature. Once a feature is completed, we initiate a pull request to merge the changes back into the main branch.

    • You can find how to do a clone in point 4 of the Procedure section.

  • Do I need start up the project fully on my pc to start coding?

    • No, you don't need to start up the project fully on your pc to start coding. You can start coding in your IDE and run the App class in the microservice you are working on.
  • What should I do if I discover a bug?

    • If you discover a new bug, please create a new issue in the GitHub repository ita-challenges-backend repository describing the bug instead of trying to resolve it in another issue, and comment it to the product owner.
  • What are the coding standards for this project?

    • The coding standards for this project are defined in the GUIDELINES.md file in the root of the repository. Please read and follow them before contributing.
  • How can I get help if I have difficulty contributing or understanding the project?

    • Feel free to ask in the daily meetings or to your team if you find something hard to understand or if you encounter any other technical issues.
  • What programs do I need and how to proceed to set up the project?

Contributors

Thank you for participating in this project! Contributions are essential to expand and enhance the experience for all users.

You can access the link GUIDELINES.md to get detailed information on how to contribute. We look forward to your contributions! Don't forget that the project exists thanks to everyone who contributes!

Contact Information

Project manager: Jonatan Vicente (Discord: Jonatan Vicente#1211)


Contributor Covenant Contributor Covenant Contributor Covenant

License

  • License information: link