Skip to content

Commit 4b65991

Browse files
authored
Initial commit
0 parents  commit 4b65991

25 files changed

Lines changed: 3719 additions & 0 deletions

.github/workflows/webpage.yaml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
name: Basic personal page generation
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
jobs:
14+
15+
build:
16+
17+
runs-on: ubuntu-latest
18+
19+
env:
20+
fail-fast: true
21+
22+
steps:
23+
24+
- name: Checkout code
25+
uses: actions/checkout@v4
26+
with:
27+
fetch-depth: 1
28+
29+
- name: Build main homepage
30+
uses: docker://pandoc/core:3.2
31+
with:
32+
args: >-
33+
--standalone
34+
--from commonmark_x+alerts
35+
--output=website/index.html
36+
--template=pandoc/template.html4
37+
--css=style.css
38+
--toc
39+
--toc-depth=1
40+
--resource-path=.
41+
--lua-filter=pandoc/paper.lua
42+
--lua-filter=pandoc/date.lua
43+
src/index.md
44+
45+
- name: Setup Pages
46+
if: github.ref_name == github.event.repository.default_branch
47+
uses: actions/configure-pages@v3
48+
- name: Upload artifact
49+
if: github.ref_name == github.event.repository.default_branch
50+
uses: actions/upload-pages-artifact@v3
51+
with:
52+
path: 'website'
53+
- name: Deploy to GitHub Pages
54+
if: github.ref_name == github.event.repository.default_branch
55+
id: deployment
56+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
.DS_Store
3+
4+
website/index.html

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2024 basicpage
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

Makefile

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
.PHONY: website
2+
3+
website:
4+
pandoc --standalone \
5+
--from commonmark_x+alerts \
6+
--output=website/index.html \
7+
--template=pandoc/template.html4 \
8+
--css=style.css \
9+
--toc \
10+
--toc-depth=1 \
11+
--resource-path=. \
12+
--lua-filter=pandoc/paper.lua \
13+
--lua-filter=pandoc/date.lua \
14+
src/index.md

README.md

Lines changed: 232 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
# basicpage.github.io
2+
3+
**Template for a basic academic page that is ready to use and easy to customise.**
4+
5+
<img width="1440" alt="Screenshot 2024-11-02 at 19 39 34" src="https://github.com/user-attachments/assets/34d4b1f7-3212-4081-b9aa-ded0d0963d89">
6+
7+
It is also **responsive** by default!
8+
9+
<img width="334" alt="Screenshot 2024-11-02 at 19 43 24" src="https://github.com/user-attachments/assets/d5efbc5b-0385-4640-9397-563396400c55">
10+
11+
It relies on [FontAwesome](https://fontawesome.com/) and [Academicons](https://jpswalsh.github.io/academicons/) to display nice icons.
12+
13+
It is close in style to
14+
[academicpages](https://github.com/academicpages/academicpages.github.io)
15+
but is entirely independent.
16+
17+
## Getting started
18+
19+
- [Create a Github account if you don't have one.](https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F&source=header-home)
20+
- Click on [Use this template](https://github.com/new?owner=basicpage&template_name=basicpage.github.io&template_owner=basicpage)
21+
and then create a new repository called `[your username].github.io`, a bit
22+
like this repo is called `basicpage.github.io`. This will also be the address
23+
of your website.
24+
25+
> [!NOTE]
26+
> If you don't have Github Pro (which you can get with the students programme)
27+
> then your repository must be public for it to work.
28+
29+
- Now go to the repository "Settings" then click "Pages" on the left and select
30+
"Github Actions" instead of "Deploy from a branch" for "Source".
31+
32+
<img width="837" alt="Screenshot 2024-11-27 at 16 51 07" src="https://github.com/user-attachments/assets/7219187c-7370-42dd-a9cf-c7559072b42f">
33+
34+
<img width="304" alt="Screenshot 2024-11-27 at 16 52 45" src="https://github.com/user-attachments/assets/9af6698f-2c47-422f-8dff-61ee3629089e">
35+
36+
<img width="243" alt="Screenshot 2024-11-27 at 16 52 59" src="https://github.com/user-attachments/assets/ac68143a-8e3b-4cca-9030-ae0af77d898f">
37+
38+
39+
- Fill the contents of `index.md` to your liking and it should just work.
40+
41+
## Options
42+
43+
The `index.md` file starts with a header. All the items in it are optional.
44+
For instance, if you remove the line
45+
```yaml
46+
picture: img/profile.png
47+
```
48+
then the website will no longer contain a picture.
49+
We think it's better to have a picture, but it's your choice.
50+
51+
The same goes for email and so on.
52+
53+
We give the semantics of the various fields (all of whom are optional).
54+
55+
### General
56+
57+
- `title`: Title for your page, it will appear in the tab (metadata).
58+
59+
- `author`: Typically your name. It will appear in the page and as metadata.
60+
61+
- `shortbio`: Some form of subtitle where you can present yourself in a few
62+
words. It will appear below your name.
63+
64+
- `email`: Your email. It will appear next to an envelope in monospace font.
65+
66+
- `location`: Information about your location (university, office, …).
67+
It will appear next to a pin icon.
68+
69+
- `picture`: A path (relative or absolute) to the profile picture.
70+
71+
- `picture-round`: A Boolean (`true` or `false`) deciding whether your profile
72+
picture is rounded or left as a square.
73+
By default, it is square.
74+
75+
- `side-by-side`: A Boolean deciding whether the picture and the rest of the
76+
header are side by side on larger screens.
77+
By default, it's all on top of each other, like on smaller screens.
78+
79+
- `pronouns`: A string to show your pronouns.
80+
81+
- `footer`: Some data to put in the footer of the page. You can use it to put
82+
some disclaimer, or maybe to advertise basicpage. ☺️
83+
If nothing is provided, then the footer doesn't appear, and thus the
84+
horizontal that precedes is will not show either.
85+
86+
### OpenGraph
87+
88+
OpenGraph carries information that used by social media and messaging app to
89+
display your links *nicely*, typically with the picture and a small
90+
description.
91+
92+
- `description-meta`: Description of the page to appear in the metadata
93+
and in the OpenGraph data.
94+
95+
- `og-url`: This should be a full URL (starting with `http` or `https`) to your
96+
website. This is required by the format.
97+
98+
- `og-picture`: A full URL (starting with `http` or `https`) linking to a
99+
picture to display.
100+
101+
### Social and academic accounts
102+
103+
- `orcid`: Your ORCID number (in the shape `0000-0000-0000-0000`).
104+
105+
- `dblp`: *URL* to your DBLP page.
106+
107+
- `scholar`: *URL* to your Google Scholar page.
108+
109+
- `hal`: *URL* to your HAL page.
110+
111+
- `github`: Username to your Github account.
112+
113+
- `gitlab`: Username to your Gitlab account.
114+
115+
- `bitbucket`: *URL* to your BitBucket account.
116+
117+
- `mastodon`: *URL* to your Mastodon account.
118+
119+
- `bluesky`: *URL* to your BlueSky account.
120+
121+
- `linkedin`: *URL* to your LinkedIn account.
122+
123+
## Papers
124+
125+
We provide some tools to input your publications and drafts either in JSON
126+
or YAML formats.
127+
128+
For instance:
129+
````markdown
130+
``` yaml {.paper}
131+
title: Yet another yaml parser 3
132+
authors: Templato Urnehm
133+
venue: Proceedings of Nihilism
134+
url: https://basicpage.github.io
135+
year: 2029
136+
files:
137+
- text: Paper
138+
type: pdf
139+
scr: foo.pdf
140+
- text: Bibtex
141+
type: bib
142+
src: foo.bib
143+
```
144+
````
145+
146+
or
147+
148+
````markdown
149+
```json {.paper}
150+
"title": "Towards automatic academic pages",
151+
"authors": "Templato Urnehm, U. N. Owen",
152+
"venue": "Principles of Awesomeness (PAW)",
153+
"year": "2023",
154+
"url": "https://basicpage.github.io",
155+
"files": [
156+
{ "text": "Paper", "type": "pdf", "src": "foo.pdf" },
157+
{ "text": "Bibtex", "type": "bib", "src": "foo.bib" },
158+
{ "text": "Formalisation", "type": "code", "src": "foo.v" }
159+
]
160+
```
161+
````
162+
163+
> [!WARNING]
164+
> Make sure to respect JSON syntax, in particular place commas where they are
165+
> needed, and only there. Test locally before you push.
166+
167+
> [!TIP]
168+
> You can input multiple files at once by using `papers` (with an `s`) instead
169+
> of `paper`. In that case, papers must be bracketed properly, and the way to do
170+
> so differs in YAML and JSON.
171+
> Have a look at `index.md` to see how it's done.
172+
173+
The file that handles papers is `pandoc/paper.lua` and you may modify it to suit
174+
your needs. Currently, it expects the fields `title` and `authors` (it will
175+
assume them to be empty otherwise), while the other fields (`venue`, `year`,
176+
`url` and `files`) are optional.
177+
178+
- `title`: Title of your paper. Will be used as header of the block.
179+
- `authors`: List of authors.
180+
- `awards` (optional, string or list of string): Award(s) that your paper may
181+
have received.
182+
- `venue` (optional): Journal or conference.
183+
- `year` (optional): Date of the conference, if present it is going to be in
184+
parentheses after the venue (unless the venue is absent in which case it
185+
will be alone on its line without parentheses). A more precise date is
186+
possible, in the end this is just treated as a string.
187+
- `url` (optional): If present, the header will also be a link pointing to the
188+
provided URL.
189+
- `files` (optional): A list of files that will be presented as links on one
190+
line with an icon depending on the file type.
191+
Each item must contain the following fields that will be assumed empty if
192+
absent:
193+
+ `text`: Text that will appear.
194+
+ `src`: URL to the file, it can be local.
195+
+ `type`: Type of file. If no value is present, then the icon will be that of
196+
an undifferentiated file.
197+
The possible values are:
198+
* `pdf`
199+
* `bib`
200+
* `code`
201+
* `video`
202+
* `txt`
203+
* `img`
204+
* `zip`
205+
* `slides`
206+
* `link`
207+
* `git`
208+
209+
## Updating the HTML template
210+
211+
The `pandoc/template.html4` file contains an HTML template which you can edit
212+
to suit your taste. Any variable mentioned in the header of your `index.md` can
213+
be moved around, and you can even add your own.
214+
215+
There is also a special filter called `pandoc/date.lua` which produces an extra
216+
variable called `date` (unless it is already provided in the header) that is
217+
currently used in the footer of the template to indicate the last time the page
218+
was generated.
219+
220+
> [!NOTE]
221+
> It will only appear in the footer if the `footer` variable is set.
222+
223+
## Sharing files
224+
225+
Anything you put in the `website` directory will be available online too.
226+
For instance, you can add PDF of your papers and so on and then link them
227+
(or not) from `index.md`.
228+
229+
## Authors
230+
231+
- Yannick Forster
232+
- Théo Winterhalter

pandoc/date.lua

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
function Meta(m)
2+
if m.date == nil then
3+
m.date = os.date("%e %B %Y")
4+
return m
5+
end
6+
end

0 commit comments

Comments
 (0)