Inspiration
What's For Dino was an app that displayed the current Goldstein Dining Hall (colloquially known as 'Dino') menu to residents at the UNSW Colleges. When I came to the colleges at the beginning of 2025, the original creator, Ishman Singh, was not living on campus at the time. I maintained the existing app for the year, updating the menus each term and building a wish-list of features, before eventually creating a separate app as a sequel, with Ishman's blessing of course.
What it does
The original What's For Dino contained the most recent menu, in full, for all days in the term. The menu was contained within the app itself, meaning to get a new menu, users needed to update the app. Generally it takes a few days for a mobile app store to accept/push new updates, and a week or two for most users to install the update via automatic updates (assuming most users have automatic updates enabled).
What's For Dino 2 makes the following improvements and additions to the original concept:
- Menus are cached locally, but fetched from a server - users do not need to update the app to receive a new menu, or alterations to an existing menu
- Internally, menus are defined as 3 week cycles as opposed to a large collection of days per term, which is closer to how the dining hall actually operates (i.e. if an item in the cycle changes, this permeates to any time that item occurs (which is at least once every 3 weeks))
- Users can rate items and contribute to a community rating (account-less, votes are verified by install (for this reason votes are unavailable on the web app))
- Users can set notifications for meals (which are scheduled locally, so not 'push notifications' by definition), and be notified at a time of their choosing for when specific meals are available (e.g. 30 mins before the hall opens with the meal, 30 mins after etc.)
- Users can view a catalogue of all meals present in menus across terms, and sort by notifications, name, and community rating (likes - dislikes)
- Users can also change how the menu looks, allowing them to disable all the new bells or whistles, and maximise screen space for nothing but the menu
- Server messages can be scheduled, allowing for in-app notices about things like dining hall operating time changes, special events, or if an update for the app is available
Built using
- Flutter, a framework used to develop cross-platform native and web apps
- Dart, the language Flutter primarily uses
- Firestore, a service of Google's Firebase, which allows the storage and retrieval of data from a server
- GitHub Pages, to host the web app
- Cloudflare, to manage the domain
- Python in the form of small utility scripts, i.e. converting Excel menus from the dining hall to JSON and uploading them to Firestore, collating ratings, and other data admin
- Refi, a niche open-source application that makes manually interfacing with Firestore easier, mainly used to set and update messages that display to users under certain conditions (e.g. date, app version, repeat message)
Challenges
- Convincing the App Store and Google Play that the app was useful, and provided more functionality than any website; the app was rejected multiple times from both stores citing this reason
- Many users are familiar with the original app, but how do we encourage them to use the new one, and more crucially, how do we ensure they do not miss the old one?
- How do we allow users to vote on meals, but not need an account/email?
- Initial rating systems were not very effective; there are opinions about the meals the Goldstein Dining Hall serves, but how do we encourage people to give them?
- Firestore is free, but has usage limits! How can we minimise read/write requests to the server?
Accomplishments
- 750+ App Store first-time downloads
- 100+ Google Play first-time downloads
- 100+ Unique visitors to whatsfordino.com every 24 hours
Learnings
- Test before you release, and prioritise having a way to communicate to users
- There's always one person genuinely using 'the thing no one uses' and they will express their disapproval if you remove it; an app of this nature can and should account for everything/everyone within the niche community it serves
- K.I.S.S: it is often harder to make something simple than it is to make something complex
- People really appreciate candidness, even if it's small
What's next for What's For Dino 2
This is in essence a relatively simple project that is achievable without a technical background given enough persistence ("achievable given enough persistence" perhaps describes most things in life though), yet it is something ~1000 people use daily. As such, I hope this project continues to exemplify that something doesn't need to be groundbreaking to be impactful, or at least significantly convenient. The app will continue to iterate based on all feedback.
Log in or sign up for Devpost to join the conversation.