✱presque.cool
← Back to projects
presque.cool icon

presque.cool

Sep 2025 Site

Games, generators, contemplative experiences — a collection of personal projects made with curiosity and shared with intention.


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

Durée ~6 semaines
Période Sep 2025 → Sep 2026
Stack
Astro Preact Tailwind CSS TypeScript
Statut ✓ En production

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

Duration ~6 weeks
Period Sep 2025 → Sep 2026
Stack
Astro Preact Tailwind CSS TypeScript
Status ✓ In production

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.