Bilingual FR/EN blog in pure PHP: architecture without framework or database
How to add FR/EN bilingual support to a PHP blog with no CMS: .htaccess routing, hreflang tags, SVG flag language toggle, restructured posts.json — zero i18n library.
Lessons learned, problems and solutions
How to add FR/EN bilingual support to a PHP blog with no CMS: .htaccess routing, hreflang tags, SVG flag language toggle, restructured posts.json — zero i18n library.
Real-world SEO journey for CitoyenNote, a Vue.js 3 + Vite SPA: dynamic meta tags with @unhead/vue, Open Graph, Symfony sitemap, JSON-LD Schema.org. From shocking discovery to complete fix.
Key differences between Vue 2 and Vue 3 (Proxy reactivity, tree-shaking, TypeScript), and an honest comparison between Composition API and Options API — strengths, weaknesses, and when to choose which.
Why I chose PicoCSS for a Symfony project with a precise institutional design. Bootstrap overrides too much, Tailwind requires too much. PicoCSS gives you control.
PostgreSQL port conflict, Docker group permissions not taking effect, services not starting. Complete setup of a Symfony 7 + PostgreSQL + Redis stack on WSL2.
How to automatically calculate related articles from a JSON file in pure PHP — scoring by tags and category, zero dependencies, zero SQL queries.
Tracking visits on a PHP portfolio without Google Analytics, without cookies, without a database and without a GDPR banner. Anonymized IP, protected log file, custom dashboard — the security choices that make it legal.
How to force the browser to reload a JSON file after an update, without touching the server config or enabling mod_headers. One line of PHP is enough.
Adding pagination to a blog that loads articles from JSON via JS. Constraint: no hidden DOM elements, no framework. 30 lines is all it takes.
How to implement a comment system in pure PHP with JSON storage, honeypot anti-spam, rate limiting and CSRF — without any external dependency.