My first portfolio was a Create React App project from 2020. It did its job, but six years on it was slow to build, hard to update and full of projects I wouldn’t lead with today.
What I kept
The teal, the triangle logo and the overall shape of the page. People who knew the old site should still recognise it. I just made everything bolder: bigger type, deeper colours and more room to breathe.
A redesign should feel like the same person, a few years older.
The triangle also became a new mark: two overlapping peaks that read as AA.
What changed
The site moved from React 16 to Astro. Every page is plain HTML at build time, so it loads fast and search engines can read it without running any JavaScript. The little bits that are interactive, like the theme toggle and the project filters, are a few lines of script each.
// astro.config.mjs
import { defineConfig } from 'astro/config';
import sitemap from '@astrojs/sitemap';
export default defineConfig({
site: 'https://ashfaqahmed.in',
integrations: [sitemap()],
});
Each project now has its own page at /works/<name>/, instead of all of them living in one long list. That gives each one a title and description Google can show.
Why the blog is its own project
Writing and the portfolio change at different speeds. Keeping the blog separate means I can publish a post without redeploying the portfolio, and try new things on one without breaking the other. Both sites share one component library, so they still look like they belong together.
What’s next
Case studies for my best projects, and a post every few weeks on Kafka Connect, debugging and the things I learn along the way.
