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 → Jan 2026
Stack
Astro Alpine.js 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.


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.

Alpine.js pour l’interactivité : Les filtres, le thème, la navigation — tout ce qui nécessite de l’interactivité côté client est géré par Alpine.js, léger et pragmatique.

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.

View Transitions API : Transitions fluides entre les pages, natives au navigateur, sans JavaScript lourd.


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
  • Alpine.js + plugins — Interactivité côté client (persist, collapse, focus)
  • Tailwind CSS — Configuration CSS-first, classes utilitaires
  • TypeScript — Typage strict
  • Zod — Validation du frontmatter des projets
  • Compression — Brotli + Gzip sur les assets
  • CSP — Content-Security-Policy avec hashes auto-générés

Évolutions

DateVersionDescription
Sep 20251.0Prototype Alpine.js — Projets en modales, filtres basiques
Jan 20262.0Migration Astro — Pages dédiées, Content Collections, View Transitions

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 Astro + Alpine.js — 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 → Jan 2026
Stack
Astro Alpine.js 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.


Technical architecture

Astro for static: Pages are statically generated (SSG). Excellent for SEO and performance — no client-side JavaScript for main content.

Alpine.js for interactivity: Filters, theme, navigation — everything that requires client-side interactivity is handled by Alpine.js, lightweight and pragmatic.

Content Collections: Projects are defined in Markdown with a Zod schema to validate frontmatter. Bilingual descriptions (French/English) in the same file.

View Transitions API: Smooth transitions between pages, native to the browser, without heavy JavaScript.


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
  • Alpine.js + plugins — Client-side interactivity (persist, collapse, focus)
  • Tailwind CSS — CSS-first configuration, utility classes
  • TypeScript — Strict typing
  • Zod — Project frontmatter validation
  • Compression — Brotli + Gzip on assets
  • CSP — Content-Security-Policy with auto-generated hashes

Timeline

DateVersionDescription
Sep 20251.0Alpine.js prototype — Projects in modals, basic filters
Jan 20262.0Astro migration — Dedicated pages, Content Collections, View Transitions

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 Astro + Alpine.js choice — 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.

Settings

Language
Theme
Privacy Policy