Skip to content

Student Development

Alexander Refsum Jensenius edited this page Jul 4, 2026 · 1 revision

The MishMash website doubles as a development playground for students — see Web Philosophy for why. There are two main tracks: frontend (alternative UIs) and backend (automation and data). Work is coordinated through the MishMash website project.

Getting set up

git clone https://github.com/MishMash-Norway/mishmash-web.git
cd mishmash-web
bundle install                          # Jekyll
bundle exec jekyll serve --livereload   # → http://127.0.0.1:4000

# backend work also needs:
python3 -m venv venv && source venv/bin/activate
pip install -r scripts/requirements.txt

Frontend: alternative UI themes

Each group builds a theme in themes/<group-name>/ that shadows files in site/ at build time — override one CSS file or redesign every layout, and everything you don't override falls back to the real site. The production site is never affected.

./scripts/ui new group-a        # scaffold your theme
./scripts/ui serve group-a      # run the site with your UI (livereload)
./scripts/ui serve techy        # try the demo themes: example, techy, artsy
./scripts/ui serve default --port 4001   # the original, side by side

Full guide: themes/README.md in the repository. If your theme overrides _layouts/default.html, keep the page.adaptive blocks so adaptive pages (Adaptive Content) keep working.

Backend: automation and data

The Python scripts in scripts/ sync the directory from NVA/ORCID, fetch partner news/events, normalise tags, process images, and validate everything (Scripts and Automation). Good starting points for student projects:

  • Wikidata connector — resolve people/institutions to Wikidata IDs and pull facts from there (see the roadmap in Web Philosophy)
  • Wikimedia Commons images — source openly licensed portraits and event photos
  • Readability checks — measure whether the adaptive reading levels (Adaptive Content) actually differ, e.g. LIX scores per variant in CI
  • New data sources — more partner feeds, conference calendars, funding databases
  • JSON endpoints — expose directory/results data for external apps (the site already generates search.json)

Conventions for scripts: use the helpers in scripts/directory_io.py and scripts/repo_paths.py; add a test_*.py next to your script; never commit credentials (see config/README.md).

House rules (both tracks)

  1. Work on a branch, submit a pull request. main deploys straight to mishmash.no; the Web Quality Checks workflow must pass before merge.
  2. Keep your work in your area — your theme folder, or your script plus its tests. Changes to shared files (site/_layouts/, site/assets/css/custom.css, sync scripts) need discussion in the PR.
  3. Styling lives in CSS files, not inline styles. Layout markup uses classes (.wp-dropdown, .adaptive, …) styled from site/assets/css/.
  4. Directory entries are folders with index.md, a slug matching the folder name, and a permalink: /<section>/<slug>/ — the validator enforces this.
  5. Cross-links by slug, not path (university-of-oslo, not /institutions/university-of-oslo/).
  6. Validate before pushing:
bundle exec jekyll build --trace
bundle exec htmlproofer ./_site --disable-external --no-enforce-https
python3 scripts/validate_directory.py

Where to ask

Open an issue in the repository, or contact the website project team via the project page.

Clone this wiki locally