english -
portuguese
This was a technical challenge for a job interview.
Aug 4th, 2022 ~ Aug 9th, 2022
Technical Challenge - Java Full Stack Developer
In this technical challenge, the development of a customer registration application was proposed, which would consume the Correios API to validate address data using the ZIP code. The fundamental requirement was the implementation of a frontend with Vue.js and a backend with Java, using containerized infrastructure with Docker.
The backend was developed using the Spring Boot framework in Java. For data storage, a relational database H2 was utilized. API communication was implemented with GraphQL, providing routes for customer and address registration and retrieval. Additionally, the option to develop unit test coverage for the backend was implemented to ensure greater reliability of the system. The backend was made available as a Docker image and Docker compose, allowing for easy configuration and execution of the environment.
The frontend was developed using Vue.js with Vuex / Pinia, ensuring a smooth and interactive user experience. The login, registration, candidate listing, and detailed viewing screens were designed for intuitive navigation. The system of sub-routes was adopted for better application organization. The choice to develop test coverage for the frontend provided increased security and reliability to the system. The frontend was also made available as a Docker image and Docker compose, simplifying the deployment and execution of the application.
In conclusion, the technical challenge of development as a Java Full Stack Developer provided the opportunity to create a customer registration application with integration to the Correios API for address validation. The project involved the use of modern technologies such as Vue.js and Spring Boot and was implemented with attention to usability and reliability details. The ability to make the application available in Docker environments facilitated the configuration and execution of the system. The learning acquired during this challenge reinforced the importance of seeking innovative and functional solutions, aligning with best practices in full-stack development. I believe that this experience can inspire other developers to continue exploring new opportunities to enhance the field of information technology and promote significant advancements in increasingly integrated and efficient solutions.
Prerequisites:
-
Features:
-
Authentication by login and password
-
List clients, register clients, delete clients, and view details
-
Validation of the client's address through OpenCEP
-
Backend:
-
Develop the backend in Spring Boot / Java
-
Utilize a relational database (I used H2)
-
Use Graphql for API communication
-
Provide API routes for customer and address registration and retrieval
-
Develop unit test coverage for the backend (optional)
-
Make the backend available as a Docker image and Docker compose
-
Frontend:
-
Create login, registration, customer listing, and viewing screens
-
Implement the sub-routes system
-
Develop test coverage for the frontend (optional)
-
Make the frontend available as a Docker image and Docker compose
- Run Docker
- Run and wait the containers up:
code/src/docker-compose up
-
Go to the link: http://localhost:4173/
-
App login:
- user: admin
- password: admin
-
The frontend end-to-end (e2e) tests were developed with Cypress.
- It is possible to run the tests to see the application in action.
- In the root directory of the frontend, run the following command:
$ npx cypress run
-
The backend runs on the link http://localhost:8080/
- You can run queries on the backend of the application at http://localhost:8080/graphiql?path=/graphql
- In the resources directory of the backend, you can find the queries used for this application.
-
The backend unit tests were developed with jUnit/Spring.
- In the root directory of the backend, run the following command:
$ mvn test