This repository contains the source code for basilinjoe.github.io, a personal website and blog built with Next.js and TypeScript. The site is statically exported and hosted on GitHub Pages.
- MDX blog posts under
content/blog(frontmatter via gray-matter, rendered withnext-mdx-remote/rsc) - Custom React components can be imported and used directly inside
.mdxposts - Syntax-highlighted code blocks via
rehype-highlight - RSS feed at
/feed.xmland per-tag archive pages at/blog/tag/[tag] - Tailwind CSS styling with shadcn/ui components
- Deploys to GitHub Pages using the
predeployanddeployscripts - Type-safe configuration in
config/site.ts
Install dependencies using your preferred package manager and start the development server:
pnpm install # or npm install
pnpm dev # starts Next.js on http://localhost:3000Lint and type-check the project with:
pnpm run lint # Biome — lints the whole project in ~50ms (warnings fail)
pnpm run lint:fix # apply Biome's safe autofixes
pnpm exec tsc --noEmitBoth run in CI on every push to master and must pass before the site deploys.
To create a static build suitable for GitHub Pages:
pnpm run predeployThe site will be generated in the out directory. Deploy it to GitHub Pages with:
pnpm run deployCreate new MDX files (.mdx) inside content/blog. Frontmatter fields: title, date, excerpt, optional modified, tags, coverImage, and draft: true to hide from the build. Drafts are shown locally when INCLUDE_DRAFTS=true is set. .md files are still loaded for backwards compatibility, but new posts should use .mdx so they can embed React components.
Feel free to open issues or pull requests if you notice problems or want to contribute improvements.