Skip to content
This repository was archived by the owner on Nov 30, 2025. It is now read-only.

Design Decisions

River Stanley edited this page Jan 7, 2023 · 1 revision

This document is to help explain some of the design decisions made in this project.

General principles

Some major themes are present throughout most of the website decisions:

  • Long lifespan: We want this site to be long-lasted - this is the third version of the website to be built in the past three years.
  • Maintainability: In the interest of this site having a long lifespan, it must be maintainable.
  • Low developer barriers to entry: We want new developers to be able to quickly and easily become familiar with the website so that they are able to maintain it. Previous versions of the website, including the Wordpress version, have not been easily accessible for developers to understand.

Languages / Frameworks

Why not just write the site in basic HTML/CSS?

Using templating engines like pug allows us to use design principles like Single Responsibility to keep our code cleaner and more maintainable. In particular, templating engines allowing iteration and mixins will allow us to cut down the size of page files substantially.

Why not use a major framework, such as React?

There are numerous reasons why major frameworks were not chosen.

  • A major framework creates barriers to new developers, which we are trying to avoid.
  • A major framework is somewhat overkill for a mostly-static site such as this one.
  • If a major framework we chose became outdated, we would have to redevelop the site again.

Why use Pug?

Pug gives us the benefits of a templating engine, but is simple enough to avoid the downsides of major frameworks. It has also been successfully used in the past by the Pure Math Club.

Why is data stored in JSON rather than on a SQL database?

Given the fairly primitive nature of our data, it isn't worth hosting an entire SQL database when we can instead use simple text files.