Personal website built with Astro using the AstroPaper theme. Deployed on Netlify.
npm install # install dependencies (first time or after pulling new deps)
npm run dev # start dev server at localhost:4321
npm run build # production build to ./dist/
npm run preview # preview production build locallyCreate a new .md file in src/data/blog/:
---
author: Joshua Kravitz
pubDatetime: 2026-03-21T12:00:00Z
title: "Your Post Title"
slug: your-post-title
featured: false
draft: false
tags:
- some-tag
description: "A short description for SEO and post listings."
---
Your post content here. Standard markdown works.slugdetermines the URL:/posts/your-post-title/- Set
draft: trueto hide a post from the site - Set
featured: trueto pin it to the Featured section on the homepage - Tags create automatic tag pages at
/tags/tag-name/
The bio appears in two places:
- Homepage hero -- edit
src/components/Hero.astro(the paragraph text in the<div class="space-y-3">block) - About page -- edit
src/pages/about.md(plain markdown)
Keep them in sync, or make the about page a longer version.
Edit the interests and education arrays at the top of src/components/Hero.astro.
Edit src/pages/projects.astro. Projects and publications are separate arrays at the top of the file:
// Add to the projects array:
{
title: "Project Name",
description: "What it does.",
url: "https://github.com/...",
tags: ["tag1", "tag2"],
}
// Add to the publications array:
{
title: "Paper Title",
year: 2026,
abstract: "The abstract text.",
authors: "Author One, Author Two, ...",
publication: "Journal Name",
url: "https://doi.org/...",
tags: ["tag1"],
}- Homepage hero icons (email, Twitter, Scholar, GitHub, LinkedIn, CV): edit
socialLinksinsrc/components/Hero.astro - Footer/header icons: edit
SOCIALSinsrc/constants.ts
Replace public/files/resume.pdf with the new file.
Edit src/config.ts -- title, description, author, timezone, etc.
Edit the <ul id="menu-items"> in src/components/Header.astro.
The site auto-deploys via Netlify on push to master.
- Build command:
npm run build - Publish directory:
dist/ - Config:
netlify.toml - Contact form submissions go to the Netlify Forms dashboard
Branch deploys (like astro-migration) get preview URLs automatically.
| File | What it controls |
|---|---|
src/data/blog/*.md |
Blog posts |
src/components/Hero.astro |
Homepage hero (bio, photo, social links, interests, education) |
src/pages/about.md |
About page |
src/pages/projects.astro |
Projects & publications |
src/pages/contact.astro |
Contact form |
src/config.ts |
Site title, description, settings |
src/constants.ts |
Social links (footer/header) |
src/styles/global.css |
Colors, layout width, base styles |
src/components/Header.astro |
Navigation menu |
public/files/resume.pdf |
Resume PDF |
Light/dark mode colors are in src/styles/global.css as CSS variables. The accent color is #006cac (light) and #ff6b01 (dark).
Based on AstroPaper by Sat Naing. Licensed under MIT.