0% found this document useful (0 votes)
9 views2 pages

Full Stack Quarkus & React Assignment

The document outlines a home assignment requiring the development of a ToDo List application with CRUD REST APIs, authentication, and a build system using PostgreSQL and Java. Extra credit features include Docker, linting tools, unit testing, and performant code. The project must be delivered via a private GitHub repository with specific access requirements and clear instructions for running and testing the application.

Uploaded by

Redi Guleksi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views2 pages

Full Stack Quarkus & React Assignment

The document outlines a home assignment requiring the development of a ToDo List application with CRUD REST APIs, authentication, and a build system using PostgreSQL and Java. Extra credit features include Docker, linting tools, unit testing, and performant code. The project must be delivered via a private GitHub repository with specific access requirements and clear instructions for running and testing the application.

Uploaded by

Redi Guleksi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Home assignment

Please, read all sections within this document carefully.

Extra Credits are entirely up to you. They will give you the chance to shine within the selection process
but they are not required.

With the "Guidelines" section in mind, you should complete at least the following required features.

Desired features
● Develop a simple build system for your application

● Develop CRUD REST APIs to manage a ToDo List.

● Authenticate APIs. Choose the method you want to use, it could be also with a basic authentication with
a static API key in the header.

Technology stack
● PostgreSQL

● Java (eg. Quarkus or Spring Boot or what you prefer )

Guidelines
Use the technologies requested and, if you prefer, feel free to use a boilerplate.

All code produced should have modularity, reusability and performance in mind, while being well
documented.

At completion, you should have a build task to output a production-ready folder (e.g.: dist) with all your
work as well as the source code that generated it. This folder must not be committed and instructions to
produce it must be provided in order to let us run the application in production mode.

For what is not specified in this doc, it’s up to you to decide what’s best 💪
Extra credit
● Docker - docker-compose

● Use of linting tools

● Unit testing

● Performant code
● Consider adding a computed property, not stored on the DB, to your entity/entities.

Delivery
Create a private Git repository with the following format:

crispy_be_challenge_<first-name>-<last-name>

Github allows private repositories for free, you only need to grant us access to it afterwards.

Accounts that must have access to the project:

[Link]

[Link]

[Link]

Commit your work as you progress, we look at the commit history as well.

Key Requirements for Project Success


To ensure a smooth and successful project experience, it is important to adhere to the following
guidelines:

● Deliver the project exclusively through a private GitHub repository.

● Ensure all required features are fully implemented and functional.

● Include a build task that generates a production-ready folder e.g.: target) as output.

● Provide clear instructions on how to run the project.

● Include detailed instructions on how to test the APIs.

Common questions

Powered by AI

Linting tools and unit tests play a critical role in maintaining code quality and reliability. Linting checks for syntax errors, potential bugs, and style errors in the code, ensuring consistency and adherence to coding standards. Unit tests verify that individual components of the software are working as intended, helping identify and fix bugs early in the development process. Together, they contribute to a more robust, maintainable, and error-free final deliverable, providing confidence in the code quality and its proper functionality .

Providing detailed instructions for running and testing the project is significant because it facilitates the evaluation and use of the application by others. Clear documentation ensures that project reviewers can accurately assess the functionality and features of the application without confusion, reducing time spent on troubleshooting and setting up the environment. It also aids developers during maintenance and updates by providing a reference for operation and testing procedures. This aspect contributes to the project's professionalism and usability .

The essential components include developing a build system for the application, creating CRUD REST APIs to manage a ToDo List, and authenticating APIs using a method of choice, such as basic authentication with a static API key. The chosen technology stack must include PostgreSQL and Java-based frameworks like Quarkus or Spring Boot. The implementation should focus on modularity, reusability, and performance. Additionally, the project should be delivered via a private GitHub repository and include a build task to create a production-ready folder with clear instructions for running and testing the project .

Developers can gain extra credit by utilizing Docker and docker-compose, employing linting tools, conducting unit testing, ensuring the code is performant, and adding a computed property to entities that is not stored on the database. These enhancements are beneficial as they improve the overall quality, scalability, and maintainability of the application. Docker helps in containerizing the application, ensuring consistency across environments. Linting and unit testing improve code quality and reliability. Computed properties can enhance performance by reducing unnecessary storage, and overall, these extras demonstrate a thorough and considered approach to software development .

When choosing an authentication method for the APIs, considerations should include ease of implementation, security level, and suitability for the application's use case. While the guidelines are flexible, allowing for options like basic authentication with a static API key, more secure methods such as OAuth or JWT may be considered depending on the application’s requirements. The chosen method should balance between simplicity for initial setup and the necessary protection against unauthorized access, ensuring secure data transactions .

Modularity and reusability are emphasized to ensure that the codebase is organized, easier to maintain, and extendable. Modularity allows different parts of the program to function independently, making testing and debugging more efficient. Reusability maximizes efficiency by using components across different projects, reducing redundancy and development time. This focus results in increased productivity and a codebase that can adapt to changes with minimal disruption, facilitating future enhancements and scalability .

The project should be delivered exclusively through a private GitHub repository, following the naming format crispy_be_challenge_<first-name>-<last-name>. Crucial aspects include ensuring all required features are fully implemented and functional, a build task is included to generate a production-ready output folder (e.g., target), and clear instructions are provided for running and testing the project. Access must be granted to specific GitHub accounts listed in the guidelines to review the repository, and the commit history must reflect the project's progression .

Adding a computed property to entities enhances the application by reducing database load and storage requirements. Since it is computed on the fly rather than stored, it decreases the need for additional storage space and avoids data redundancy. This can improve performance, as less data is retrieved or updated in the database. It also allows for dynamic calculations that can be adjusted without altering the database schema, providing flexibility and agility in application functionality and responsiveness .

Including a build task is crucial as it automates the process of building the project into a production-ready state. This task ensures consistency and reliability, reduces manual errors, and streamlines deployment. Without this task, the project might face inconsistencies when transitioning from development to production, leading to potential runtime errors, deployment delays, and increased difficulty in troubleshooting. A lack of a build system can also compromise the project's scalability and maintainability, affecting long-term sustainability and quality .

The recommended technology stack for developing the CRUD REST APIs includes PostgreSQL for database management and Java frameworks such as Quarkus or Spring Boot. The advantage of PostgreSQL lies in its robustness, support for advanced data types, and powerful querying capabilities. Java frameworks like Quarkus offer low startup times and a developer-friendly environment, while Spring Boot provides speed and ease in setting up production-ready services with its extensive ecosystem. Both frameworks enable the creation of scalable and maintainable APIs while leveraging Java's strong community support and rich set of libraries .

You might also like