Roberto Dellantonio

Roberto Dellantonio

Full Stack Software Developer
Predazzo, Italia
Qualcosa su di me

As a recent graduate of the University of Trento with a degree in Information Engineering and Business Organization, I have gained a strong foundation in computer science and a passion for developing scalable, reliable and efficient solutions for complex software projects. In addition to my studies, I also completed a three-month internship in Barcelona at an e-commerce company, where I gained hands-on experience in web marketing and e-commerce development.
Since April 2023, I have been working as a Full Stack developer at Fleap, where I have been actively contributing to the development of simple and reliable software solutions for the company. In my career, I have had the opportunity to work with talented teams of developers and have developed a range of skills and expertise.
Some of my key achievements include:

  • 🚀 Successfully developed and launched an e-commerce platform for a family business

  • 📈 Contributed to the development of various software projects, consistently meeting project deadlines and exceeding quality standards

  • 💻 Demonstrated strong problem-solving and communication skills in a fast-paced, team-oriented environment

  • 🙍 Developed many personal projects with new technologies and published on my personal GitHub portfolio with an important documentation.

  • 📅 In the future, I am eager to continue learning and growing as a software engineer, and hope to take on more leadership roles and work on challenging and meaningful projects that make a positive impact.

The first version

The first version of MyPortfolio was not just a web application, but also a learning journey. It was a journey that started with curiosity and passion, and ended with knowledge and satisfaction. It was a journey that taught me new things and challenged me to grow as a developer. It was a journey that helped me to shape my vision and to create something that I am proud of.

The Motivation: Learning New Technologies and Improving My Skills

The main motivation for creating the first version of the project was to learn new technologies and to improve my skills as a developer. I wanted to create something that would allow me to learn and practice new things. I also wanted to create something that would be useful for other people.

When I first started working on this project, I didn't have a clear idea of what I wanted to create. I knew it was something about portfolios, but I didn't know exactly what it was going to be. At the beginning, the focus was on practicing with multimodule architecture and Spring Boot. I wanted to create a web application that would allow users to create their own profiles, write their own stories, and view other users' stories.

The Development: A Long and Complex Process

It took me a long time to develop the first version of the project. It was a complex and challenging process that involved many steps and phases. I had to design, code, test, debug, deploy, and document the project. I had to use different technologies and approaches for the backend and the frontend. I had to make many decisions and trade-offs along the way.

For the backend, I used Spring Boot as the framework to create RESTful APIs that handled requests from the frontend. I used a multimodule architecture to organize the project into three main modules: core, Sec Auth Conf, and Ui-Api. The core module contained the services, the transaction manager, the repositories, and other core components. The Sec Auth Conf module contained the security configuration, the security filters, the security utils, and the overall application configuration. The Ui-Api module contained the controllers, the DTOs, and the mappers. It was the module that exposed the REST APIs to the frontend. I wrote a very thorough documentation in the WIKI of the repository to explain the backend in more detail.

The frontend was developed in Angular instead of React because at the time I was more familiar with Angular. At the time I didn't know of the existing of Tailwind so I'd say that was one of the first frustrating part.

The project was hosted on two different platforms. The backend was hosted on Heroku and the frontend was hosted on Firebase.

The Challenges: Learning, Experimenting, and Solving Problems

One of the main challenges that I faced while developing the first version of the project was learning new technologies and approaches. I had to learn new things and to experiment with them. I had to understand how they worked and how to use them properly. I had to find solutions to problems that I didn't know how to solve. I had to make mistakes and learn from them. I had to ask for help and advice from other people. I had to be patient and persistent. I had to keep going even when I felt frustrated or discouraged. I had to keep learning and improving my skills as a developer.

To learn how to use new technologies and approaches, I followed online tutorials, courses, blogs, and documentation. I also looked at some examples and projects that used them. I tried to understand the concepts, the benefits, and the drawbacks of each one. I also experimented with them by creating small prototypes and testing them. I learned from my mistakes and improved my code quality and performance.

The Achievements: Understanding and Creating

I wouldn't say I had any achievements or successes while developing the first version of the project, but I would say that I had a lot of learning and a lot of fun. I enjoyed the process of discovering new possibilities and creating new solutions. I also gained more confidence and competence as a developer.

Probably the main achievement was understanding what I really wanted to create and starting to work on the second version of the project, which was even more complex and challenging than the first one. The second version of the project was a complete redesign and rewrite of the first one, using different technologies and approaches.

The Feedbacks: None

I didn't receive any feedbacks or reactions from other people about the first version of the project because I didn't share it with anyone. I was just using it to learn and practice new things. I didn't think it was ready or good enough to be shown to the world.

However, I realized that feedbacks are important and valuable for any developer who wants to improve their work and their skills. Feedbacks can help us to identify our strengths and weaknesses, to learn from our mistakes and successes, to get new ideas and perspectives, and to motivate us to keep working and growing. Feedbacks can also help us to connect with other people who share our interests and passions, and to create a community of learners and creators.

The Learnings: What to Do and What Not to Do

The main learnings or insights that I gained from developing the first version of the project were related to the technologies and approaches that I used. I learned how to use them and how to apply them in practice. I also learned what is worth spending time implementing and what is better to avoid using already existing solutions, which is probably the most important thing I learned.

I learned that sometimes it is better to use a simple and basic solution that works well than a complex and advanced solution that causes problems. I learned that sometimes it is better to use a ready-made and tested solution that saves time and effort than a custom-made and untested solution that wastes time and effort. I learned that sometimes it is better to use a proven and reliable solution that ensures quality and performance than a new and experimental solution that risks errors and failures.

I also learned that sometimes it is better to use a different and innovative solution that creates value and differentiation than a common and conventional solution that creates similarity and competition. I learned that sometimes it is better to use a flexible and adaptable solution that supports change and evolution than a rigid and fixed solution that prevents them. I learned that sometimes it is better to use a user-centered and user-friendly solution that meets the needs and expectations of the users than a developer-centered and developer-friendly solution that meets the needs and expectations of the developers.

I miei progetti
  • MyPortfolio
    • A clear introduction to what it represents
    • The first version

I implemented a useful feature in the Back-End system. When the Front-End requests data, like a user profile, I wanted the flexibility to specify what additional information to include—such as roles, projects, or stories. I introduced the concept of "VIEWS" to represent this idea. It's like telling the system how much detail I need. Now, when making a request, we can specify a specific view, which trigger the creation of a set of fetch options. Every fetch option specify a particular relation or data to fetch from the database and include in the response to the caller. Here's a snippet of the fetch handler for the user entity: