markItDown
📱 A React app to preview and edit Markdown✍. You can also export it as HTML.
A beautiful, simple, clean, and responsive Jekyll theme for academics
A simple, clean, and responsive Jekyll starter for academic websites.
In v1.x, al-folio is a thin starter, not a theme: the runtime ships as independently versioned plugin gems, so you pick up fixes and features by bumping a pinned version in your Gemfile instead of merging theme internals into your site.
⚠️ Important: Use "Use this template" (not fork)
When creating your own website with al-folio, you have two options:
If you already forked: Don't worry! You can still work with your fork normally. Just make sure to:
my-site-updates)alshedivat/al-folio unless you're intentionally contributing improvements that benefit all usersFor quick setup, see docs/QUICKSTART.md.
Want to learn more about Jekyll? Check out this tutorial. Why Jekyll? Read Andrej Karpathy's blog post! Why write a blog? Read Rachel Thomas blog post.
For installation and deployment details please refer to docs/INSTALL.md.
For customization details please refer to docs/CUSTOMIZE.md.
al-folio is a thin starter in v1.x. Runtime features are plugin-owned and published as Ruby gems.
_data/featured_plugins.yml_pages/plugins.mdThe catalog page is deliberately kept out of the navbar (nav: false) so the demo site's chrome stays unchanged; reach it through the links above.
Naming convention:
al-folio-<feature> repos and al_folio_<feature> gem/plugin ids.al-<feature> or neutral naming.Featured plugins and bundled starter plugins are different tracks. Bundling requires explicit updates to Gemfile and _config.yml.
Plugin-owned changes should be made in the owning al-org-dev plugin repository, not by copying runtime assets into this starter.
The bundled v1 plugin repos are:
al-folio-core: shared layouts, includes, style/runtime primitives, and upgrade contractsal-folio-cv: CV renderingal-folio-distill: Distill layouts and runtime assetsal-folio-bootstrap-compat: temporary Bootstrap compatibility runtimeal-folio-upgrade: v1 upgrade audit/report/codemodsal-icons: icon loadingal-search: search runtimeal-citations: publication/citation helpersal-ext-posts: external post ingestional-analytics, al-comments, al-cookie, al-img-tools, al-math, al-charts, and al-newsletter: feature-specific runtime and integration behavioral-folio v1.x is designed for agent-assisted setup and migration. Agents should read AGENTS.md first, then use docs/BOUNDARIES.md to route changes to the starter or the owning plugin repo.
For existing customized forks, the recommended migration path is to ask an agent to use the al-folio v1 migration skill. The skill walks through creating a disposable migration branch, bringing site-owned content/config/data onto the v1 starter contract, running al_folio_upgrade, auditing local overrides, and validating the build. This is preferred over a manual file-by-file upgrade because v1 runtime ownership moved into plugins and local overrides need explicit drift tracking.
The canonical skills live in .agents/skills/. They are also exposed through .codex/skills/ and .claude/skills/ symlinks for agents that discover skills from tool-specific directories.
Codex can use the repo-local skills:
Useful first prompts:
Claude should start from CLAUDE.md, which imports AGENTS.md. For setup or migration tasks, use the matching skill from .claude/skills/, which points to the canonical .agents/skills/ directory.
Copilot should follow .github/copilot-instructions.md and the specialized agents in .github/agents/. Other agents should follow the same rule: keep starter work in this repo, route runtime behavior to the owning al-org-dev plugin, and run bundle exec al-folio upgrade overrides audit whenever local overrides are added or retained.
Comprehensive guides for all aspects of your al-folio website:
This template has a built-in light/dark mode. It detects the user preferred color scheme and automatically switches to it. You can also manually switch between light and dark mode by clicking on the sun/moon icon in the top right corner of the page.
Your CV can be generated in one of two modern formats: RenderCV (recommended, with automatic PDF generation) or JSONResume (standardized JSON format). You can use both simultaneously and switch between them, or maintain just the one you prefer.
For setup and customization details, see Modifying the CV information in docs/CUSTOMIZE.md.
You can create a people page if you want to feature more than one person. Each person can have its own short bio, profile picture, and you can also set if every person will appear at the same or opposite sides.
Your publications page is generated automatically from your BibTeX bibliography. You can customize publication display, add extra information like PDFs, and control sorting behavior.
For setup, BibTeX field documentation, and customization options, see Adding a new publication and Managing publication display in docs/CUSTOMIZE.md.
al-folio uses Jekyll collections to organize content into categories. The starter comes with four default collections — news, projects, books, and teachings — all declared under collections: in _config.yml. You can easily create your own collections for apps, stories, courses, or any other creative work.
For detailed instructions on creating and customizing collections, see Adding Collections in docs/CUSTOMIZE.md.
al-folio comes with stylish layouts for pages and blog posts.
The theme allows you to create blog posts in the distill.pub style:
For more details on how to create distill-styled posts using <d-*> tags, please refer to the example.
al-folio supports fast math typesetting through MathJax and code syntax highlighting using GitHub style. Also supports chartjs charts, mermaid diagrams, and TikZ figures.
Photo formatting is made simple using Tailwind-first responsive layout utilities. Easily create beautiful grids within your blog posts and project pages, also with support for video and audio embeds:
al-folio displays GitHub repositories and user stats on the /repositories/ page using github-stats-extended and github-profile-trophy.
To configure which repositories and GitHub profiles to display, see Modifying the user and repository information in docs/CUSTOMIZE.md.
al-folio offers a variety of beautiful theme colors to choose from. The default is purple, but you can customize colors, fonts, spacing, and more to match your style.
For detailed customization instructions, see Changing theme color and Customizing fonts, spacing, and more in docs/CUSTOMIZE.md.
al-folio supports Open Graph preview images on social media. When enabled, your site's pages display rich preview objects with images, titles, and descriptions when shared.
For setup and customization, see Social media previews in docs/CUSTOMIZE.md.
It generates an Atom (RSS-like) feed of your posts, useful for Atom and RSS readers. The feed is reachable simply by typing after your homepage /feed.xml. E.g. assuming your website mountpoint is the main folder, you can type yourusername.github.io/feed.xml
By default, blog posts display related posts at the bottom. These are selected by finding the most recent posts that share tags with the current post. You can customize this behavior on a per-post or site-wide basis.
For configuration details, see Related posts in docs/CUSTOMIZE.md.
Currently, we run some checks to ensure that the code quality and generated site are good. The checks are done using GitHub Actions and the following tools:
We decided to keep Axe runs manual because fixing the issues are not straightforward and might be hard for people without web development knowledge.
al-folio includes a GDPR-compliant cookie consent dialog provided by the al_cookie plugin to ensure your website respects visitor privacy. The dialog is powered by Vanilla Cookie Consent and integrates seamlessly with all supported analytics providers.
When enabled, analytics scripts are blocked until the user explicitly consents, and user preferences are saved across visits. This is essential for websites serving visitors in the European Union and other regions with strict privacy regulations.
For complete setup and customization details, see GDPR Cookie Consent Dialog in docs/CUSTOMIZE.md.
Academics around the world use al-folio for their homepages, blogs, and lab pages, as well as webpages for courses, workshops, conferences, meetups, and more.
Want your site listed? Post a request in the Showcase category of GitHub Discussions — we review and add entries periodically. Please do not open a pull request for this.
Run the test yourself: Google Lighthouse PageSpeed Insights
Run the test yourself: Google Lighthouse PageSpeed Insights
For frequently asked questions, please refer to docs/FAQ.md.
Contributions to al-folio are very welcome! Before you get started, please take a look at the guidelines.
If you would like to improve documentation or fix a minor inconsistency or bug, please feel free to send a PR directly to main. For more complex issues/bugs or feature requests, please open an issue using the appropriate template.
Our most active contributors are welcome to join the maintainers team. If you are interested, please reach out!
Maruan |
Rohan Deb Sarkar |
Amir Pourmand |
George |
Generated by bin/generate_star_history.py and refreshed automatically by star-history.yml.
al-folio is available as open source under the terms of the MIT License.
Originally, al-folio was based on the *folio theme (published by Lia Bogoev and under the MIT license). Since then, it got a full re-write of the styles and many additional cool features.
more like this
📱 A React app to preview and edit Markdown✍. You can also export it as HTML.
search projects, people, and tags