Web Application
AlertJO.fr
Tracking of naturalization decrees in the Journal Officiel: automatic PDF extraction, REZE number search and an email alert when a decree appears.

- Type
- Web Application
- Website
- alertjo.fr
- Stack
- Next.jsTypeScriptDrizzle ORMPostgreSQLPlaywrightStripeDocker
87/100
Lighthouse performance, mobile
100/100
Lighthouse performance, desktop
100/100
Accessibility, best practices, SEO
1,305
automated tests, none failing
Lighthouse 13.5 measures on the /fr page, one run per profile, and a run of the test suite, on 16 October 2026.
About this project
AlertJO tracks the naturalization decrees published in the Journal Officiel. A parser extracts the naturalized people from the PDFs, decree retrieval from Légifrance is automated every day, and users search their REZE number for free or activate a paid email alert as a one-time payment. The site also offers public statistics by department and country, a bilingual blog and a role-based dashboard (users, admins, partners with promo codes). Payments go through Stripe and invoices through Abby.
What I delivered
- Parser that extracts the naturalized people from the Journal Officiel PDFs
- Automated daily decree retrieval from Légifrance (Playwright), checking DILA open data first
- REZE number search and email alerts when a decree appears
- Stripe payments and Abby invoice generation
- Role-based dashboard: users, admins, partners and promo codes
- GitHub Actions CI, Docker images and deployment on Dokploy
My role
I designed, built and shipped AlertJO, from decree ingestion to payments, including hosting.
AlertJO.fr project context
Naturalization applicants need to know whether their decree has been published in the Journal Officiel, which comes as PDFs. AlertJO checks their REZE number and emails them the day it appears.
Solution
A Next.js/TypeScript application on PostgreSQL (Drizzle): a parser for the Journal Officiel PDFs, daily decree retrieval with Playwright, REZE number search, a paid email alert (Stripe, Abby invoices) and a role-based dashboard.
Outcome
An online service: free REZE number search, a one-time-payment email alert, public statistics by department and country, and a 1,643-URL sitemap.
Technical challenge
Cloudflare blocks datacenter browsers on Légifrance. The scraper first checks DILA open data and only opens Chrome when a decree is new. It runs in a dedicated container with real Chrome on a virtual display.
Key features
- Free REZE number search, paid email alert as a one-time payment
- French and English site, language chosen by URL or cookie
- Information pages: naturalization delays, glossary, FAQ, pricing, search by name, latest and next decree
- Public statistics by department and country, computed from the decrees
- Bilingual blog with AI-moderated comments
- Email or Google sign-in, promo codes with partner statistics

