Personal website built with Astro, Tailwind CSS, and React islands.
- Astro 5
- Tailwind CSS 4 (via Vite plugin)
- React 19 for interactive components
- TypeScript
Install dependencies and start the dev server:
pnpm install
pnpm devApp runs at http://localhost:4321 by default.
| Command | Description |
|---|---|
pnpm dev |
Start local development server |
pnpm start |
Alias for pnpm dev |
pnpm build |
Run astro check and build production output |
pnpm preview |
Preview built site locally |
pnpm astro -- --help |
Show Astro CLI help |
pnpm new |
Scaffold a new content file in src/content |
Content is managed with Astro content collections in src/content:
blog/— blog postsprojects/— project pagessignal/— signal/newsletter archive entries
Entries can use frontmatter draft: true to hide them from generated pages/routes.
Use the interactive scaffold script:
pnpm newYou can create:
- Project entry (
src/content/projects) - Blog post (
src/content/blog) - Signal entry (
src/content/signal)
.
├── public/
├── scripts/
│ └── new.mjs
├── src/
│ ├── components/
│ ├── content/
│ ├── layouts/
│ ├── pages/
│ ├── stores/
│ └── styles/
├── astro.config.mjs
├── tailwind.config.mjs
└── package.json
Deployment is handled by GitHub Actions: .github/workflows/deploy.yml.
- Open GitHub repository settings.
- Go to Pages.
- Set Source to GitHub Actions.
- Push changes to
main. - Workflow runs
pnpm build. - Output from
dist/is published to GitHub Pages.
pnpm build
pnpm preview