The website soubiran.dev is my personal website and main domain. It serves as the entry point to my writings, projects, talks, and more.

This website is content-driven and built with VitePress and a custom fork of Nuxt UI. This setup streamlines development and makes it easy to create and manage content.
Note
A migration is scheduled to a standard Vite + Vue setup later in 2025.
The website is statically generated. The build process is automated with Cloudflare Builds and deployed to Cloudflare Workers.
At build time, the website fetches data from talks.soubiran.dev to display the list of talks I’ve given over the years. GitHub data is also fetched to populate the projects section with up-to-date information about my open source repositories.
The website accesses the API only on the client side to fetch dynamic data, such as comments, reactions, and more.
Videos are hosted on Cloudflare R2 using rclone to optimize performance and avoid bloating the Git repository with large files. All images are converted to WebP to reduce their size and improve loading times.
This last step is not part of the build process. It is done manually when new videos or images are added.
Note
Currently, Raycast is used to resize and convert images. In the future, images will be stored in R2 and processed on the fly using Cloudflare Images.
To reduce maintenance, keep a single source of truth, and focus on creating content, I’ve automated data fetching and the redeployment of both the website and the API whenever new content is available.