The website is built using Quarto, an open-source scientific and technical publishing system. Before building the webpage, make sure to install the Quarto CLI on your system, by following the instructions on the Quarto website. You also need a working Python installation.
To build the webpage:
- Run
pip install -r requirements.txtfrom the root folder to install Python dependencies - For development, run
quarto previewin the root folder. A brower will open tolocalhost:12800. This uses hot reloading, so whenever any file is changed the webpage will reload - For deployment, run
quarto render. The generated webpage is created in the_sitefolder
For loading performance, consider converting image files to .webp format using, for example, ImageMagick.
File formats and tools used in the webpage:
- YML: Both used for configuration and data files
- SCSS: Style sheets
- EJS: Templating language to turn files/YML into HTML
- Bootstrap: Layout for the webpage
assets: Assets used globally for the webpage itselfassets/images: General folder for images. Images should have a naming scheme of separating individual words using_. If multiple images are present for a single name,-1,-2, etc are appended. If a specific image variant is used (black, white, color, ...) it is separated with--, for examplelogo--white.webpassets/images/banner: Images used for the hero banner section. Images in this folder should be of the aspect ratio φ:1 (1.61803398874989:1)assets/images/carousel: Images that are automatically rotated through in the main page carouselassets/images/features: Images used on feature pagesassets/images/use-cases: Images used on the use-cases pageassets/images/user-meetings: Images used on user meeting pages
assets/brand: Brand assets (logos, wordmarks) for OpenSpace and partner institutionsassets/js: JavaScript files used by the webpageassets/style: SCSS style files used for the webpageassets/team: Profile images and information about team membersassets/listing: Different listings that are used to generate content on different pages. Each.ymlin this folder is named after the webpage on which it is usedassets/videos: Video assets used on the webpage
community/events: A list of events that will automatically be added to the events page. Each event should be in a subfolder that has anindex.qmdresources: Resources that are provided by the webpage for external use_template: Partial pages that are included or EJS file templates used by other pages_announcement.yml: Configuration file to control a top-level announcement banner_footer.yml: Configuration file to control the information provided in the footer_navbar.yml: Configuration file to control the top navigation bar_sidebars.yml: Configuration file to control per-page sidebars_quarto.yml: Root configuration file for Quarto404.qmd: Special 404 page that gets displayed when someone navigates to a page that doesn't existindex.qmd: Root page
Below are details of shortcodes for adding dynamic content to the webpage.
Use the following information in the frontmatter of index.qmd to update the announcement banner on the front page:
announcement:
label: 2026 OpenSpace User Meeting · Norrköping, Sweden
date: "2026-08-26T09:30:00+02:00"
action:
text: Register
link: community/user-meetings/2026/
show: trueThis adds an event banner counting down to the event date and linking to the specified page. To hide the banner, set show: false.
More information about this shortcode can be found in _extensions\openspace\shortcodes\announcement-banner.lua.
- Resize profile image to 500x500 pixels
- Copy profile image into the correct subfolder in
assets/team. The first two characters should be a sequence number within that folder - Add the new person to the
assets/team/team.yml
- Move profile image from the current folder in
assets/teamto the-previousversion - Update the profile image file name to have the correct sequence number. We try our best to have previous members ordered based on their seniority; longer time in the project -> lower number
- Move the persons entry in the
assets/team/team.ymlto the current group, updatetypeandimageentries