Implements cookie consent using vanilla-cookieconsent v3 to comply with
GDPR requirements. Analytics scripts are blocked until user consent is
obtained.
## Changes
**Library Integration**
- Added `vanilla-cookieconsent@3.1.0` to `_config.yml` third-party
libraries with SRI hashes
- Created `_scripts/cookie-consent-setup.js` with consent modal and
settings configuration
- Added CSS/JS includes in `_includes/head.liquid` and
`_includes/scripts.liquid`
**Analytics Blocking**
- Modified analytics scripts in `scripts.liquid` and
`distill_scripts.liquid` to use conditional `type="text/plain"
data-category="analytics"` when consent is disabled
- Blocks Google Analytics, Cronitor, Pirsch, and OpenPanel until consent
granted
- Library automatically converts blocked scripts to executable on user
acceptance
**Configuration**
- Added `enable_cookie_consent` flag (default: `false`)
- Cookie categories: `necessary` (always on), `analytics` (optional)
- 182-day cookie expiration, auto-clear on rejection
## Implementation
```liquid
{% if site.enable_cookie_consent %}
<script type="text/plain" data-category="analytics" async src="...gtag.js"></script>
{% else %}
<script async src="...gtag.js"></script>
{% endif %}
```
Enable in `_config.yml`:
```yaml
enable_cookie_consent: true
```
## Screenshots
**Consent Modal**

**Settings Modal**

> [!WARNING]
>
> <details>
> <summary>Firewall rules blocked me from connecting to one or more
addresses (expand for details)</summary>
>
> #### I tried to connect to the following addresses, but was blocked by
firewall rules:
>
> - `cdn.jsdelivr.net`
> - Triggering command: `/usr/bin/curl curl -s REDACTED` (dns block)
> - `cookieconsent.orestbida.com`
> - Triggering command:
`/home/REDACTED/work/_temp/ghcca-node/node/bin/node
/home/REDACTED/work/_temp/ghcca-node/node/bin/node --enable-source-maps
/home/REDACTED/work/_temp/copilot-developer-action-main/dist/index.js`
(dns block)
> - `medium.com`
> - Triggering command: `/usr/local/bin/ruby ruby
/usr/local/bundle/bin/bundle exec jekyll serve --watch --port=8080
--host=0.0.0.0 --livereload --verbose --trace --force_polling s
6_64-linux /etc/locale.gen by/backward -binutils_2.44-3grep .deb eb
/systemd-sysctl` (dns block)
> - `publish.twitter.com`
> - Triggering command: `/usr/local/bin/ruby ruby
/usr/local/bundle/bin/bundle exec jekyll serve --watch --port=8080
--host=0.0.0.0 --livereload --verbose --trace --force_polling lude
lude/ruby-4.0.0//run/containerd/io.containerd.runtime.v2.task/moby/a4760212ce4eda97e32b6dfa4d3ea/usr/sbin/iptables
r/runc-log.json f8_range lude r-strong E r/wc7in709a54d7hshow` (dns
block)
>
> If you need me to access, download, or install something from one of
these locations, you can either:
>
> - Configure [Actions setup
steps](https://gh.io/copilot/actions-setup-steps) to set up my
environment, which run before the firewall is enabled
> - Add the appropriate URLs or hosts to the custom allowlist in this
repository's [Copilot coding agent
settings](https://github.com/alshedivat/al-folio/settings/copilot/coding_agent)
(admins only)
>
> </details>
<!-- START COPILOT ORIGINAL PROMPT -->
<details>
<summary>Original prompt</summary>
>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>GDPR compliant cookie consent dialog</issue_title>
> <issue_description>Hi,
>
> since I am from Europe and want my site to be accessed by EU citizens
I need to ask users if they are ok with the use of cookies. Adding a
dialogue by default that that asks the user before any cookies /
localStorage are used would be nice.
>
> I have integrated the dialog from
[https://www.cookieconsent.com/](https://www.cookieconsent.com/) on [my
website](http://hschwane.github.io) and am happy to file a PR if you are
interested. However It is not shown directly at the top, but below the
menu bar for some reason. Not sure how to fix that.
> </issue_description>
>
> <agent_instructions>Implement this using cookie consent dialog from
https://github.com/orestbida/cookieconsent. The documentation is
available at
https://cookieconsent.orestbida.com/essential/getting-started.html.</agent_instructions>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> <comment_new><author>@alshedivat</author><body>
> @hschwane, thanks for pointing this out. It's would be great if you
could send a PR.
>
> To answer your question about positioning, the menu bar has the
absolute position at the top of the page and keeps moving with
scrolling. You can change that behavior in `_config.yml` by setting
`navbar_fixed: false` (see [line
27](https://github.com/alshedivat/al-folio/blob/master/_config.yml#L27)).
If you send a PR with basic functionality, I can help with adjusting the
styles a bit. Thanks!</body></comment_new>
> <comment_new><author>@alshedivat</author><body>
> Just catching up on this discussion.
>
> @hschwane, thanks for providing an implementation based on
`ihavecookies`! I looked through alshedivat/al-folio#223. It seems like
to be able to correctly (un)block different types of cookies (all of
which are third-party cookies) requires adding quite a bit of extra
JavaScript (including adding it directly to posts or pages in some
cases, e.g., when posts embed youtube videos or other external content).
This approach will put some extra burden on contributors and maintainers
of al-folio down the line.
>
> By the way, the dialog from https://www.cookieconsent.com/ is similar
in that sense as it requires to manually add ALL scripts that use
cookies. So, if someone contributes a new feature to al-folio that uses
cookies, the contributor would have to go and update the cookie consent
dialog as well (or edit quite a bit of JS if `ihavecookies` is used).
>
> Thinking about this more, I currently see only three options:
> 1. If we want to have cookie consent as a core part of al-folio (which
can be easily enabled or disabled), it needs to be a service that
automatically identifies and blocks cookies, without putting an extra
burden on the contributors or maintainers. The hosted version of [Cookie
Consent by Osano](https://www.osano.com/features/consent-management) is
an example.
> 2. Another option is to provide a very minimalistic cookie consent
dialog which simply says that the website uses cookies, without an
option to opt-in or opt-out (e.g., see the open-source edition of
[Osano](https://www.osano.com/cookieconsent/download/)).
> 3. Finally, not have cookie consent as part of al-folio, and make the
user responsible for figuring out whether they need a consent dialog and
which service to use.
>
> Let me know what you think.</body></comment_new>
> <comment_new><author>@alshedivat</author><body>
> the best way to add GDPR compliant cookie consent is using
https://github.com/orestbida/cookieconsent</body></comment_new>
> </comments>
>
</details>
> **Custom agent used: customization_agent**
> Expert customization assistant for the al-folio Jekyll academic
website template
<!-- START COPILOT CODING AGENT SUFFIX -->
- Fixes alshedivat/al-folio#199
<!-- START COPILOT CODING AGENT TIPS -->
---
✨ Let Copilot coding agent [set things up for
you](https://github.com/alshedivat/al-folio/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.
---------
Signed-off-by: George Araújo <george.gcac@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: george-gca <31376482+george-gca@users.noreply.github.com>
Co-authored-by: George Araújo <george.gcac@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
540 lines
30 KiB
Markdown
540 lines
30 KiB
Markdown
# al-folio
|
||
|
||
<div align="center">
|
||
|
||
[](https://alshedivat.github.io/al-folio/)
|
||
|
||
**A simple, clean, and responsive [Jekyll](https://jekyllrb.com/) theme for academics.**
|
||
|
||
---
|
||
|
||
[](https://github.com/alshedivat/al-folio/actions/workflows/deploy.yml)
|
||
[](#maintainers)
|
||
[](https://github.com/alshedivat/al-folio/graphs/contributors/)
|
||
|
||
[](https://hub.docker.com/r/amirpourmand/al-folio)
|
||
[](https://hub.docker.com/r/amirpourmand/al-folio)
|
||
[](https://hub.docker.com/r/amirpourmand/al-folio)
|
||
|
||
[](https://github.com/alshedivat/al-folio/releases/latest)
|
||
[](https://github.com/alshedivat/al-folio/blob/main/LICENSE)
|
||
[](https://github.com/alshedivat/al-folio/stargazers)
|
||
[](https://github.com/alshedivat/al-folio/fork)
|
||
|
||
[](https://codewiki.google/github.com/alshedivat/al-folio)
|
||
[](https://deepwiki.com/alshedivat/al-folio)
|
||
|
||
</div>
|
||
|
||
## User community
|
||
|
||
The vibrant community of **al-folio** users is growing!
|
||
Academics around the world use this theme for their homepages, blogs, lab pages, as well as webpages for courses, workshops, conferences, meetups, and more.
|
||
Check out the community webpages below.
|
||
Feel free to add your own page(s) by sending a PR.
|
||
|
||
<table>
|
||
<tr>
|
||
<td>Academics</td>
|
||
<td>
|
||
<a href="https://martinbulla.github.io" target="_blank">★</a>
|
||
<a href="https://maruan.alshedivat.com" target="_blank">★</a>
|
||
<a href="https://www.cs.columbia.edu/~chen1ru/" target="_blank">★</a>
|
||
<a href="https://maithraraghu.com" target="_blank">★</a>
|
||
<a href="https://platanios.org" target="_blank">★</a>
|
||
<a href="https://otiliastr.github.io" target="_blank">★</a>
|
||
<a href="https://www.maths.dur.ac.uk/~sxwc62/" target="_blank">★</a>
|
||
<a href="https://jessachandler.com/" target="_blank">★</a>
|
||
<a href="https://mayankm96.github.io/" target="_blank">★</a>
|
||
<a href="https://markdean.info/" target="_blank">★</a>
|
||
<a href="https://kakodkar.github.io/" target="_blank">★</a>
|
||
<a href="https://sahirbhatnagar.com/" target="_blank">★</a>
|
||
<a href="https://spd.gr/" target="_blank">★</a>
|
||
<a href="https://jay-sarkar.github.io/" target="_blank">★</a>
|
||
<a href="https://aborowska.github.io/" target="_blank">★</a>
|
||
<a href="https://aditisgh.github.io/" target="_blank">★</a>
|
||
<a href="https://alexhaydock.co.uk/" target="_blank">★</a>
|
||
<a href="https://alixkeener.net/" target="_blank">★</a>
|
||
<a href="https://andreea7b.github.io/" target="_blank">★</a>
|
||
<a href="https://rishabhjoshi.github.io/" target="_blank">★</a>
|
||
<a href="https://sheelabhadra.github.io/" target="_blank">★</a>
|
||
<a href="https://giograno.me/" target="_blank">★</a>
|
||
<a href="https://immsrini.github.io/" target="_blank">★</a>
|
||
<a href="https://apooladian.github.io/" target="_blank">★</a>
|
||
<a href="https://chinmoy-dutta.github.io/" target="_blank">★</a>
|
||
<a href="https://liamcli.com/" target="_blank">★</a>
|
||
<a href="https://yoonholee.com/" target="_blank">★</a>
|
||
<a href="https://zrqiao.github.io/" target="_blank">★</a>
|
||
<a href="https://abstractgeek.github.io/" target="_blank">★</a>
|
||
<a href="https://www.compphys.de/" target="_blank">★</a>
|
||
<a href="https://julianstreyczek.github.io" target="_blank">★</a>
|
||
<a href="https://sdaza.com" target="_blank">★</a>
|
||
<a href="https://niweera.gq" target="_blank">★</a>
|
||
<a href="https://www.alihkw.com" target="_blank">★</a>
|
||
<a href="https://amirpourmand.ir" target="_blank">★</a>
|
||
<a href="https://scottleechua.github.io" target="_blank">★</a>
|
||
<a href="https://sk1y101.github.io" target="_blank">★</a>
|
||
<a href="https://yyang768osu.github.io" target="_blank">★</a>
|
||
<a href="https://veedata.github.io" target="_blank">★</a>
|
||
<a href="https://K-Wu.github.io" target="_blank">★</a>
|
||
<a href="https://amalawilson.com" target="_blank">★</a>
|
||
<a href="https://tirtharajdash.github.io" target="_blank">★</a>
|
||
<a href="https://carolinacarreira.github.io" target="_blank">★</a>
|
||
<a href="https://manandey.github.io" target="_blank">★</a>
|
||
<a href="https://johanneshoerner.github.io" target="_blank">★</a>
|
||
<a href="https://ioannismavromatis.com" target="_blank">★</a>
|
||
<a href="https://taidnguyen.github.io" target="_blank">★</a>
|
||
<a href="https://lbugnon.github.io" target="_blank">★</a>
|
||
<a href="https://joahannes.github.io" target="_blank">★</a>
|
||
<a href="https://dominikstrb.github.io" target="_blank">★</a>
|
||
<a href="https://tylerbarna.com" target="_blank">★</a>
|
||
<a href="https://daviddmc.github.io/" target="_blank">★</a>
|
||
<a href="https://andreaskuster.ch/" target="_blank">★</a>
|
||
<a href="https://ellisbrown.github.io/" target="_blank">★</a>
|
||
<a href="https://djherron.github.io/" target="_blank">★</a>
|
||
<a href="https://rodosingh.github.io/" target="_blank">★</a>
|
||
<a href="https://vdivakar.github.io/" target="_blank">★</a>
|
||
<a href="https://george-gca.github.io/" target="_blank">★</a>
|
||
<a href="https://bashirkazimi.github.io/" target="_blank">★</a>
|
||
<a href="https://dohaison.github.io/" target="_blank">★</a>
|
||
<a href="https://raphaaal.github.io/" target="_blank">★</a>
|
||
<a href="https://varuniyer.info/" target="_blank">★</a>
|
||
<a href="https://yukimasano.github.io/" target="_blank">★</a>
|
||
<a href="https://hashe037.github.io/" target="_blank">★</a>
|
||
<a href="https://wang-boyu.github.io/" target="_blank">★</a>
|
||
<a href="https://qingqingchen.info" target="_blank">★</a>
|
||
<a href="https://bajinsheng.github.io/" target="_blank">★</a>
|
||
<a href="https://www.silviofanzon.com/" target="_blank">★</a>
|
||
<a href="https://kaikaiyao.github.io/" target="_blank">★</a>
|
||
<a href="https://alchemz.github.io/" target="_blank">★</a>
|
||
<a href="https://samadamday.com/" target="_blank">★</a>
|
||
<a href="https://fanpu.io/" target="_blank">★</a>
|
||
<a href="https://abigalekim.github.io/" target="_blank">★</a>
|
||
<a href="https://lucasresck.github.io/" target="_blank">★</a>
|
||
<a href="https://users.wpi.edu/~lfichera/" target="_blank">★</a>
|
||
<a href="https://anmspro.github.io/" target="_blank">★</a>
|
||
<a href="https://berlyne.net/" target="_blank">★</a>
|
||
<a href="https://filippomazzoli.github.io/" target="_blank">★</a>
|
||
<a href="https://www.escontrela.me/" target="_blank">★</a>
|
||
<a href="https://raffaem.github.io/" target="_blank">★</a>
|
||
<a href="https://cbueth.de/" target="_blank">★</a>
|
||
<a href="https://kyleaoman.github.io/" target="_blank">★</a>
|
||
<a href="https://decwest.github.io/" target="_blank">★</a>
|
||
<a href="https://www.jedburkat.com" target="_blank">★</a>
|
||
<a href="https://hrzhang.me" target="_blank">★</a>
|
||
<a href="https://kudhru.github.io/" target="_blank">★</a>
|
||
<a href="https://mbarbetti.github.io/" target="_blank">★</a>
|
||
<a href="https://www.zhivotenko.com/" target="_blank">★</a>
|
||
<a href="https://giordanodaloisio.github.io/" target="_blank">★</a>
|
||
<a href="https://aadityaura.github.io/" target="_blank">★</a>
|
||
<a href="https://abhinav-mehta.github.io/" target="_blank">★</a>
|
||
<a href="https://shubhashisroydipta.com/" target="_blank">★</a>
|
||
<a href="https://astanziola.github.io" target="_blank">★</a>
|
||
<a href="https://tinkerer.in" target="_blank">★</a>
|
||
<a href="https://afraniomelo.github.io/en/" target="_blank">★</a>
|
||
<a href="https://jonaruthardt.github.io" target="_blank">★</a>
|
||
<a href="https://www.zla.app/" target="_blank">★</a>
|
||
<a href="https://stavros.github.io" target="_blank">★</a>
|
||
<a href="https://ericslyman.com" target="_blank">★</a>
|
||
<a href="https://ztjona.github.io/" target="_blank">★</a>
|
||
<a href="https://chrischoi314.github.io" target="_blank">★</a>
|
||
<a href="https://riccobelli.faculty.polimi.it" target="_blank">★</a>
|
||
<a href="https://kishanved.tech/" target="_blank">★</a>
|
||
<a href="https://abhilesh.github.io/" target="_blank">★</a>
|
||
<a href="https://jackjburnett.github.io/" target="_blank">★</a>
|
||
<a href="https://physics-morris.github.io/" target="_blank">★</a>
|
||
<a href="https://sraf.ir" target="_blank">★</a>
|
||
<a href="https://acad.garywei.dev/" target="_blank">★</a>
|
||
<a href="https://tonideleo.github.io/" target="_blank">★</a>
|
||
<a href="https://alonkellner.com/" target="_blank">★</a>
|
||
<a href="https://berylbir.github.io/" target="_blank">★</a>
|
||
<a href="https://global-anomaly.github.io/" target="_blank">★</a>
|
||
<a href="https://mingsun-kaust.github.io/" target="_blank">★</a>
|
||
<a href="https://hdocmsu.github.io/" target="_blank">★</a>
|
||
<a href="https://trandangtrungduc.github.io/" target="_blank">★</a>
|
||
<a href="https://kinghowler.github.io/" target="_blank">★</a>
|
||
<a href="https://anurye.github.io/" target="_blank">★</a>
|
||
<a href="https://charlie-xiao.github.io/" target="_blank">★</a>
|
||
<a href="https://giuseppeperelli.github.io/" target="_blank">★</a>
|
||
<a href="https://shlee-lab.github.io/" target="_blank">★</a>
|
||
<a href="https://devos50.github.io/" target="_blank">★</a>
|
||
<a href="https://vmooers.github.io/" target="_blank">★</a>
|
||
<a href="https://jpfonseca.github.io/" target="_blank">★</a>
|
||
<a href="https://dmitryryumin.github.io/" target="_blank">★</a>
|
||
<a href="https://alexiglad.github.io/" target="_blank">★</a>
|
||
<a href="https://nishanthjkumar.com/" target="_blank">★</a>
|
||
<a href="https://joszuijderwijk.nl/" target="_blank">★</a>
|
||
<a href="https://d-jiao.github.io/" target="_blank">★</a>
|
||
<a href="https://cbuelt.github.io/" target="_blank">★</a>
|
||
<a href="https://mehrdad-noori.github.io/" target="_blank">★</a>
|
||
<a href="https://arthurclerjon.github.io/" target="_blank">★</a>
|
||
<a href="https://eilamshapira.com/" target="_blank">★</a>
|
||
<a href="https://freifrauvonbleifrei.github.io/" target="_blank">★</a>
|
||
<a href="https://thomasbourke1.github.io/" target="_blank">★</a>
|
||
<a href="https://siddharthsule.com/" target="_blank">★</a>
|
||
<a href="https://waynexucn.github.io/" target="_blank">★</a>
|
||
<a href="https://zlatanajanovic.com/" target="_blank">★</a>
|
||
<a href="https://mchadolias.github.io/" target="_blank">★</a>
|
||
<a href="https://syanyong.github.io/" target="_blank">★</a>
|
||
<a href="https://jucheval.github.io/" target="_blank">★</a>
|
||
<a href="https://j1yoo.github.io/" target="_blank">★</a>
|
||
<a href="https://zhoji.github.io/" target="_blank">★</a>
|
||
<a href="https://smsnobin77.github.io/" target="_blank">★</a>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Labs</td>
|
||
<td>
|
||
<a href="https://www.haylab.caltech.edu/" target="_blank">★</a>
|
||
<a href="https://sjkimlab.github.io/" target="_blank">★</a>
|
||
<a href="https://systemconsultantgroup.github.io/scg-folio/" target="_blank">★</a>
|
||
<a href="https://decisionlab.ucsf.edu/" target="_blank">★</a>
|
||
<a href="https://programming-group.com/" target="_blank">★</a>
|
||
<a href="https://sailing-lab.github.io/" target="_blank">★</a>
|
||
<a href="https://inbt.jhu.edu/epidiagnostics/" target="_blank">★</a>
|
||
<a href="https://www.nuesl.org/" target="_blank">★</a>
|
||
<a href="https://big-culture.github.io/" target="_blank">★</a>
|
||
<a href="https://martinbulla.github.io/bullab/" target="_blank">★</a>
|
||
<a href="https://gpforesteyes.github.io/" target="_blank">★</a>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Courses</td>
|
||
<td>
|
||
CMU PGM (<a href="https://sailinglab.github.io/pgm-spring-2019/" target="_blank">S-19</a>) <br>
|
||
CMU DeepRL (<a href="https://cmudeeprl.github.io/403_website/" target="_blank">S-21</a>, <a href="https://cmudeeprl.github.io/703website_f21/" target="_blank">F-21</a>, <a href="https://cmudeeprl.github.io/403website_s22/" target="_blank">S-22</a>, <a href="https://cmudeeprl.github.io/703website_f22/" target="_blank">F-22</a>, <a href="https://cmudeeprl.github.io/403website_s23/" target="_blank">S-23</a>, <a href="https://cmudeeprl.github.io/703website_f23/" target="_blank">F-23</a>) <br>
|
||
CMU MMML (<a href="https://cmu-multicomp-lab.github.io/mmml-course/fall2020/" target="_blank">F-20</a>, <a href="https://cmu-multicomp-lab.github.io/mmml-course/fall2022/" target="_blank">F-22</a>) <br>
|
||
CMU AMMML (<a href="https://cmu-multicomp-lab.github.io/adv-mmml-course/spring2022/" target="_blank">S-22</a>, <a href="https://cmu-multicomp-lab.github.io/adv-mmml-course/spring2023/" target="_blank">S-23</a>) <br>
|
||
CMU ASI (<a href="https://cmu-multicomp-lab.github.io/asi-course/spring2023/" target="_blank">S-23</a>) <br>
|
||
CMU Distributed Systems (<a href="https://andrew.cmu.edu/course/15-440/" target="_blank">S-24</a>)
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Conferences & workshops</td>
|
||
<td>
|
||
ICLR Blog Post Track (<a href="https://iclr-blogposts.github.io/2023/" target="_blank">2023</a>, <a href="https://iclr-blogposts.github.io/2024/about" target="_blank">2024</a>) <br>
|
||
ML Retrospectives (NeurIPS: <a href="https://ml-retrospectives.github.io/neurips2019/" target="_blank">2019</a>, <a href="https://ml-retrospectives.github.io/neurips2020/" target="_blank">2020</a>; ICML: <a href="https://ml-retrospectives.github.io/icml2020/" target="_blank">2020</a>) <br>
|
||
HAMLETS (NeurIPS: <a href="https://hamlets-workshop.github.io/" target="_blank">2020</a>) <br>
|
||
ICBINB (NeurIPS: <a href="https://i-cant-believe-its-not-better.github.io/" target="_blank">2020</a>, <a href="https://i-cant-believe-its-not-better.github.io/neurips2021/" target="_blank">2021</a>) <br>
|
||
Neural Compression (ICLR: <a href="https://neuralcompression.github.io/" target="_blank">2021</a>) <br>
|
||
Score Based Methods (NeurIPS: <a href="https://score-based-methods-workshop.github.io/" target="_blank">2022</a>)<br>
|
||
Images2Symbols (CogSci: <a href="https://images2symbols.github.io/" target="_blank"> 2022</a>) <br>
|
||
Medical Robotics Junior Faculty Forum (ISMR: <a href="https://junior-forum-ismr.github.io/" target="_blank"> 2023</a>)<br>
|
||
Beyond Vision: Physics meets AI (ICIAP: <a href="https://physicsmeetsai.github.io/beyond-vision/" target="_blank">2023</a>) <br>
|
||
Workshop on Diffusion Models (NeurIPS: <a href="https://diffusionworkshop.github.io/" target="_blank">2023</a>) <br>
|
||
Workshop on Structured Probabilistic Inference & Generative Modeling (ICML: <a href="https://spigmworkshop.github.io/" target="_blank">2023</a>, <a href="https://spigmworkshop2024.github.io/" target="_blank">2024</a>)
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
## Lighthouse PageSpeed Insights
|
||
|
||
### Desktop
|
||
|
||
[](https://htmlpreview.github.io/?https://github.com/alshedivat/al-folio/blob/main/lighthouse_results/desktop/alshedivat_github_io_al_folio_.html)
|
||
|
||
Run the test yourself: [Google Lighthouse PageSpeed Insights](https://pagespeed.web.dev/report?url=https%3A%2F%2Falshedivat.github.io%2Fal-folio%2F&form_factor=desktop)
|
||
|
||
### Mobile
|
||
|
||
[](https://htmlpreview.github.io/?https://github.com/alshedivat/al-folio/blob/main/lighthouse_results/mobile/alshedivat_github_io_al_folio_.html)
|
||
|
||
Run the test yourself: [Google Lighthouse PageSpeed Insights](https://pagespeed.web.dev/report?url=https%3A%2F%2Falshedivat.github.io%2Fal-folio%2F&form_factor=mobile)
|
||
|
||
## Table Of Contents
|
||
|
||
<!--ts-->
|
||
|
||
- [al-folio](#al-folio)
|
||
- [User community](#user-community)
|
||
- [Lighthouse PageSpeed Insights](#lighthouse-pagespeed-insights)
|
||
- [Desktop](#desktop)
|
||
- [Mobile](#mobile)
|
||
- [Table Of Contents](#table-of-contents)
|
||
- [Getting started](#getting-started)
|
||
- [Installing and Deploying](#installing-and-deploying)
|
||
- [Customizing](#customizing)
|
||
- [GitHub Copilot Agents](#github-copilot-agents)
|
||
- [Customization Agent](#customization-agent)
|
||
- [Documentation Agent](#documentation-agent)
|
||
- [Documentation](#documentation)
|
||
- [Features](#features)
|
||
- [Light/Dark Mode](#lightdark-mode)
|
||
- [CV](#cv)
|
||
- [People](#people)
|
||
- [Publications](#publications)
|
||
- [Collections](#collections)
|
||
- [Layouts](#layouts)
|
||
- [The iconic style of Distill](#the-iconic-style-of-distill)
|
||
- [Full support for math \& code](#full-support-for-math--code)
|
||
- [Photos, Audio, Video and more](#photos-audio-video-and-more)
|
||
- [Other features](#other-features)
|
||
- [GitHub's repositories and user stats](#githubs-repositories-and-user-stats)
|
||
- [Theming](#theming)
|
||
- [Social media previews](#social-media-previews)
|
||
- [Atom (RSS-like) Feed](#atom-rss-like-feed)
|
||
- [Related posts](#related-posts)
|
||
- [Code quality checks](#code-quality-checks)
|
||
- [GDPR Cookie Consent Dialog](#gdpr-cookie-consent-dialog)
|
||
- [FAQ](#faq)
|
||
- [Contributing](#contributing)
|
||
- [Maintainers](#maintainers)
|
||
- [All Contributors](#all-contributors)
|
||
- [Star History](#star-history)
|
||
- [License](#license)
|
||
|
||
<!--te-->
|
||
|
||
## Getting started
|
||
|
||
Want to learn more about Jekyll? Check out [this tutorial](https://www.taniarascia.com/make-a-static-website-with-jekyll/). Why Jekyll? Read [Andrej Karpathy's blog post](https://karpathy.github.io/2014/07/01/switching-to-jekyll/)! Why write a blog? Read [Rachel Thomas blog post](https://medium.com/@racheltho/why-you-yes-you-should-blog-7d2544ac1045).
|
||
|
||
## Installing and Deploying
|
||
|
||
For installation and deployment details please refer to [INSTALL.md](INSTALL.md).
|
||
|
||
## Customizing
|
||
|
||
For customization details please refer to [CUSTOMIZE.md](CUSTOMIZE.md).
|
||
|
||
## GitHub Copilot Agents
|
||
|
||
This repository includes two specialized GitHub Copilot agents to enhance your development experience:
|
||
|
||
### Customization Agent
|
||
|
||
The **Customization Agent** helps you personalize your al-folio website by:
|
||
|
||
- Guiding you through configuration changes step-by-step
|
||
- Modifying files directly in your repository
|
||
- Explaining technical concepts in plain language (great for users without coding experience)
|
||
- Assisting with common tasks like updating your CV, adding publications, creating blog posts, and customizing themes
|
||
|
||
See [CUSTOMIZE.md § GitHub Copilot Customization Agent](CUSTOMIZE.md#github-copilot-customization-agent) for detailed usage instructions.
|
||
|
||
### Documentation Agent
|
||
|
||
The **Documentation Agent** maintains clear and up-to-date project documentation by:
|
||
|
||
- Updating documentation files when features change
|
||
- Writing in a style accessible to academics and researchers
|
||
- Keeping documentation synchronized with the codebase
|
||
- Following documentation best practices
|
||
|
||
See [CONTRIBUTING.md § GitHub Copilot Agents](CONTRIBUTING.md#github-copilot-agents) for more information.
|
||
|
||
> **Requirements:** Both agents require a [GitHub Copilot](https://github.com/features/copilot) subscription. For more information about GitHub Copilot and how to use agents, see the [GitHub Copilot documentation](https://docs.github.com/en/copilot).
|
||
|
||
## Documentation
|
||
|
||
Comprehensive guides for all aspects of your al-folio website:
|
||
|
||
- **[Quick Start](QUICKSTART.md)** – Get running in 5 minutes
|
||
- **[Installation & Deployment](INSTALL.md)** – Set up your site on GitHub Pages or other platforms
|
||
- **[Customization Guide](CUSTOMIZE.md)** – Personalize your website (CVs, publications, themes, etc.)
|
||
- **[Troubleshooting](TROUBLESHOOTING.md)** – Fix common issues (deployment, build, styling, content)
|
||
- **[FAQ](FAQ.md)** – Frequently asked questions and solutions
|
||
- **[Analytics](ANALYTICS.md)** – Add website analytics and visitor tracking
|
||
- **[SEO Guide](SEO.md)** – Optimize for search engines and improve discoverability
|
||
|
||
## Features
|
||
|
||
### Light/Dark Mode
|
||
|
||
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.
|
||
|
||
<p align="center">
|
||
<img src="readme_preview/light.png" width=400>
|
||
<img src="readme_preview/dark.png" width=400>
|
||
</p>
|
||
|
||
---
|
||
|
||
### CV
|
||
|
||
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.
|
||
|
||
[](https://alshedivat.github.io/al-folio/cv/)
|
||
|
||
For setup and customization details, see [Modifying the CV information](CUSTOMIZE.md#modifying-the-cv-information) in [CUSTOMIZE.md](CUSTOMIZE.md).
|
||
|
||
---
|
||
|
||
### People
|
||
|
||
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.
|
||
|
||
[](https://alshedivat.github.io/al-folio/people/)
|
||
|
||
---
|
||
|
||
### Publications
|
||
|
||
Your publications page is generated automatically from your BibTeX bibliography. You can customize publication display, add extra information like PDFs, and control sorting behavior.
|
||
|
||
[](https://alshedivat.github.io/al-folio/publications/)
|
||
|
||
For setup, BibTeX field documentation, and customization options, see [Adding a new publication](CUSTOMIZE.md#adding-a-new-publication) and [Managing publication display](CUSTOMIZE.md#managing-publication-display) in [CUSTOMIZE.md](CUSTOMIZE.md).
|
||
|
||
---
|
||
|
||
### Collections
|
||
|
||
This Jekyll theme implements `collections` to organize content into categories. The theme comes with default collections for `news`, `projects`, `books`, and `teachings`. You can easily create your own collections for apps, stories, courses, or any other creative work.
|
||
|
||
[](https://alshedivat.github.io/al-folio/projects/)
|
||
|
||
For detailed instructions on creating and customizing collections, see [Adding Collections](CUSTOMIZE.md#adding-collections) in [CUSTOMIZE.md](CUSTOMIZE.md).
|
||
|
||
---
|
||
|
||
### Layouts
|
||
|
||
**al-folio** comes with stylish layouts for pages and blog posts.
|
||
|
||
#### The iconic style of Distill
|
||
|
||
The theme allows you to create blog posts in the [distill.pub](https://distill.pub/) style:
|
||
|
||
[](https://alshedivat.github.io/al-folio/blog/2021/distill/)
|
||
|
||
For more details on how to create distill-styled posts using `<d-*>` tags, please refer to [the example](https://alshedivat.github.io/al-folio/blog/2021/distill/).
|
||
|
||
#### Full support for math & code
|
||
|
||
**al-folio** supports fast math typesetting through [MathJax](https://www.mathjax.org/) and code syntax highlighting using [GitHub style](https://github.com/jwarby/jekyll-pygments-themes). Also supports [chartjs charts](https://www.chartjs.org/), [mermaid diagrams](https://mermaid-js.github.io/mermaid/#/), and [TikZ figures](https://tikzjax.com/).
|
||
|
||
<p align="center">
|
||
<a href="https://alshedivat.github.io/al-folio/blog/2015/math/" target="_blank"><img src="readme_preview/math.png" width=400></a>
|
||
<a href="https://alshedivat.github.io/al-folio/blog/2015/code/" target="_blank"><img src="readme_preview/code.png" width=400></a>
|
||
</p>
|
||
|
||
#### Photos, Audio, Video and more
|
||
|
||
Photo formatting is made simple using [Bootstrap's grid system](https://getbootstrap.com/docs/4.4/layout/grid/). Easily create beautiful grids within your blog posts and project pages, also with support for [video](https://alshedivat.github.io/al-folio/blog/2023/videos/) and [audio](https://alshedivat.github.io/al-folio/blog/2023/audios/) embeds:
|
||
|
||
<p align="center">
|
||
<a href="https://alshedivat.github.io/al-folio/projects/1_project/">
|
||
<img src="readme_preview/photos-screenshot.png" width="75%">
|
||
</a>
|
||
</p>
|
||
|
||
---
|
||
|
||
### Other features
|
||
|
||
#### GitHub's repositories and user stats
|
||
|
||
**al-folio** displays GitHub repositories and user stats on the `/repositories/` page using [github-readme-stats](https://github.com/anuraghazra/github-readme-stats) and [github-profile-trophy](https://github.com/ryo-ma/github-profile-trophy).
|
||
|
||
[](https://alshedivat.github.io/al-folio/repositories/)
|
||
|
||
To configure which repositories and GitHub profiles to display, see [Modifying the user and repository information](CUSTOMIZE.md#modifying-the-user-and-repository-information) in [CUSTOMIZE.md](CUSTOMIZE.md).
|
||
|
||
---
|
||
|
||
#### Theming
|
||
|
||
**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](CUSTOMIZE.md#changing-theme-color) and [Customizing fonts, spacing, and more](CUSTOMIZE.md#customizing-fonts-spacing-and-more) in [CUSTOMIZE.md](CUSTOMIZE.md).
|
||
|
||
---
|
||
|
||
#### Social media previews
|
||
|
||
**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](CUSTOMIZE.md#social-media-previews) in [CUSTOMIZE.md](CUSTOMIZE.md).
|
||
|
||
---
|
||
|
||
#### Atom (RSS-like) Feed
|
||
|
||
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`
|
||
|
||
---
|
||
|
||
#### Related posts
|
||
|
||
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](CUSTOMIZE.md#related-posts) in [CUSTOMIZE.md](CUSTOMIZE.md).
|
||
|
||
---
|
||
|
||
#### Code quality checks
|
||
|
||
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:
|
||
|
||
- [Prettier](https://prettier.io/) - check if the formatting of the code follows the style guide
|
||
- [lychee](https://lychee.cli.rs/) - check for broken links
|
||
- [Axe](https://github.com/dequelabs/axe-core) (need to run manually) - do some accessibility testing
|
||
|
||
We decided to keep `Axe` runs manual because fixing the issues are not straightforward and might be hard for people without web development knowledge.
|
||
|
||
---
|
||
|
||
#### GDPR Cookie Consent Dialog
|
||
|
||
**al-folio** includes a built-in, GDPR-compliant cookie consent dialog to ensure your website respects visitor privacy. The dialog is powered by [Vanilla Cookie Consent](https://cookieconsent.orestbida.com/) 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](#gdpr-cookie-consent-dialog) in [CUSTOMIZE.md](CUSTOMIZE.md).
|
||
|
||
## FAQ
|
||
|
||
For frequently asked questions, please refer to [FAQ.md](FAQ.md).
|
||
|
||
## Contributing
|
||
|
||
Contributions to al-folio are very welcome! Before you get started, please take a look at [the guidelines](CONTRIBUTING.md).
|
||
|
||
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.
|
||
|
||
### Maintainers
|
||
|
||
Our most active contributors are welcome to join the maintainers team. If you are interested, please reach out!
|
||
|
||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||
<!-- prettier-ignore-start -->
|
||
<!-- markdownlint-disable -->
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<td align="center" valign="top" width="14.28%"><a href="https://maruan.alshedivat.com"><img src="https://avatars.githubusercontent.com/u/2126561?v=4" width="100px;" alt=""/><br /><sub><b>Maruan</b></sub></a></td>
|
||
<td align="center" valign="top" width="14.28%"><a href="https://rohandebsarkar.github.io"><img src="https://avatars.githubusercontent.com/u/50144004?v=4" width="100px;" alt=""/><br /><sub><b>Rohan Deb Sarkar</b></sub></a></td>
|
||
<td align="center" valign="top" width="14.28%"><a href="https://amirpourmand.ir"><img src="https://avatars.githubusercontent.com/u/32064808?v=4" width="100px;" alt=""/><br /><sub><b>Amir Pourmand</b></sub></a></td>
|
||
<td align="center" valign="top" width="14.28%"><a href="https://george-gca.github.io/"><img src="https://avatars.githubusercontent.com/u/31376482?v=4" width="100px;" alt=""/><br /><sub><b>George</b></sub></a></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<!-- markdownlint-restore -->
|
||
<!-- prettier-ignore-end -->
|
||
|
||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||
|
||
### All Contributors
|
||
|
||
<a href="https://contrib.rocks">
|
||
<img src="https://contrib.rocks/image?repo=alshedivat/al-folio&max=500&columns=24" />
|
||
</a>
|
||
|
||
## Star History
|
||
|
||
<a href="https://star-history.com/#alshedivat/al-folio&Date">
|
||
<picture>
|
||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=alshedivat/al-folio&type=Date&theme=dark" />
|
||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=alshedivat/al-folio&type=Date" />
|
||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=alshedivat/al-folio&type=Date" />
|
||
</picture>
|
||
</a>
|
||
|
||
## License
|
||
|
||
The theme is available as open source under the terms of the [MIT License](https://github.com/alshedivat/al-folio/blob/main/LICENSE).
|
||
|
||
Originally, **al-folio** was based on the [\*folio theme](https://github.com/bogoli/-folio) (published by [Lia Bogoev](https://liabogoev.com) and under the MIT license). Since then, it got a full re-write of the styles and many additional cool features.
|