Cranworth Law Society Website

Web App

I created a web application using Django to serve Downing College's Cranworth Law Society website.

The Challenge

Downing College is widely known as Cambridge’s “Law College”, with more law students than almost any other college, and a number of high-profile law fellows. Downing has its own law society, named Cranworth, which organises talks and helps students find success in their careers.

The society president wanted a website to serve as a repository for important information and recruitment data, with access restricted to only the society’s members.

The Problem

The natural solution would be to use a more generic CMS, such as WordPress or Joomla, however there are some issues with this. The website’s main purpose is to hold information about law firms - this information is held in a specific format (e.g. with attributes ‘logo’, ‘description’, ‘category’), and this information must be easily updatable, ideally without changing the plain text to ensure consistency.

Restricting access to users authenticated with Raven is fairly easy with Apache plugins, however specifying a smaller subset of allowed users, and allowing this list to be easily edited by a law student, is somewhat more challenging.

Given previous experience, I concluded that a Django app would be the best way to proceed.

The UX

Users are first invited to log in using Raven. If they are registered as a society member, they are met with the homepage; else a suitable error message is shown.

Users can view a list of all firms, and sort this list by category. Clicking on a firm brings up the firm detail page, which includes important information, as well as reviews which previous interns/employees have left of this firm. Static pages are generated automatically. Featured firms for the homepage are randomised dynamically.

The Stack

The web application backend was developed using Django, because it’s quite nice, and the UI is built using Bootstrap. To enable students to log in with their Cambridge-issued Raven credentials, django-ucamwebauth is used as an authentication backend. The Django backend connects to a MySQL instance, and is deployed to the SRCF’s webserver ‘sinkhole’ using uwsgi and a series of Apache RewriteRules to enable reverse-proxy to a local port. The Python backend executes in a Python 3.5 virtualenv.

My Projects

Downing JCR RBS

Web App

The Downing JCR RBS is a web app to manage Downing College's yearly student-run room ballot.

Read More

May Ball App

Native Mobile App

I created a native mobile application for iOS and Android for Downing College's 2019 May Ball.

Read More


Web App

I created a web application using Django to serve Downing College's Cranworth Law Society website.

Read More