Rebuilding ignaciogiri.com
- Published date
- AI-written
- 90%
- Reading time
- 3 mins
This is the nth rebuild of this site. I lost count somewhere around 2018. Every couple of years the tools change, my taste shifts, and the old version starts feeling like a costume I outgrew. So I open a new repo and start over.
This time the stack settled on Next.js 16 with the App Router, Sanity for content, Tailwind v4 for styling, and Lenis for smooth scrolling. The animation work splits between Motion and GSAP depending on what feels right for the piece. Video runs through Mux. Everything deploys on Vercel.
Why rebuild again
The honest answer is that designing my own site is how I think. It is the one project where I am the client, the designer, the engineer, and the audience. The constraints disappear, which is both the appeal and the trap. Without a deadline or a stakeholder, the site becomes a sandbox for ideas I want to keep nearby: animated frames, a writing space, a place to point clients to.
The practical answer is that the old version was a Webflow project that had grown past what the tool wanted to do. Animations were fragile. Adding a new section meant duplicating CMS items. The day I caught myself writing custom code inside an embed block was the day I knew it was time.
Sanity over everything else
I tried a few headless CMS options before landing on Sanity. The thing that won me over is the Studio. Being able to customize the editing experience, write GROQ queries that read like English, and version content as drafts makes day-to-day publishing feel like a tool a designer would use rather than a database with a form on top.
The schemas for this site are small but specific. Posts, pins, projects, clients, albums. Each has its own structure rather than a generic page builder. I kept it that way on purpose. Generic builders are how sites become slow and inconsistent. Specific schemas are how they stay coherent.
Small details that took longer than they should
The animated frames in the home page are a system, not one-offs. Each frame is a registered component that gets composed into the page. It started as a way to avoid hardcoding decorative elements and grew into something I now reach for whenever I want a moment of motion.
Lenis scroll plus a scroll-to-top trigger took an afternoon. Getting the Sanity image schema to preserve EXIF data took longer than it should have. The image options now keep every byte of metadata the camera wrote, because losing the GPS and lens data on a photography page felt wrong.
The prose stylesheet went through three rewrites before I stopped fighting it. Long-form reading wants different defaults than marketing copy. The current version leans on generous line-height and conservative widths.
What is next
More writing here. Less perfection, more frequency. The point of having a place to write is to actually write, not to keep polishing the frame around an empty page.