Academic Pages is a GitHub Pages template designed specifically for researchers, academics, and anyone who needs a professional portfolio-oriented personal website. Built on top of the Minimal Mistakes Jekyll theme, it extends that foundation with structured content types that academics actually use — publications, talks, teaching experience, a portfolio, blog posts, and a dynamically generated CV — all hosted for free on GitHub Pages with no ads, no subscriptions, and no server to maintain.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/academicpages/academicpages.github.io/llms.txt
Use this file to discover all available pages before exploring further.
How GitHub Pages Hosting Works
When you fork the Academic Pages repository and rename it to[yourusername].github.io, GitHub Pages automatically takes over. Every time you commit and push a change — whether that’s editing a Markdown file, updating _config.yml, or adding a new PDF — GitHub Pages runs Jekyll to rebuild the static HTML and serves it from GitHub’s infrastructure, free of charge.
Your site’s content lives in plain Markdown (.md) and YAML (.yml) files inside the repository. The Jekyll theme reads those files and transforms them into HTML pages, keeping your content completely separate from the presentation layer. This means you can overhaul the theme without touching a single line of your research data, or you can update your publications list without knowing anything about HTML or CSS.
GitHub Pages rebuilds your site automatically on every push. You can monitor the build status (green check, orange circle, or red X) in the Settings → Pages section of your repository.
Content Collections
Academic Pages organizes your site content into distinct collections. Each collection is a folder of Markdown files in the repository root — one file per item — and each file uses a YAML front matter block to supply structured metadata that the theme uses to build list pages, individual item pages, the CV page, and more.Publications
Stored in
_publications/. Each file supports title, date, venue, excerpt, paperurl, slidesurl, bibtexurl, and citation fields. Publications are grouped by category (books, manuscripts, conferences) as defined in _config.yml.Talks
Stored in
_talks/. Each file records title, type, venue, date, location, and a free-form Markdown description. Talk metadata is also used to generate the optional talk map visualization.Teaching
Stored in
_teaching/. Entries capture course titles, institution, dates, and rich Markdown descriptions — useful for documenting course design, syllabi links, or teaching philosophy.Portfolio
Stored in
_portfolio/. Items can be .md or .html files and support embedded images via the excerpt field. Portfolio pages are well-suited for project write-ups, software packages, or visual work samples.Blog Posts
Stored in
_posts/ following Jekyll’s standard YYYY-MM-DD-title.md naming convention. Posts support tags, categories, read-time estimates, comments, and social sharing — all controlled via _config.yml defaults.CV
Available in two formats: a hand-edited Markdown page at
_pages/cv.md, or a JSON-driven layout that reads from _data/cv.json. Switch between them by updating the CV link in _data/navigation.yml.Site Themes
The template ships with six built-in color themes, each with automatic light and dark variants. Set your preferred theme in_config.yml with the site_theme key:
Navigation
The top navigation bar is controlled by_data/navigation.yml. Each entry has a title and a url. Removing an entry hides that section from the header without deleting any of its content from the site.
Sidebar Author Profile
The left-hand sidebar is populated entirely from theauthor: block in _config.yml. Fields that are left blank are automatically hidden — no icon or link will appear for empty entries. The sidebar supports a wide range of academic and social profile links including Google Scholar, ORCID, PubMed, arXiv, ResearchGate, GitHub, LinkedIn, Bluesky, and more.
Supported Integrations
Academic Pages includes built-in support for several tools commonly used in academic and scientific writing, all enabled through Markdown code fences or_config.yml settings — no plugin installation required.
MathJax
MathJax 3 (via jsDelivr CDN) is included out of the box. Use$$...$$ or \[...\] delimiters for display equations and \(...\) for inline math:
Mermaid Diagrams
Mermaid 11 (via jsDelivr CDN) renders diagrams declared inside fenced code blocks tagged withmermaid:
Plotly
Plotly is included as an npm package (plotly.js-dist-min) and lazy-loaded from a CDN when a page requires it. Render interactive charts by placing Plotly-compatible JSON inside a plotly fenced code block:
Analytics
Google Analytics is supported through theanalytics: block in _config.yml. The provider field accepts "google", "google-universal", "google-analytics-4", or "custom":
Comments
Thecomments: block in _config.yml supports multiple providers: disqus, discourse, facebook, staticman, and custom. Set provider to your chosen service and fill in the provider-specific fields beneath it.
Markdown Generator
Themarkdown_generator/ directory contains Python scripts and Jupyter notebooks that convert CSV or TSV spreadsheets of publications and talks into correctly formatted Markdown files. This is useful if you already maintain your bibliography in a spreadsheet: run the script once to generate all the individual collection files, then commit them to the repository.
Jekyll Plugins
The template ships with the following Jekyll plugins declared in_config.yml (and the core subset also listed in the Gemfile for local development):
| Plugin | Purpose |
|---|---|
jekyll-feed | Generates an Atom RSS feed at /feed.xml |
jekyll-sitemap | Generates a sitemap.xml for search engines |
jekyll-redirect-from | Enables permalink redirects via front matter |
jemoji | Renders GitHub-style emoji shortcodes |
jekyll-gist | Embeds GitHub Gists |
jekyll-paginate | Paginates blog post archives |