The Birth
Rate My Jerky came into mind recently when I was buying my 10th package of beef jerky of the week, being rather disappointed in several kinds of brands. Some were quite small for their exorbitant price, or has misleading packaging. Others just tasted awful, and I had no way of seeing other people's opinions on the jerky before I bought it.
This is where Rate My Jerky is the saving grace to all my problems. Now instead of doing the jerky roulette every day, I can simply look at an app, select where I'm going to get my jerky for the day, and I can see what others think of the jerky. If one package of jerky has exceedingly bad reviews, I won't buy it and can talk to the manager about getting the jerky removed from the property on the premise of exceedingly bad reviews. This may come in useful in the future, as it can open way for new kinds of jerky that may be better than the rest.
How it was made
Rate My Jerky includes both a frontend and backend, as of course everything is persistent and globally accessible (despite being targeted towards RIT's campus only). The frontend app is made in Dart via the Flutter framework, allowing for the app to be usable both with Android and iOS devices (And with a small bit of work, desktop and web). It compiles down to native machine code on both platforms, allowing it to be extremely fast, and more performant than JVM and Swift/Objective-C apps on their respective platforms, with a single codebase.
The backend was written in JavaScript. I was going to write this in Dart as well, however this is not the time to pioneer testing very new things as I will further explain. The backend is hosted on Cloudflare Workers, allowing for requests to be near-instantaneous with no cold boots, deployed over hundreds of datacenters. This also utilizes Cloudflare Worker's Key/Value database, allowing for easy, fast, reliable, and secure storage of data, primarily the reviews. Cloudflare Workers are written in a handful of languages, the one I'm most familiar with being JavaScript. They claim to have Dart support, however this is a load of bullshit as they literally just run a command that comes with Dart's SDK to transpile it to JavaScript and upload that. Aside from an example repo, they provide no documentation about this, making many things with Workers a challenge, simply due to how the API is structured. Maybe later it can be rewritten in Dart as I have a pure hatred for JavaScript, however this will do for now. When I say I have a hatred of JavaScript, I was half hoping my Band and Monster back to back would give me a heart attack before I had to write any more JavaScript.
Challenges
This was not really a challenging project, aside from the challenge of not jumping out of the window due to having to write JavaScript. I really should have made an actual backend in GCP or something, however due to time constraints it may not have been wise. Then again I'm not exactly constrained on time, as I'm writing a fucking novel in this goddamn markdown file.
What I Learned
I suppose how to use some new Flutter libraries such as a barcode reader, and getting a good refresher in writing apps, which I've been wanting to find an excuse to do for a few months now.
What's Next?
I hope to god I can rewrite the backend, I despise JavaScript with a burning passion. I hope to archive the backend repo immediately so I no longer have to touch it, every modification will be done with some client-side hack due to lack of data validation or something, I don't want to touch the backend ever again.



Log in or sign up for Devpost to join the conversation.