Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
Simple academic personal homepage built with Astro, with pages for bio, publications, presentations, and a blog.

A dark portfolio & blog theme for Astro with a live 5,000-particle Three.js background, blog system, and glassmorphism UI.
Astro Scholar is a free, MIT-licensed academic personal homepage template built with Astro, designed to publish an introduction, publications, presentations, and a blog from static files.
Astro Scholar is a static-site template for academics and researchers who need a personal homepage. It takes your bio, publication records, talk slides, and blog posts as inputs — stored in editable JSON, Markdown, and .astro files — and produces a fast, deployable static website. It runs on the Astro framework (Node.js 18+ for local builds), is created by whydevils, and is licensed under MIT. The template includes pages for homepage, about, publications, presentations, and blog, with a filterable publication list and tag-filterable blog index.
src/data/publications.json, where each entry can include title, authors, journal, year, link, abstract, DOI, authorship (first, last, or other), and publicationType; each unique publicationType automatically becomes a filter button.src/pages/blog/ with frontmatter for layout, title, date, description, and tags; tags become clickable filters on the blog index.src/constants.ts, and any field can be hidden by setting it to an empty string..github/workflows/deploy.yaml deploys the site to GitHub Pages on every push to main, after a one-time setup that sets the Pages source to GitHub Actions.src/styles/global.css; the font is loaded from Google Fonts and can be swapped by changing the import and font-family declaration..astro file added to src/pages/ becomes a route; copying an existing page and adding a nav link in src/components/Navigation.astro is the documented way to add pages.src/assets/portrait.png, with the docs recommending a square image at least 400×400px.npm run build.src/data/publications.json with fields like DOI and authorship; visitors can filter by first/last author and by publication type such as Journal or Conference.public/presentations/ so they're served alongside the site.public/images/blog/, with the path adjusted for root vs sub-path deployments (e.g., /repo-name/images/blog/filename.png).main and the included GitHub Actions workflow rebuilds and publishes the site, after configuring astro.config.mjs with the correct site and base values.To get started, fork the repository and edit the files listed in the README: update src/constants.ts with your details, replace src/assets/portrait.png, edit the .astro page files, add publications to src/data/publications.json, and write blog posts as Markdown in src/pages/blog/. If you want to preview locally, install Node.js 18+, run npm install, then npm run dev to serve at http://localhost:4321. For production, push to main and the included GitHub Actions workflow deploys to GitHub Pages automatically.
Yes, the template is released under the MIT license, so it is free to use, modify, and distribute, including for commercial purposes.
You need Node.js version 18 or later. Then run npm install followed by npm run dev to preview at http://localhost:4321, or use npm run build to produce a static dist/ folder.
The repo includes a GitHub Actions workflow. After pushing to main, go to Settings → Pages → Build and deployment and set the source to "GitHub Actions". You also need to edit astro.config.mjs to set site and, for sub-path repos, base to the repo name.
Create a new .md file in src/pages/blog/ with frontmatter containing layout, title, date, description, and tags. Place any images in public/images/blog/ and reference them with the correct base path for your deployment.
Yes. Open src/styles/global.css, where the accent color and font are defined. The font is loaded from Google Fonts; change the import and the font-family declaration to use a different typeface.
