Over the past few weeks, I built a number of websites, apps, and projects using what I now think of as a new way of working: Vibe Coding. Each project started as a clear idea, and was brought to life in a few evenings using mostly Antigravity and a sprinkle of Claude Code as accelerators. Most projects were built with Astro or React + Vite and deployed on GitHub Pages with custom domains — a stack I’ve now become very comfortable with.
A Note on Vibe Coding
All of these projects were built in heavily AI-assisted sessions. The AI handled the scaffolding, the boilerplate, and the tedious back-and-forth with config and types. I handled the design decisions, the content, and the ideas.
I quickly realized that 90% of a project gets done in 10% of the time — what truly takes effort is the refinement. Fortunately, it’s something I love doing, and it feels seamless now: working with AI agents is like pairing with a senior engineer who has infinite patience.
The Projects
📷 Photos Gallery — photos.pantoine.com

A personal photography gallery built as a digital exhibition for a slower viewing experience. The interface is minimal: a centered disclaimer appears first, suggesting a slower pace. Navigation is scroll or keyboard-based, and each photograph fills the screen.
The Technical Side
The main technical feature is the dynamic background color system. During the Astro build, the site fetches a small version of each image (400px) and runs it through node-vibrant to extract a primary color. The logic prioritizes the Vibrant swatch, falling back to DarkVibrant, Muted, or LightVibrant. This pre-computed color sets a subtle background for each photograph without runtime processing.
What’s Next
- A collection system is in the works, to group photographs by theme, trip, or mood.
- A new navigation pattern to move between photographs in a more expressive way.
🎞️ Pixel Looks — pixelooks.pantoine.com

A photographic look archive, built around the Pixel 11. Each entry is a look: a set of capture and grading settings that define a specific rendering, from a neon digital 90s feel to muted editorial monochrome or straight black-and-white. The site presents them as a numbered archive with a dark, protocol-like aesthetic.
It started life as a Fujifilm X-System film simulation archive. I still have the X-T5, but there are already plenty of Fuji recipe sites out there and I wasn’t adding anything to that. The Pixel looks are new and nobody is archiving them yet, so building the tool for those felt a lot more useful.
The Technical Side
Built around an Astro content collection for looks, with a dark, cinematic design system built in vanilla CSS. Each look card is dynamically generated from a typed Markdown file defining the base rendering, the adjustments, and a set of sample photographs. EXIF data is extracted at build time using exifr and displayed on each photo card within the look detail page.
It also features a full serverless community submission flow:
- Public
/submitpage — an anonymous form covering look parameters and photo uploads without requiring an account. - Client-side image compression — canvas-based resizing of large uploads down to 1–3MB at 85% quality.
- Cloudflare Worker — verifies Cloudflare Turnstile CAPTCHA and automatically opens a GitHub Pull Request with the Markdown and image assets.
- GitHub PR as admin panel — review and merge directly on GitHub to trigger CI/CD deployment.
What’s Next
- The community submission system is now live — anyone can submit a look without an account.
- Considering adding a comparison mode to show the same scene with different looks side by side.
🍽️ Antoine’s Kitchen — recipes.pantoine.com

A personal recipe website born from my background as a home cook with a cooking license. The recipes here are refined through repeated sessions and carry the kind of personal notes that never make it into a cookbook. Clean, structured, and grid-based — it’s the technical side of cooking made visible.
The Technical Side
The site uses Astro Content Collections with typed MDX frontmatter to structure every recipe. An embedded React Island handles interactive cooking timers. Styling uses Tailwind CSS with a custom light blue, CRT-style design system. AI handled schema wiring, component boilerplate, image generation, and CSS refactoring — the repetitive setup work that usually takes hours.
What’s Next
- The collection is small but growing. Many more recipes to document and share — this is just the foundation.
- Thinking about adding a lexicon page for culinary techniques.
- I would like to redo the design system from the ground up, to something more rounded, fancy, and warm. More in line with cooking actually.