tz_logo

<- tamdaz.fr gets a makeover

Publié le 7 octobre 2025
thumbnail News (english)

Good news: tamdaz.fr turns into the new simple design and programming language. In this article, I will explain steps to you, that allowed me to migrate my portfolio to the new version.

Context

Originally, my portfolio website was working with the PHP programming language and the Laravel 11 framework. However, I noticed few problems and this for 3 reasons.

1) The project structure is more and more complex.

With new additions of features, I noticed there are more and more PHP files. After analysis, this project has about 300 PHP files (without counting the vendor/ and storage/ directories). From my perspective, this makes the project less maintainable over time and the project structure is less readable.

2) Some features are not necessary

For example, middlewares added by default for the related framework are not useful as part of my portfolio. Idem for the authentication system: it is too large for my purposes and I don't actually need that level of access management. These features, altough interesting in other projects, makes the architecture heavier without any interest.

3) Migration to another Laravel version is hard

Indeed, upgrade to another version of Laravel is the difficult task to do. However, Laravel Shift is a tool that doesn't match with my expectations because it is a paid service. On the other hand, I tend to keep the control on my code and limits the dependencies.

Nevertheless, Laravel stays a complete and powerful framewwork, with the useful features; but as part of my portfolio, these features are heavier for simple needs.

These reasons explain why I will no longer use Laravel for my portfolio. So, I decided to completely rework it and reorganize it into three parts.

Choice of languages and dependencies.

api.tamdaz.fr

For this first project, I would like to organize its architecture and the code itself to make sure this latter is understandable for me and for other developers who want to read and understand my manner to organize the code.

This API is resposible for processing my portfolio data, like blogs, categories, certifications, skills, reports, experiences, projects and articles from the technology watch.

I chose the Athena Framework, this is simply because it has simmilar approach to Symfony framework. In addition, annotations (which are specific to the Crystal language) make me push to develop this first project. The advantage is that metadata can be added configured easily thanks to the annotations.

If you are interested, you can check out the repo on Codeberg: https://codeberg.org/tamdaz/api.tamdaz.fr.

admin.tamdaz.fr

admin.tamdaz.fr is a web application that enables to administrate the portfolio website easily. This was written in TypeScript by preference with the React.js library; I'm the only one to administrate my portfolio. The admin panel will communicate to the API for managing the portfolio data.

https://cdn.tamdaz.fr/blogs/tamdazfr-fait-peau-neuve/dessous-ui-admin.png

Under the UI, system information (like the percentage of CPU used, number of available cores, the used memory by the API and the Crystal version) are used to monitor the server on which the portfolio is hosted.

By the way, this project is available on Codeberg if you want to explore the code: https://codeberg.org/tamdaz/admin.tamdaz.fr.

www.tamdaz.fr

After finalizing the administration panel, I've developed the showcase website to make it accessible for everyone. For that, I chose to stay on the Crystal language and use the Kemal micro-framework for managing the routes.

Kemal is small and adapted to projects that needs good performance, like generating web pages, RSS feed and sitemap, while maintaining a simple syntax. I integrated the Crinja template engine for generating HTML page and thus optimize the SEO for the most important pages.

The principal goal of this showcase website is to introduce my career path, skills, experiences and my projects in an organized manner and easily accessible to clients. Sticking Kemal and Crinja together allows to optimize the SSR (Server Side Rendering) and also to easily index the pages.

In addition of that, it is now possible to subscribe to the RSS feed so you can stay up to date with new articles.

https://cdn.tamdaz.fr/blogs/tamdazfr-fait-peau-neuve/nouveautes-rss.png

However, www.tamdaz.fr source code is closed. Nevertheless, you can be inspired by the design and visual organization of the site if you ever have the opportunity to create your own portfolio.

Finally, for this showcase website, I've decided to limit the number of JavaScript files because I want to ensure navigation and keep it functional, even if the client disable the JavaScript from their own browser.

Conclusion

The portfolio migration takes about 3 months and half for developing, testing and make the API, the admin panel and the showcase website operational (from May 2025 to September 2025). It's a type of organization that I appreciate and it has allowed me to organize the structure of each project in my own way.

Thanks

I want to thank George Dietrich (@Blacksmoke16) for his help and advice during the development of the portfolio API with the Athena framework and the components he has created.