Le pitch
presque.cool est un site portfolio présentant une collection de jeux, applications et prototypes créatifs. Filtrage par type, catégorie, technologie et tags. Pages de projets avec case studies bilingues. Thème clair/sombre.
Visiter : presque.cool
Pourquoi ce projet
En 2025, je me suis lancé un défi : terminer des petits projets ou des prototypes en souffrance sur mes disques durs depuis des années.
En 2026, nouveau défi : publier et montrer ces projets. Les faire dialoguer les uns avec les autres pour révéler ce qu’ils ont en commun — des styles, des thématiques, des objectifs récurrents. C’est révélateur de mes obsessions : la génération procédurale, les générateurs d’avatars, les outils pour rôlistes, les expériences contemplatives.
presque.cool est le lieu qui rassemble tout ça.
Évolution du projet
Version 1 — Alpine.js (septembre 2025) : Première version avec les projets présentés en modales. Fonctionnel, mais pas idéal pour le SEO — les modales ne sont pas indexables.
Version 2 — Astro (janvier 2026) : Migration vers des pages dédiées pour chaque projet. C’était l’occasion d’apprendre Astro, un framework que je voulais explorer.
Version 3 — Preact (mars 2026) : L’interactivité quitte Alpine.js pour des îlots Preact, avec Zustand pour l’état.
Architecture technique
Astro pour le statique : Les pages sont générées statiquement (SSG). Excellent pour le SEO et la performance — pas de JavaScript côté client pour le contenu principal.
Preact pour l’interactivité : Les filtres, le thème, la navigation : tout ce qui demande de l’interactivité côté client passe par des îlots Preact. Zustand garde l’état partagé.
Content Collections : Les projets sont définis en Markdown avec un schéma Zod pour valider le frontmatter. Descriptions bilingues (français/anglais) dans le même fichier.
Le défi principal
Ce n’était pas un défi technique.
Le plus frustrant : décider comment présenter ces projets. Trouver le bon ton pour les case studies — ni trop technique (un README froid), ni trop générique (un pitch marketing vide). Décider quels projets inclure et lesquels laisser de côté — tous ne sont pas encore présentés. Savoir quand s’arrêter de peaufiner.
Le code était le plus simple. Les décisions éditoriales, beaucoup moins.
Stack technique
- Astro — Génération statique (SSG), Content Collections
- Preact : îlots interactifs pour les filtres, thème, navigation
- Zustand : état partagé entre les îlots
- Tailwind CSS — Configuration CSS-first, classes utilitaires
- TypeScript — Typage strict
- Zod — Validation du frontmatter des projets
- CSP — Content-Security-Policy avec hashes auto-générés
Évolutions
| Date | Version | Description |
|---|---|---|
| Sep 2025 | 1.0 | Prototype Alpine.js — Projets en modales, filtres basiques |
| Jan 2026 | 2.0 | Migration Astro — Pages dédiées, Content Collections, View Transitions |
| Mars 2026 | 3.0 | Migration Preact : îlots Preact et Zustand à la place d’Alpine.js |
Bilan
Ce que j’ai appris :
- Qu’il faut lâcher prise. Un portfolio ne sera jamais “parfait” — à un moment, il faut publier.
- Que les décisions éditoriales (ton, sélection, mise en valeur) sont un travail à part entière, distinct du développement.
Ce que je referais pareil :
- Le choix d’Astro : léger, performant, pragmatique
- Les case studies intégrés directement dans les pages projets
Ce que je changerais :
- C’est un portfolio : il évolue avec les projets qu’il présente. Ce qui est publié aujourd’hui sera différent dans six mois — et c’est normal.
The pitch
presque.cool is a portfolio site showcasing a collection of creative games, applications and prototypes. Filtering by type, category, technology and tags. Project pages with bilingual case studies. Light/dark theme.
Visit: presque.cool
Why this project
In 2025, I set myself a challenge: finish small projects or prototypes that had been languishing on my hard drives for years.
In 2026, new challenge: publish and show these projects. Make them dialogue with each other to reveal what they have in common — recurring styles, themes, goals. It reveals my obsessions: procedural generation, avatar generators, tools for role-players, contemplative experiences.
presque.cool is the place that brings all of this together.
Project evolution
Version 1 — Alpine.js (September 2025): First version with projects presented in modals. Functional, but not ideal for SEO — modals are not indexable.
Version 2 — Astro (January 2026): Migration to dedicated pages for each project. It was an opportunity to learn Astro, a framework I wanted to explore.
Version 3 — Preact (March 2026): Interactivity moves from Alpine.js to Preact islands, with Zustand for state.
Technical architecture
Astro for static: Pages are statically generated (SSG). Excellent for SEO and performance — no client-side JavaScript for main content.
Preact for interactivity: Filters, theme, navigation: everything that needs client-side interactivity runs in Preact islands. Zustand holds the shared state.
Content Collections: Projects are defined in Markdown with a Zod schema to validate frontmatter. Bilingual descriptions (French/English) in the same file.
The main challenge
It wasn’t a technical challenge.
The most frustrating: deciding how to present these projects. Finding the right tone for the case studies — neither too technical (a cold README), nor too generic (an empty marketing pitch). Deciding which projects to include and which to leave out — not all are presented yet. Knowing when to stop polishing.
The code was the easy part. Editorial decisions, much less so.
Tech stack
- Astro — Static generation (SSG), Content Collections
- Preact: interactive islands for filters, theme, navigation
- Zustand: state shared between islands
- Tailwind CSS — CSS-first configuration, utility classes
- TypeScript — Strict typing
- Zod — Project frontmatter validation
- CSP — Content-Security-Policy with auto-generated hashes
Timeline
| Date | Version | Description |
|---|---|---|
| Sep 2025 | 1.0 | Alpine.js prototype — Projects in modals, basic filters |
| Jan 2026 | 2.0 | Astro migration — Dedicated pages, Content Collections, View Transitions |
| Mar 2026 | 3.0 | Preact migration: Preact islands and Zustand replace Alpine.js |
Takeaways
What I learned:
- That you have to let go. A portfolio will never be “perfect” — at some point, you have to publish.
- That editorial decisions (tone, selection, presentation) are work in their own right, distinct from development.
What I’d do the same:
- The choice of Astro: lightweight, performant, pragmatic
- Case studies integrated directly into project pages
What I’d change:
- It’s a portfolio: it evolves with the projects it presents. What’s published today will be different in six months — and that’s fine.