This repo powers mayankraj.com.
It is my personal website, blog, and a public place to think out loud about systems, security, cloud architecture, AI, and the occasional engineering scar tissue that only shows up after production has had its say.
If you are looking for a heavily abstracted starter kit, this is probably not that. This is a working personal site. It has opinions. It has history. It has a bunch of writing, custom components, and just enough structure to keep things moving without pretending a personal website needs a 14-layer platform strategy.
- A homepage that doubles as a professional snapshot
- A long-form blog under
content/blog/ - A resume page and downloadable PDF
- Custom Gatsby pages, shared React components, and hand-tuned styling
- RSS, sitemap, SEO metadata, analytics, and the usual website plumbing that nobody notices when it works
This site is built with:
- Gatsby for the static site framework
- React for UI
- Sass and a bit of Tailwind CSS for styling
- MUI Joy UI in a few places where it made sense
- Markdown for blog content
Content lives mostly in content/blog/, while the site code is under src/.
npm install
npm run devThen open http://localhost:8000.
If you prefer another package manager, the scripts are all in package.json. The important bit is simple: install dependencies, start Gatsby, iterate.
npm run devstarts the local Gatsby dev servernpm run devmstarts the dev server on your local networknpm run buildcreates a production buildnpm run serveserves the built site locallynpm run cleanclears Gatsby's cachenpm run preload-fontspreloads fonts
.
├── content/blog/ # Markdown posts
├── src/assets/ # Images, video, icons, and other static assets used by the app
├── src/components/ # Shared UI building blocks
├── src/pages/ # Gatsby pages
├── src/styles/ # Sass, Tailwind, and styling primitives
├── static/ # Files copied through as-is
├── gatsby-config.js # Site metadata and plugin configuration
└── package.json # Scripts and dependencies
Most new writing starts as a markdown file in content/blog/. The site picks it up through Gatsby's filesystem source plugin, runs it through the markdown pipeline, and publishes it into the blog index and RSS feed.
In practice, this repo is less "CMS" and more "well-organized notebook with deployment attached." That is intentional. Fewer moving parts. Less magic. Better odds that future-me still understands what past-me was thinking.
Deployments run through GitHub Actions and publish the built site to GitHub Pages. A push to master kicks off the build pipeline defined in .github/workflows/build-and-deploy.yml.
If something in here is useful, feel free to learn from it, adapt it, and build on top of it. Attribution is appreciated.
The only request: if you fork ideas from the writing or structure, make them yours. Personal websites are better when they feel personal.