A modern static website built with Astro. Hosted on GitHub Pages.
# Install dependencies
npm install
# Development server (http://localhost:4321)
npm run dev
# Production build
npm run build
# Preview production build
npm run preview.
├── astro.config.mjs # Astro configuration
├── package.json # Dependencies and scripts
├── pubs.json # Publications data
├── src/
│ ├── components/ # Reusable Astro components
│ │ ├── PageHeader.astro
│ │ └── SimpleFooter.astro
│ ├── layouts/ # Page layouts
│ │ └── BaseLayout.astro
│ ├── lib/ # Shared utilities
│ │ └── publications.ts
│ ├── pages/ # Routes (each .astro file = a page)
│ │ ├── index.astro
│ │ ├── publications.astro
│ │ ├── calendar.astro
│ │ └── wedding.astro
│ └── styles/
│ └── global.css # Design system and global styles
├── public/ # Static assets (copied as-is)
│ ├── img/
│ ├── papers/
│ ├── fonts/
│ └── brown-cs-website/ # Legacy site preserved
└── dist/ # Generated site (gitignored)
- Edit
pubs.jsonwith new paper data - The site will hot-reload in dev mode, or run
npm run build
Edit the .astro files in src/pages/. Astro uses a component-based approach with scoped CSS.
The design system is in src/styles/global.css with CSS custom properties for colors, typography, spacing, etc. Supports light/dark mode via prefers-color-scheme.
Push to main to deploy automatically via GitHub Actions. You can also trigger manually via Actions → "Deploy to GitHub Pages" → "Run workflow".
- The lock.ico favicon is used under CC BY-SA 3.0, courtesy of Wikimedia user Urutseg
- Profile photo is copyright Joel Weinberger
- Legacy Brown CS site preserved at
/brown-cs-website/