Portfolio
The applications I designed and built, then my articles, tutorials and talks, mostly for Upsun's developer blog.
Projects
9Meta-Upsun
Upsun's public source of truth: images, runtimes, regions and PHP extensions, served by a versioned API.
A public read-only API that centralises all of the platform's reference data and serves a dynamic validation schema for the Upsun configuration, used by code editors.
- REST API
- OpenAPI
- JSON Schema
- Scalar
- GitHub Actions
Upsun official PHP SDK
The open-source PHP client for the Upsun API: generated from the OpenAPI spec, with a handwritten developer-facing layer.
An open-source SDK covering the whole public Upsun API: low-level code generated from the OpenAPI spec and synced daily, plus a "Tasks" layer designed for developers.
- PHP 8.1+
- OpenAPI Generator
- Mustache
- PHPUnit
- GitHub Actions
Upsun official Node.js SDK
The TypeScript client for the Upsun API, completed and aligned with the PHP SDK.
An SDK born for the Upsun MCP server, with only the bare minimum of the API. I completed it, aligned it with the PHP SDK, and wrote a tool that detects signature divergences between the two.
- TypeScript
- Node.js
- OpenAPI Generator
- npm
- GitHub Actions
AI log-analysis agent
A scheduled, read-only AI agent that reads an application's logs and writes a health report.
An agent running in an Upsun task container, triggered by cron: it reads the logs, has an LLM analyse them through OpenCode, and produces a structured report, with no write access at all.
- Node.js 24
- OpenCode
- LLM (Anthropic, OpenAI, Gemini)
- Upsun task containers
- Cron
Blog publishing calendar
Scheduling the technical blog's posts by dragging and dropping their pull requests on a calendar.
A back office showing upcoming posts (GitHub pull requests) on a calendar: they are scheduled by drag and drop and go live on the planned date with no one on duty. Three weeks of visibility, and a blog opened to other teams.
- TypeScript
- Vite 7
- GitHub API
- Cron
VNTP Facturation
Simple, compliant invoicing for freelancers, e-invoicing included.
An invoicing SaaS for French micro-entrepreneurs and small companies: quotes, invoices, tax certificates, social-contribution and VAT tracking, and EN 16931 e-invoices issued through a certified platform.
- PHP 8.5
- Symfony 8
- Doctrine ORM 3
- PostgreSQL
- Symfony Messenger
VNTP Location
Rental management for landlords, furnished lets included, with a tenant space.
A rental management app: leases, rent and receipts, automatic rent review, charges and adjustments, AI reading of building service-charge calls, furnished-let tax summary and tenant space.
- PHP 8.5
- Symfony 8
- Doctrine ORM 3
- PostgreSQL
- Claude API
Pilat'1: the association's website and app
A Pilates association's public website, its back office and the coaches' mobile app.
Public website, registrations and online payment through HelloAsso, a back office for the board and an installable app for coaches: attendance, messages to students, notifications.
- PHP
- Symfony 8
- EasyAdmin 5
- Tailwind CSS
- PostgreSQL
vntp.fr: this website
A static site generated from a headless CMS, republished within seconds on every change.
My personal site, blog and portfolio: bilingual content in Directus, static pages generated by Astro, instant zero-downtime regeneration on every save.
- Astro
- Directus 11
- Node.js
- PostgreSQL
- Docker
Publications and talks
2026
9
Run an AI Log-Analysis Agent in an Upsun Task Container
Reuse the cron-triggers-a-task pattern to run an OpenCode AI agent inside an Upsun task container. The agent reads your cron and application logs, analyzes them, and writes a Markdown health report to the task logs and a temporary file.

Offload Heavy Jobs to Upsun Task Containers, Triggered by Cron
Move long, resource-hungry jobs out of your crons and into on-demand Upsun task containers. Learn how to define a task, authorize your app to trigger it, and fire it from a lightweight cron for database imports or search reindexing.

How to slash OpenCode Token costs by 90% on Upsun
Cut your OpenCode token usage by up to 90% on Upsun with three community plugins: OpenSlimedit, opencode-dcp, and opencode-snip. Step-by-step guide to install and configure them on your existing deployment, with benchmarks, troubleshooting, and best practices.

How to Host OpenCode on Upsun
Deploy an OpenCode AI coding agent on Upsun with a single git push. This tutorial covers configuration, persistent storage, LLM API keys, and remote MCP server integration.
Scale n8n with PostgreSQL and Redis on Upsun
Upgrade your n8n instance from SQLite to PostgreSQL and add Redis caching for better performance, scalability, and reliability. Step-by-step guide for Upsun.

How Meta-Upsun improved Validation Schema and Developer eXperience
The introduction of Meta-Upsun enabled dynamic validation schemas and version enumeration for Upsun services and runtimes, significantly improving developer experience.

Automating Runtime and Service Tracking with Meta Version Updater
Meta is Upsun’s shared reference layer for runtimes, services, regions, and extensions. Learn why we built it, how it works, and how it powers the next generation of Upsun documentation and tooling.

Centralising Upsun Technical References with Meta-Upsun
How Upsun centralised runtime, service, region, and PHP reference data into a single public API to improve consistency, automation, and documentation accuracy.

Announcing the Official Upsun Node.js SDK
Discover how the Upsun Node SDK simplifies API access and speeds up integrations, with clear documentation and modern tooling.
2025
13
PHP 8.5 is here!
What if the next PHP revolution made no noise but completely transformed your developer daily life?

Introducing the Upsun PHP SDK
Discover how the Upsun PHP SDK simplifies API access and speeds up integrations, with clear documentation and modern tooling.

Auto-scaling on Upsun Flex. A deep dive.
Learn how Upsun's autoscaling dynamically adjusts application instances based on CPU usage, ensuring performance during traffic spikes while optimizing costs.

Composer 1 is dead – Upgrade to Composer 2 now
Composer 1 has reached end of life and is no longer available on Upsun and Platform.sh. Learn why it’s no longer possible to rely on Composer 1, what errors you’ll see, and how to safely upgrade your project to Composer 2.

How n8n saved our Advocacy impact on Social Media!
Learn how n8n workflows improve internal communication and amplify our Advocacy social media impact.

NoCode with Upsun: Supercharge Your Automation with Zero Code
Learn how to leverage Upsun to deploy powerful NoCode tools like n8n for workflow automation. Fast setup, secure hosting, and real-world use cases — all without writing code.

Supercharge your workflow with the Upsun VSCode Extension
If you're working on Upsun projects with VSCode, the **Upsun VSCode extension** is an essential tool to enhance your development experience. Learn more...

Making .upsun/config.yaml easier to edit with IDE autocomplete and validation
Boost your productivity and eliminate configuration errors with real-time autocompletion and validation for your .upsun/config.yaml — discover how to enhance your IDE experience in just a few simple steps!

Deploy ClamAV on Upsun, on service mode.
Learn how to deploy ClamAV service on Upsun. This tutorial covers ClamAV integration on service scan mode.

Up(sun) and ready with GitHub release assets installation
Discover how to install any GitHub release asset you want in your Upsun project.

Decouple your Symfony frontend using Next.js
How to decouple your frontend from your backend, using a Symfony project as backend and adding a Next.js application for frontend.

Upsun and Platform.sh Docs are now llms.txt compatible!
We’re thrilled to announce that both [Upsun Documentation](https://docs.upsun.com) and [Platform.sh Documentation](https://docs.platform.sh) are now fully compatible with [llms.txt proposed standard](https://llmstxt.org/)!

Up(sun) and ready with Pandoc
With the recent growth in enthusiasm for AI assistants, you may be looking for how these assistants can provide technical information about your product.
2024
13Flawless collaboration between front and back developers
Live coding with Augustin Delaporte: a Next.js frontend and a Symfony API in 30 minutes, with real-time code review, infrastructure as code and preview environments.

Import multiple RSS Feeds on your Blackfire timeline + extra interfaces
We saw in the [previous episode](/posts/how-tos/blackfire-google-alert-markers) how to automatically add context on your Blackfire timeline from an RSS Feed (Google Alert),

Add context on your Blackfire timeline from a Google Alerts RSS Feed
Observing your application is essential to be able to find what needs (and what does not need) to be optimized.

How to automate load tests with Gatling
When I was on your side of the keyboard, developing cool and funny applications (more or less :D), load tests were (most of the time) executed a few days before going live.

How to spot Upsun infrastructure processes on Blackfire timeline
Learn how to spot markers on Blackfire for all infrastructure processes of your Upsun project with this step-by-step guide.

How to host a multiple-application project on Platform.sh
Learn how to host and configure multiple-application projects on Platform.sh with this step-by-step guide.

Seamless user experience during Upsun deployment
As speed is critical to success, it’s essential to deploy as often as needed, even on Fridays. How to warn your users with a banner when an Upsun infrastructure event (deployment, maintenance) occurs.

How to use FrankenPHP on your Upsun projects
Learn how to use and configure the built-in FrankenPHP image on Upsun with this step-by-step guide.

How to sanitize environment data
Dive into the 5 methods of data sanitization for your preview environments including using environment inheritance, hooks, secure keys, and more.

Optimize resource allocation and services for Express apps
Learn how to optimize your Express application resource allocation and cloud database services on Upsun.

How to host a Symfony Demo application on Upsun
Learn how to use and configure a Symfony Demo project on Upsun with this step-by-step guide.

How to host multiple-application projects
Learn how to host and configure multiple application projects on Upsun with this step-by-step guide.
Getting started with Express on the Upsun PaaS
Follow the steps in this getting started guide to learn how to host your Express projects on the Upsun PaaS as quickly as possible.
2023
2Getting started with Next.js on the Upsun PaaS
Follow the steps in this getting started guide to learn how to host your Next.js projects on the Upsun PaaS as quickly as possible.
Refactoring monolith to multi-app
Stop forking around! How to refactor a monolith to better fit your needs: the Bigfoot Symfony demo, split into several applications.