Skip to content

About

The MIT Outing Club's trip management system

Topics

Resources

Stars

47 stars

Watchers

6 watching

Forks

Repository files navigation

Build Status Code Coverage

About

This is a Django-based trip management system for the MIT Outing Club.

MITOC's volunteer leaders craft trips to take participants climbing, hiking, biking, skiing, mountaineering, rafting, canoeing, and surfing. Trips are open to everyone in the club - a community of thousands.

Development

There are a number of ways to approach local development, and none of the suggested steps are strictly required. The key moving parts are:

  1. A Postgres server
  2. Astral's uv managing Python & a virtualenv
  3. Node for management of the frontend

Homebrew & asdf are just suggested ways to manage dependencies for local dev.

Docker

First, install Docker, Docker Compose, and either Docker Desktop or Colima. If you use Homebrew:

brew install docker docker-compose colima
colima start

Then start the database & web server:

docker compose up --build --watch

http://localhost:8000/ will then have a running webserver. You can access the Postgres database directly:

docker exec -it mitoc-trips-db-1 psql -U ws ws

Local development

You don't have to use Docker - all development can take place directly on your localhost if desired:

brew bundle install
direnv allow # (Don't just trust me - inspect .envrc)
export PATH="${$HOME}/.asdf/shims:$PATH"  # (Also add to your rcfiles)
asdf install
npm install
uv run manage.py migrate
make run

Screenshots

Profile page

Profile page

Account management

Email address management

Leader application

Submitted application

Pending applications

Activity chairs can review applications

Reviewing applications

Application under review

Trip view

An activity chair's view of a trip

Administering a trip

Trip administration view

Adding a participant

Participant being added to a trip

Interactive leaderboard

Interactive D3-based widget showing active leaders

Help pages

Help pages guide users

This site was created in 2014 to improve MITOC's Winter School program. It has since evolved into the central portal for all MITOC trips.

Once upon a time, Winter School trips operated on a first-come, first-serve basis. Signups opened at noon, and filled up extremely quickly. Many participants found themselves unable to attend any trips in a given weekend, and others struggled to gain exposure to new activities.

We introduced a lottery system to combat the "fastest gun in the West" problem. Instead of rewarding trip slots to whomever could sign up the fastest, we used an equitable algorithm to distribute trip slots. As a result of this new algorithm, we saw unprecedented levels of participation. Everyone who expressed interest in attending weekend trips was placed on a trip, and popular activities like ice climbing were more accessible.

Today, all MITOC trips are organized through this portal. Many trips are first-come, first-serve, but we use lottery-based signups for other popular trip formats once subject to same problems as Winter School.

About

The MIT Outing Club's trip management system

Topics

Resources

Stars

47 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages