Welcome to the Penn Labs Backend Web Challenge! The purpose of this challenge is to help us get a better understanding of your abilities working on problems that backend developers at Penn Labs deal with in their work. Throughout this project, you will:

  1. Scrape data from an online resource.
  2. Design a data model to logically represent this data server-side.
  3. Implement a REST API allowing outside users to interact with the data you've collected and modeled.
  4. Surprise us! The last part of the project will have you implementing a new feature of your choice.

There's many things we're looking for as part of the technical, but here's some aspects of software engineering that we find important:

Background


This semester we released Penn Clubs, a new way for students to discover clubs and student organizations at Penn. In this challenge, you will be writing the backend for a simplified version of Penn Clubs called "Penn Club Review". We will give you access to a git repository for the project. Treat this assignment as if there are other developers who work on the same codebase.

We will provide starter code to you in Python with the Flask web framework. This challenge will primarily be evaluated by overall correctness and project design, but it's important to stress that it's okay if not everything works 100%.

If you are not super familiar with Flask, that's alright! To below is an introduction to some basic features of Flask that will be helpful for the challenge. Some sections which you might find particularly helpful are the ones on Routing and HTTP Methods.

Quickstart - Flask Documentation (1.1.x)

The vast majority of backend services that Penn Labs builds and maintains are written in Python, which is why we recommend using it for this challenge. Feel free to use a different Python web framework, like Django, if you'd like.

If you're much more comfortable with a different programming language, like JavaScript, come talk to us at Office Hours or email [email protected].

Here is a link to the github repository containing the starter Flask code. If you plan on completing the challenge using Flask, please fork this repository and make your changes there. Otherwise, just create a new, public repository and work within that. Remember to please document your changes in your README.md.

The Challenge