Personal website and blog for Max Ghenis, built with Astro.
- Blog - Markdown and MDX posts with code highlighting
- Social Feed - Aggregated posts from Bluesky (live), X/Twitter, and LinkedIn (via export)
- Research - Academic papers and interactive JupyterBook projects
- CV - Embedded curriculum vitae
- Newsletter - Buttondown integration for email subscriptions
- RSS - Full RSS feed at
/rss.xml
# Install dependencies
npm install
# Start dev server
npm run dev
# Build for production
npm run build
# Preview production build
npm run previewCreate a new .md or .mdx file in src/content/blog/:
---
title: 'My Post Title'
description: 'A brief description'
pubDate: 'Nov 25 2024'
---
Your content here...For interactive posts, use .mdx and import React components:
import MyChart from '../../components/MyChart';
<MyChart client:load />Bluesky: Updates automatically at build time via public API.
X/Twitter:
- Request your data archive from X settings
- Extract the ZIP and find
data/tweets.js - Run:
npm run import-x /path/to/tweets.js
LinkedIn:
- Export your data from LinkedIn settings
- Extract the ZIP
- Run:
npm run import-linkedin /path/to/linkedin-archive/
Deployed automatically to GitHub Pages on push to main via GitHub Actions.
To deploy manually:
npm run build
# Upload contents of dist/ to your host- Astro - Static site generator
- React - Interactive components (islands)
- MDX - Enhanced markdown
- Tailwind CSS - Styling
- GitHub Pages - Hosting
Content is open source. Feel free to use as a template for your own site.