Here I am:

My name is Vikas Tandon and I have around 13 years of experience in the software industry. Currently, I am working as a Technical Manager. Although I have not used Spring Boot for around 1 year, I have prior experience with it.

I approached this technical assignment by starting with [fixing the issue in basic CRUD operation] (#1). This was crucial in ensuring that the core functionality of the system was working correctly.

I then utilized [DTO (Data Transfer Object) to communicate between the Controller and Service layers] (#3), allowing for clear and efficient communication between the different layers.

I also added [exception handling and returned appropriate HTTP status codes] (#5), to handle any errors or exceptions in a meaningful way and provide clear feedback to the user.

Next, I [upgraded the Spring Boot and Java version] (#7) to ensure that the system was using the latest and most secure version, which also provides better performance and bug fixes.

I also [protected the controller endpoints] (#9) to secure the system against unauthorized access and ensure data privacy.

Then, I [added caching logic for database calls] (#11) to optimize performance and reduce response times.

Lastly, I added [Swagger configuration for API documentation] (#13), which is essential for clear and concise documentation and effective communication and collaboration with team members and stakeholders.

Added logging(#16)

I am working on these open issues (#18, #17, and #15). Implementing unit tests, containerizing the app, and profiling for the development and production environments are important steps in ensuring the reliability, performance, and maintainability of the system.

The link, https://github.com/GitPointer/java-challenge/pulse/monthly, should provide a summary of the situation regarding the technical assignment.


How to use this spring-boot project

  • Install packages with mvn package
  • Run mvn spring-boot:run for starting the application (or use your IDE)

Application (with the embedded H2 database) is ready to be used ! You can access the url below for testing it :

Don't forget to set the JDBC URL value as jdbc:h2:mem:testdb for H2 UI.

Instructions

  • download the zip file of this project

  • create a repository in your own github named 'java-challenge'

  • clone your repository in a folder on your machine

  • extract the zip file in this folder

  • commit and push

  • Enhance the code in any ways you can see, you are free! Some possibilities:

    • Add tests
    • Change syntax
    • Protect controller end points
    • Add caching logic for database calls
    • Improve doc and comments
    • Fix any bug you might find
  • Edit readme.md and add any comments. It can be about what you did, what you would have done if you had more time, etc.

  • Send us the link of your repository.

Restrictions

  • use java 8

What we will look for

  • Readability of your code
  • Documentation
  • Comments in your code
  • Appropriate usage of spring boot
  • Appropriate usage of packages
  • Is the application running as expected
  • No performance issues

Your experience in Java

Please let us know more about your Java experience in a few sentences. For example:

  • I have 3 years experience in Java and I started to use Spring Boot from last year
  • I'm a beginner and just recently learned Spring Boot
  • I know Spring Boot very well and have been using it for many years