Théo Attali
Symfony and PHP developer
I write the code I wish I had found: open source Symfony bundles used by other developers, and sites in production built for the people who visit them.
1,971,580
Monthly installs of all packages together, from March 2019 to October 2026; the highest, 68,653, was in October 2026.
Installs month by month
The table scrolls sideways.
| Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2019 | 49 | 425 | 682 | 891 | 730 | 931 | 837 | 835 | 1,245 | 1,263 | ||
| 2020 | 1,802 | 1,701 | 1,662 | 1,530 | 1,524 | 1,975 | 1,955 | 1,509 | 2,168 | 2,053 | 2,395 | 2,398 |
| 2021 | 3,437 | 3,902 | 5,319 | 4,967 | 5,925 | 7,016 | 5,665 | 5,093 | 6,052 | 7,111 | 7,136 | 6,776 |
| 2022 | 7,585 | 7,216 | 8,610 | 7,855 | 10,995 | 11,979 | 10,475 | 11,709 | 15,027 | 15,625 | 16,398 | 16,151 |
| 2023 | 19,371 | 20,123 | 22,994 | 23,148 | 24,371 | 25,570 | 26,162 | 28,917 | 26,779 | 29,861 | 32,127 | 26,033 |
| 2024 | 32,100 | 32,199 | 32,619 | 34,535 | 32,322 | 31,705 | 37,282 | 31,671 | 34,902 | 36,659 | 34,880 | 34,661 |
| 2025 | 42,908 | 43,296 | 43,720 | 41,004 | 37,534 | 38,435 | 47,004 | 38,632 | 42,624 | 47,635 | 43,205 | 40,279 |
| 2026 | 43,468 | 46,170 | 53,440 | 48,812 | 43,922 | 51,224 | 52,050 | 47,167 | 60,199 | 68,653 |
Open source
Symfony bundles and PHP libraries, most of them on Packagist, and an old macOS plugin. The figures come from Packagist and GitHub and are collected again once they are a day old.
-
CalendarBundle
Brings the FullCalendar.js calendar to Symfony. Events come from a Symfony event subscriber: from Doctrine, or from an API such as Google Calendar.
635,303
installs
Last 36 complete months; 16,366 installs in the last 30 days. 170 GitHub stars.
-
MobileDetectBundle
Detects phones and tablets, serves the matching view and redirects to a mobile or tablet version of the site. Continues the bundle by Nikolay Ivlev (suncat2000).
1,319,733
installs
Last 36 complete months; 47,227 installs in the last 30 days. 38 GitHub stars.
-
UtmCookieBundle
Saves the UTM parameters of the URL in a cookie, and provides ways to read them back, all at once or one by one.
16,489
installs
Last 36 complete months; 39 installs in the last 30 days.
-
PresignedUrl
S3-style presigned URLs for any storage: HMAC signatures, range requests, conditional caching, no dependencies.
55
installs
Last 10 complete months; 24 installs in the last 30 days.
Also on GitHub
-
DeviceViewBundle
not on Packagist yet
The successor to MobileDetectBundle: serves the mobile, tablet or desktop view with any detection library, lets visitors switch views and remembers their choice. Work in progress.
-
QLAddict
archived, 165 GitHub stars
A macOS Quick Look plugin that previews .srt subtitles. Archived: recent macOS versions no longer load this kind of plugin.
Collected on 2 November 2026 at 02:10 (Paris time).
In production
Sites I have built that are in production, each on the stack that suits it: this one on Symfony, the others on React, Rust or Cloudflare Workers. Their status comes from an HTTP request sent by this server.
-
calcul-brut-en-net.fr
A gross-to-net salary calculator for France: employer cost, contributions, net pay before and after income tax, computed with the mon-entreprise engine (Urssaf). In French.
React, TypeScript, Vite, Tailwind CSS, Node server
Online HTTP 200 in 121 ms, 2 Nov 2026, 11:13
-
feed-news.com
Developer News: the developer internet gathered in one place, ranked by relevance and freshness, with Atom and JSON feeds.
Rust API (Axum), Next.js front end
Online HTTP 200 in 117 ms, 2 Nov 2026, 11:13
-
lozoki.com
A party quiz in French, with no account and no ads. Everyone plays on their phone, with an optional TV screen, up to 20 players.
React, Cloudflare Workers, Durable Objects, D1
Online HTTP 200 in 222 ms, 2 Nov 2026, 11:13
-
memoluz.com
Four memory games to play with friends, each on their own phone, or solo. Up to 12 players, no account, no ads, in English, French and Spanish.
React, Cloudflare Workers, Durable Objects
Online HTTP 200 in 145 ms, 2 Nov 2026, 11:13
Under the hood
This site is the first exhibit: Symfony 8.1.10 and PHP 8.5.12 on FrankenPHP, no database, no cookies, and your browser loads nothing from another site.
- Static analysis
- PHPStan, level max
- Strict and deprecation rules, no list of ignored errors.
- Tests
- 402 tests
- 2,271 assertions; unit and functional tests, counted on 24 October 2026.
- Mutation score
- 99%
- Infection: 1,365 of 1,378 mutants killed, against a required minimum of 99%, measured on 24 October 2026.
- Lighthouse
- 100 / 100 / 100 / 100
- Performance, accessibility, best practices and SEO, on phone and desktop: the lowest of the medians of 5 runs on 4 pages, on 24 October 2026.
- Accessibility
- no axe violations
- WCAG 2.2 AA, light and dark themes, on phone and desktop, measured on 24 October 2026.
- Weight of this page
- 75 KB
- Transferred in 4 requests, fonts included, measured on 24 October 2026.
Version online: commit d2e4ae9, built on 1 November 2026.