Hello, World — The New Site Is Live
A quick tour of the new juliangrande.com: what I built it with, why, and what's coming next.
After far too long running an outdated single-page CV, I finally rebuilt my personal site from scratch. Here’s a brief tour of what’s new and how it’s built.
The Stack
I chose Astro 5 as the framework because it’s purpose-built for content sites. It ships zero JavaScript by default, has first-class MDX support, and the Content Collections API gives me type-safe frontmatter schemas. Add Tailwind CSS v4 (now configured entirely in CSS — no tailwind.config.js needed), and the dev experience is genuinely enjoyable.
// A tiny taste of the blog schema
const blog = defineCollection({
type: 'content',
schema: z.object({
title: z.string(),
description: z.string(),
date: z.date(),
tags: z.array(z.string()),
draft: z.boolean().default(false),
}),
});
What’s on the Site
- Work timeline — a visual history of roles, education, and milestones
- Projects — a filterable grid of side projects and open-source work
- Blog — you’re looking at it
- About — a short bio and a “now” section for what I’m currently focused on
What’s Next
A few things I want to add:
- Newsletter — a lightweight email digest of new posts
- Dynamic OG images — generated per-post using Satori
- GitHub repo sync — automatically pull project metadata from the GitHub API at build time
For now, the fundamentals are solid. The Lighthouse score is sitting at 100/100 on performance, best practices, and SEO, which is a good place to start.
If you’re curious about the source, check it out on GitHub. Happy to answer questions — just reach out via the contact page.