Note
As this was a few years ago, the site is now well and truly dead, but see the attached video for a rough usage example!
Inspiration
Being the least at-risk person in my family, I ended up being the person shopping for my family on a weekly basis. Turning up to my local supermarket, I found queues of 30+ on some occasions, but almost nobody there on others. Therefore, it seemed like common sense to implement a system that would balance the load and allow priority shopping for those who need it.
What it does
Once signed up, a user will be offered free slots at a local store near them, at the earliest time possible. Stores will register through the site, telling us their opening and closing times, and how many people they can have in between those times. Our system then intelligently matches people with stores to minimise the waiting time of customers both in getting a slot and queuing to enter when their slot is due.
How we built it
The base of the code is built in Python, as well as the website serving system, which runs Flask. All the processing is done via the Python code, but some frontend systems are done by the HTML and JS code. The database is a PostgreSQL database supplied through Heroku's first-party addon. To host a working demo, we are using Heroku, which currently deploys from a GitHub repository. We also use Twilio for phone number based authentication, to ensure multiple accounts are kept to a minimum per person.
Challenges I ran into
I could sit here for hours typing out the issues we came across with this project. Being first-year student's, ideas such as automatic testing and code abstraction are somewhat new to us, so everything was debugged by hand using good old trial and error. Due to us deploying through Heroku to the web, we often couldn't debug our code on our local machines which made debugging through Heroku logs an absolute hatred of ours.
Accomplishments that I'm proud of
I (Dan) managed to get all the front end working on both mobile and full-scale devices. The QR code scanner was a fun addition to try and get working. Harrison did a lot of work on the PostgreSQL side of things, as well as having the home page map fill its locations dynamically from the database. The login system is as secure as necessary, which taught us both a lot in the way of website security and the pages dynamically fill based on the kind of user logged in.
What I learned
Mainly that HTML is finicky and we like Javascript more than we thought. I'm not sure whether it was just good luck or something but Javascript code seemed to work first time much more often than the Python code did. The skills we learnt from this are uncountable, from better Python programming to front end design with a splash of PostgreSQL in there too. Outside of just the programming, we learnt a lot about teamworking and collaborative coding. Good planning of what we each wanted to do was essential to stop us treading on each other's feet as we programmed, and we found a Trello board to be very useful in keeping us from doing this. Oh, and a Discord call every now and then to discuss the current state of the project is invaluable!
What's next for The Circle
We are going to look at trying to look at deploying this locally, as well as contacting some people at our University to try and get the word out about our system. It is set up to work on a worldwide scale (server capacity permitting) and if people find it useful, it makes sense to try and get some use out of it.
Thanks for reading through!
- Dan & Harrison :)
Log in or sign up for Devpost to join the conversation.