Go back

The portfolio I wish I'd built sooner

The previous version was started in 2023, at a time when I felt like I was finally writing readable code and creating clean designs. Over the past three years, my projects evolved, my design skills improved, and my portfolio no longer reflected who I really was.

This new version is a major refresh with a codebase rebuilt from scratch, using modern tools I'm already comfortable with, designed to properly showcase the visual side of my recent projects.

Built-in blog

#

One of the most important additions in this version is the ability to write articles about my projects, with much more depth than simply sharing a README link of a GitHub repo.

Articles can be translated into multiple languages, come with a better presentation (download links for apps, publication date and custom details, table of contents), and can be written even for projects that aren't available on GitHub.

eScive: next level controls for your electric scooter

Aug 17, 2025

The eScive app is now available! It offers a better experience for users of electric scooters from certain brands with Bluetooth capabilities. It replaces official apps by offering more features in a better interface, with no tracking and no ads.

Read the full article →

A few details

#

Human / Machine switch

#

This site has an alternative mode that can be activated via a small button in the sidebar on the home page. When enabled, the entire layout switches to a different format: monospace font, dark theme, decorative elements removed.

All non-essential details are stripped away to keep only what really matters, offering a quick summary of the site. It's also a direct reference to the "Open in..." feature, which lets you ask an AI for a summary.

AI integration

#

Generative AI is increasingly present in our lives, and while some platforms push it too aggressively, it can still be genuinely helpful in certain cases (this post was mainly translated from French to English with Claude tbh).

With that in mind, this new portfolio includes an llms.txt file that summarizes every key point from the home page, optimized for LLMs.

It also includes an "Open in..." button that lets you ask questions about the page you're currently viewing to ChatGPT, Claude, or Grok.

To return to the previous point, the "Human / Machine switch" is kind of a visual representation of these two features.

Haptic and audio feedback

#

Every interaction on this site triggers feedback: a vibration on phones and a small sound on other devices. Another little detail you might not have noticed at first, but now you know, so turn up the volume (or grab an iPhone for even more immersion) and take another look at the home page.

Development

#

Obsidian as a CMS

#

All the articles on this site are written in Obsidian and synced with the portfolio's GitHub repository via my own plugin, Obsidian GitPush. No dashboard, no database, just Markdown files read when building the server and converted into JSON and HTML files.

I also had to write a custom parser, based on the one I wrote for MarkDocs, which converts Markdown files into HTML files supporting Obsidian-specific features (internal links, tables, ...) as well as additional ones I chose to implement on top.

The various redirects the site supports are also managed in Obsidian via the third-party Sheet Plus plugin, and handled by the same parser.

Multilingual

#

The site is fully available in both French and English. The need for translation grew naturally over time from my desire to reach an international audience while still serving my French-speaking community.

The language used is determined by your browser's settings, and a fallback is available for posts that are not available in your language. You can use these links to view this article in French or in English.

Homemade framework

#

The site is developed with roc-framework, a project I created to make building my own sites easier. It handles server-side rendering (SSR), reusable components, Tailwind CSS, and most importantly, a dynamic routing system that lets me add routes at runtime (while the server is already running) that can return different responses depending on the context.

You can learn more about the project on its GitHub repository (exclusively in French; I'm not even looking for an audience, this project will probably remain only used by me).

Open Source

#

Unlike previous versions, I'm finally publishing the entire source code on GitHub: the portfolio itself, the framework it uses, and the Obsidian GitPush plugin. The latest commit from the main repository is even displayed in the footer with a direct link to it, a small detail that adds a nice touch of transparency.