
5 min read
Before this rebuild, derekleeds.com was a LittleLink-style page with my photo and a stack of buttons. It pointed to my resume, blog, guides, email, reading list, and social profiles. It also had a Venmo button, because apparently that seemed useful when I first built it.
The page did its job, but the job had changed.
I now have separate sites for my resume, technical writing, guides, and Leeds Web Services. A list of buttons could send people to those places, but it did not explain how they fit together or give the main domain much identity of its own. After rebuilding several of the related sites with Astro, I decided to make derekleeds.com the front door to the whole collection.
Deciding what the homepage should do
My resume site already covers my career in detail. Learn holds project notes and longer writing. Guides is for practical documentation, and Leeds Web Services describes my web development and WebOps work.
Duplicating all of that on the main domain would create another site to keep current. The better approach was a personal homepage that introduces me, gives each part of my work some context, and then sends visitors to the site that has the details.
The new homepage has four primary destinations:
- Resume for professional experience, education, military leadership, and volunteer work.
- Learn for writing about web projects, infrastructure, the homelab, and tools I am learning.
- Guides for longer reference material and step-by-step documentation.
- Leeds Web Services for website development, ongoing care, hosting, security, and operational support.
The page also includes a current-focus section, selected posts from Learn, contact information, and links to the profiles I still use. It is more useful than the old button list without trying to become a second resume or blog.
Replacing LittleLink with Astro
The old site was plain HTML and CSS hosted on Vercel. It was based on LittleLink and still carried much of the original project with it: several stylesheets, a large collection of brand icons, analytics scripts, and images that were no longer used by the page.
The replacement uses Astro 7.2.2 and produces a static site. The current project is intentionally small. The homepage is one Astro page with a global stylesheet, a few images, and no client-side framework. Astro builds everything into the dist directory for Cloudflare Pages to serve.
I kept the existing portrait, but the rest of the visual system is new. The design uses a warm paper background, dark navy, muted blue, and a small amount of gold. Serif headings give it a more personal and editorial feel than the sites it links to. That distinction matters. The resume, Learn, and Leeds Web Services each have their own purpose and design, while the homepage should feel like the place where those parts meet.
The page includes responsive layouts, keyboard focus styles, reduced-motion handling, a skip link, canonical and social metadata, and Cloudflare response headers. I also created a dedicated Open Graph image so a shared link has a useful preview instead of a cropped profile photo.
Cleaning up the old project
I renamed the GitHub repository from littlelink-derekleeds-cloud to derekleeds-com. The old name described the implementation, not the website, and it no longer made sense after removing LittleLink.
The cleanup removed the retired HTML page, LittleLink stylesheets, JavaScript, brand icons, and unrelated images. The portrait files moved into Astro’s public assets, and the repository now contains the site that is actually deployed.
I also removed a few choices from the old page rather than carrying them into the redesign:
- The link to
journal.derekleeds.cloudis gone because that standalone journal has been folded into Learn. - The Venmo button did not return.
- Google Analytics was removed, leaving Plausible as the only analytics tool on the site.
- The Vercel project was deleted after the new repository and Cloudflare deployment were ready.
Git history still preserves the previous files, but they no longer sit beside the active site and make the repository harder to understand.
Moving the main domain to Cloudflare Pages
The deployment follows the same pattern as my other recent Astro projects. GitHub holds the source, and Cloudflare Pages builds the site when a change reaches main.
The Cloudflare configuration is short:
Build command: pnpm build
Build output directory: dist
Node.js version: 24.15.0The site does not need a server, database, Pages Function, or Cloudflare Worker. Pages serves the generated HTML, CSS, and images directly.
I built the new version on an astro-personal-homepage branch, reviewed it locally, and opened the first pull request in the renamed repository. After merging the pull request, I connected the repository to Cloudflare Pages and applied the custom domain. The site is now live at derekleeds.com.
A front door instead of another destination
This homepage is deliberately smaller than the sites around it. Its job is to orient visitors and help them choose where to go next.
That also makes it easier to maintain. The detailed material stays in the site that owns it, while the main domain only needs a concise introduction, a few current notes, and links that still point to the right places.
The old LittleLink page was useful when my online presence was mostly a collection of separate links. The new Astro site gives those links some structure and gives derekleeds.com a reason to exist beyond the domain name.
