summaryrefslogtreecommitdiff
path: root/index.md
blob: 14a563325d90b25f02dd5a003694a992a5a9807a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
---
title: "About"
---

# Markdown course website example / template

This is an example of course website written in Markdown.

Inputs:

* Markdown files for both the slides and exercises sheets, all pushed in a
  private git repository.

Outputs:

* A public website with flattened slides and exercises sheets without the
  solutions, for the students.

* A private website with the solutions to the exercises, for the teaching
  staff, at a "secret" address defined in `flake.nix`.

* PDF Beamer presentations for the lectures.
  Those can be downloaded from the website by replacing `.html` with `.pdf` in
  the URL.

* PDF exercise sheets, with and without solutions, for printing for work
  sessions without a computer.
  Those can be downloaded from the website by replacing `.html` with `.pdf` in
  the URL.


## Links

- Deployed site:
  - Public (for students):
    <https://pacien.gitpages.univ-eiffel.fr/markdown-course-website>
  - Private (with exercise solutions, for the teachers):
    <https://pacien.gitpages.univ-eiffel.fr/markdown-course-website/topsecret>

- Source repository:
  <https://gitlab.univ-eiffel.fr/pacien/markdown-course-website>


## Behind the scene

Pandoc is the engine used to process and compile the Markdown source files into
HTML and PDF through LaTeX. This engine allows easy transformation of the
Abstract Syntax Tree of the processed documents, which is used to strip the
solutions from the public exercises sheets for example.

Quarto is used to generate the website with page navigation and search. Its
more advanced features such as code execution aren't used here.

Nix is used to manage the build process and its dependencies. Everything is run
within a controlled sandbox, which can be run locally or remotely in a
reproducible manner.

The GitLab platform is used to host the git source repository. The website and
PDFs are automatically built for each push through GitLab CI. The website in
particular is hosted and published, and updated automatically using GitLab
Pages.


## References

- [Markdown syntax](https://daringfireball.net/projects/markdown/syntax)
- [Pandoc (manual)](https://pandoc.org/MANUAL.html)
- [Quarto (reference)](https://quarto.org/docs/reference/index.html)
- [Nix guides](https://nixos.org/learn.html)
- [GitLab CI configuration reference](https://docs.gitlab.com/ee/ci/yaml/)