Welcome to the Software Systems Student Society (SSSS) website repo. This project is maintained by the website committee.
To join the committee, go to the SSSS Discord server, find the #what-are-committees, and claim the @website role.
View the live site here: https://sfussss.org/
- Navigate to the issues page in this repository
- Add a new
Issueand give it a clear and concise title and description. Include any other information, images, etc. that may be needed. - Give it an appropriate label
- Thank you for your contribution! The committee may assign the issue as appropriate.
-
Get access to the repository as a contributor by contacting the website committee on our our Discord server
-
Claim a free task from the open issues or suggest a new issue
-
Set up your development environment (terminal instructions):
Quick context:
- Bun is the package manager/runtime used in this repo. You can think of it like npm, but faster.
- Husky runs automatic checks when you commit (for example formatting checks) so bad commits are caught early.
Prerequisites:
- Install Node.js 20+ (recommended LTS)
- Install Bun from bun.sh
a. Clone the repository locally in a folder of your choice
git clone https://github.com/ssss-sfu/ssss-sfu.github.io.gitb. Change directories into the newly cloned project folder
cd ssss-sfu.github.ioc. Install dependencies
bun installHusky hooks are set up automatically after install. If they do not run on commit, run:
bunx huskyd. Set up environment variables
Copy the example file and fill in the values:
Variable Effect NEXT_PUBLIC_SANITY_PROJECT_IDBlog posts (Sanity CMS) NEXT_PUBLIC_SANITY_DATASETBlog posts (Sanity CMS) NEXT_PUBLIC_GOOGLE_CALENDAR_API_KEYThe events calendar on /eventsSANITY_API_READ_TOKENOptional, Server-only -
Ask the website committee lead for the values.
-
The site runs fine without them, but you just get an empty blog and an empty events calendar. If you are not touching either of those, you can skip this step.
-
Quick Reminder: Anything prefixed with
NEXT_PUBLIC_is compiled into the JavaScript that ships to browsers, so never put a secret behind that prefix.
e. Create a new branch from Github Issue UI
[issue-number]-[issue-name]e.g.
121-poc-implement-course-explorergit checkout -b 121-poc-implement-course-explorerThis will create a new branch and check out instantly to that branch. Equivalent with:
git branch kiaanc/read-me-update git checkout kiaanc/read-me-updatef. Run the server locally
bun run devg. View the project in your browser
localhost:3000 -
Start coding!
-
Commit and push your changes
-
Create a pull request with the following format:
Target Branch: master
Title: Clear and descriptive title relevant to the issue
Description: Any relevant information about the changes made
Reviewers:
- smehars (Mehar)
- Wait for one of the reviewers to take a look and make changes or merge accordingly.
Thanks for contributing!
| Command | Effect |
|---|---|
bun run dev |
Starts the dev server on localhost:3000 |
bun run build |
Creates a Production build. Regenerates public/sitemap.xml first, then exports the static site to out/ |
bun run lint |
ESLint |
bun run typecheck |
TypeScript, no emit |
bun run format:write |
Format everything with Prettier |
bun run format:check |
Check formatting without changing files |
- CI runs
format:check,lint,typecheck, andbuildon every pull request. All four have to pass before a PR can merge.
public/ is easy to bloat. Make sure to keep it small:
- Place the file into the right folder: under
public/images/. - Optimise the image from the repo root using:
`node scripts/optimize-images.mjs`
-
This resizes and re-encodes anything over 250KB in place and skips a file if the result would be larger.
-
It cannot tell an original from a file it has already processed, so a second pass re-compresses everything and compounds the artifacts. Currently: If you need to redo an image, recover the original from git history first.
-
Rough targets: exec headshots ~70KB, full-width hero images ~200–800KB.
-
TODO: add image path as an arugment to only optimize a specific image.
| Version | Release Date | Contributors | |
|---|---|---|---|
| ✅ | v6.0 | August 15, 2026 | Mehar Saini |
| v5.0 | March 20, 2026 | Anderson Tseng | |
| v4.0 | September 9, 2023 | Brian Rahadi | |
| v3.0 | August 17, 2021 | Kiaan Castillo | |
| v2.0 | November 17, 2020 | Andy Wang | |
| v1.0 | January 27, 2020 | Amos Ko |
