← Projects

Sunset IOU

A small high-school project for tracking shared fast-food orders and who owed money to whom.

Sunset Boulevard, the Danish fast-food chain, used to have a membership where you could get 50% off orders for yourself and your friends. In my class, one person had the membership, and we would usually drive down to pick up the food, and then came the annoying part: figuring out who had ordered what, who had paid, and who still owed money.

We started with a Google Sheet, but it was easy to make manual errors. It was not always clear who had ordered what, and people often forgot pant, the Danish deposit paid on bottles and cans. So for the final project in our high-school intro programming class, Sebastian Holm Bangsø and I built Sunset IOU.

It was literally a local Flask server that we would start about an hour before lunch. People could open the site, enter what they wanted, and then the person ordering at Sunset had an overview page showing what each person wanted and how much they owed. It included pant, rounded totals in favour of the person who paid, and added a small compensation for gas money, since it was often the same people who had access to a car.

Technically, it was a mess. The UI was ugly, the menu was typed manually into a SQL database, and the backend mixed raw SQL with some ORM-like library in ways I definitely would not recommend now. I also remember seeing threading errors that I did not understand at all. The code is now lost to the void on an old student account.

But it worked. More importantly, it was actually used by my class for quite a while, until we stopped going to Sunset or eventually graduated. Looking back, I like it because it was an early version of something I still enjoy: taking a small, annoying coordination problem and making a tool that real people can use, even if the first version is far from perfect.

What it did

  • Let classmates enter lunch requests through a local web app
  • Tracked what each person ordered and how much they owed
  • Included pant in the settlement
  • Rounded totals to favour the person taking payment risk
  • Added a small gas-money compensation for the driver

Tech

  • Python
  • Flask
  • SQL
  • A very questionable database setup