Table of contents

General principles

This website's graphical architecture is inspired by the principles of Brad Frost's Atomic Design. This method distinguishes five levels of graphic organisation:

Page
The “highest” graphical organisation level is the “page”, which corresponds to the conjunction of every other organizational elements to form a whole unit on which user experience can be measured.

Example: In this website, a “page” typically corresponds to an HTML document associated to a specific route.

Note:

At a “higher” organizational level, we could for instance consider the “website”, just as we could talk about the organization of pages inside a book. However, I consider that these organizational levels “above” that of the “page” are not “graphical”, but require other analytical frameworks.

Template
The “template” prescribes how the different elements are composed in each page.

Example: In our case, the “templates” describe principles such as the position of a navbar on top of the viewport, the presence of links in the footer, and so on. Technically, the “templates” are made possible thanks to Twig's concept of blocks, built with the {extends} instruction.

Organism
An “organism” is a graphical unit of the user interface which gathers multiple functional elements into one coherent group.

Example: the navbar on top of the page, the footer, or the “cards” design.

Molecule
A “molecule” corresponds to one functional unit of the graphical interface, which answers one specific use case.

Example: a line of a form, a button, etc.

Atom
Finally, “atoms” correspond to elementary units of the language (ie. made of a sole HTML element with no children, or with only text nodes), which can be articulated together to form “molecules”.

Example: an <input> field, which can form a molecule when combined with a <label> in a form row.

Templates

Every template for this website are divided in at least 4 main parts:

Navbar
The main navigation is fixed on top of the viewport, in order to always be accessible (except for specific clients such as printers).
Header
The page header contains three graphical organisms:
  1. a breadcrumb to locate the page in relation to the larger architecture of the site
  2. a banner with the title of the page and a short, optional description
  3. the outline linking to the main sections of the page.
Main content
The body of the page is made of multiple <article> elements. They must be identified by a <h2>–<h6> element. They can also be <section> elements. The template for each page adapts the form and content of these elements to fit the page's requirements.
Footer
The footer contains useful links and legal obligations.

These elements form a basis, from which the template of each page can be built. Titles of each article composing the page are automatically added to the outline with JavaScript.

Organisms

Navbar

The main navigation menu is divided in two sub-parts:

Brand
The website's brand with a link to the home page.
Contents
The actual menu, which contains the list of main links, but also action menus to access different translations.

The navbar can take different forms depending on the viewport's size.

  • On small screens, the actual menu is hidden by default, and will only be display when the toggle is checked on. Then, the menu will occupy the whole viewport, sticking the action menu in the bottom.
  • On larger screens, the menu is displayed on one row, with dropdown menus unfolding just below it, and the action menu right-aligned.

Example:

Breadcrumb

The breadcrumb displays links to the sections the current page belongs to. It is a succession of links with automatically added pseudo-elements to indicate the dependence relation.

Example:

Banner

A banner displays an image below some content, with a semi-transparent background to give some contrast in order to keep the content legible.

Example:

Outline

The outline contains links to the main sections of the page (ie. the <article> elements containing a <h2> title)

Example:

Cards

A card is an element with a header, a main content, and sometimes a section listing actions, which takes the form of small cards which can be placed next to each other.

Example:

Quibusdam aut eos exercitationem eos consequatur. Corporis quo et qui quia earum commodi. Suscipit et veniam similique sunt sed occaecati dolorem. Harum facilis repellendus ut consectetur qui corporis officia. Ratione reiciendis cumque id ullam aut et rerum.

Corrupti officiis labore molestiae est ea et

Odit soluta veritatis ut est esse quaerat.

Non est magni qui debitis sunt nisi enim doloribus. Est ex expedita sint. Consequatur tenetur ad qui quaerat sed placeat aut. Reprehenderit non voluptatum fuga ullam dolores quo odit.

Id libero officia tenetur necessitatibus est vel. Facere quaerat qui aut. Culpa voluptate omnis quia sed architecto est eum. Ullam aperiam ipsa autem tempore ipsum earum sed.

Timelines

Displays a sequence of chronologically-organized sections.

Example:
2026—2027

Dolores dolores sint

Mollitia rerum

Esse repudiandae occaecati porro doloribus quia consequatur rem dolores. Exercitationem tempore et ea tempore. Sapiente quis voluptatum minima non.

Dicta doloremque voluptatem quidem enim et nihil. Sed architecto doloremque porro velit. Beatae quidem sed at ullam eos saepe ratione. Pariatur inventore ea et aliquam accusamus ut repellat.

Sint doloribus temporibus ut temporibus praesentium voluptates omnis. Quae assumenda error ducimus ut unde voluptate. Facilis dolore aut ea maiores ad error. A deserunt voluptatem aperiam ullam est vel.

Commodi vitae dolor est non autem temporibus est. Harum ea qui quis iure. Voluptates eos quaerat libero.

2025—2026

ab nihil natus

Voluptas dignissimos quo et nemo culpa

Et autem perspiciatis et. Consequatur praesentium laboriosam repellendus autem. Rem recusandae aut deserunt quis corporis et esse.

Quibusdam illum quia itaque quo aperiam. Eligendi et blanditiis occaecati et quia. Aspernatur quia ut eligendi eaque nihil praesentium et.

Saepe quisquam quae eaque itaque quia velit. Velit ad et nostrum in sit error. Autem perspiciatis vel sed aut voluptas. Deleniti odio quas aliquid consectetur omnis ducimus dolorum.

Laboriosam eum perferendis qui omnis tempore nihil provident. Illo sint omnis at aut. Sed ut exercitationem est similique perferendis porro.

2024—2025

Omnis ea commodi tempore molestiae quos earum. Non vel quos voluptatem sit a sapiente id.

Delectus nihil exercitationem velit odio. Et optio molestias quia omnis provident qui. Nam est in labore recusandae eveniet ipsa.

Dignissimos nisi iusto quas nihil ad dolore. Labore incidunt aut qui enim. Consequatur labore provident labore sint cumque suscipit quis.

Incidunt corrupti recusandae repellat quisquam qui autem. Quia nihil ut occaecati modi a vel. Totam quod unde molestias et nostrum. Numquam vel in quod aliquid perferendis. Explicabo accusantium natus culpa cupiditate a itaque.

Fugit ratione magnam possimus ratione officia velit quibusdam modi. Quae ullam assumenda et vitae nam similique.

Molecules

Forms

.form-row

One row of a form, which contains the actual input as well as helper elements (<label>, etc.), and which occupies the whole width of the container.

Example:
.btn

An element taking the shape of a button (whether it is a <button> or a <a> or any other interactive element).

Example: sint doloremque velit qui
.btn.form-row
Example: et facilis fuga eos

Atoms