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.
There are a number of ways to approach local development, and none of the suggested steps are strictly required. The key moving parts are:
- A Postgres server
- Astral's
uvmanaging Python & a virtualenv - Node for management of the frontend
Homebrew & asdf are just suggested ways to manage dependencies for local dev.
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 --watchhttp://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 wsYou 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 runThis 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.









