My wife was looking for a good way to organize her recipes, naturally I thought it would be cool to have it on the web, or her iPhone or something. I couldn’t find anything that I liked.
All the apps I saw were over-engineered and even simple tasks like adding a new recipe were unnecessarily complicated. So I figured I’d build one in my spare time. I was looking for an excuse to learn how to use jQTouch anyways.
Here were my main goals:
Web-based, but iPhone optimized. I wanted to easily be able to type in new recipes using a real keyboard on my computer and then view/edit them anywhere from the web or my iPhone.
I really wanted solid iPhone support for viewing recipes (preferably other high-end smartphones as well, like Palm Pre and Android). This is because I don’t want to be forced to put my laptop on a messy kitchen counter with food everywhere.
Super easy, or non-existant sign-up process.
What I didn’t care about:
IE support - this is a free app. I built it for me and IE doesn’t support any of the fun CSS3 stuff, so frankly, I don’t care if it looks terrible in IE. I don’t wanna mess with it because I’m not getting paid for this and supporting IE would be way too much work. It’ll work in IE it’ll just be ugly. If you’re tech-savvy enough to have an iPhone, you have no business using something as old and lame as IE (switch to Chrome or FireFox).
Social features - I may add some of this stuff later, but for now I just want a good, simple bucket for storing my own stuff.
Complex functionality like unit conversions for measurements, etc. Doing this requires users to enter stuff in a more structured format which makes entering recipes harder than it needs to be. I didn’t want to deal with it and realistically, that stuff appeals more to nerds than people like my wife who will actually use this.
Other, crazy complex features - just simple and usable, please.
What I used to build it:
jQTouch - jQTouch makes it simple to build an webapp that feels like a native iPhone app. I have’t tested it on Android or WebOS yet, but supposedly it will fully support these someday as well. Once I saw what you could do with jQTouch this decision was a no-brainer. Much props to David Kaneda for jQTouch.
Django - Rock solid, feature-rich open source web application framework written in pure Python. It doesn’t get any better than this.
Google App Engine - Fast scalable Python hosting environment that’s free until you hit really high usage limits (roughly 5,000,000 page views per month). AppEngine supports Django 1.1 (not in it’s entirety, but not too bad) and also makes authentication with Google Accounts super simple. Plus, if for some reason my App gets really popular I don’t have to worry about scaling headaches or hardware issues because it runs on Google’s architecture. There are definitely some limitations, but for a simple app like this, the benefits made it worth it. Plus, I wanted to learn how to do it and find out what limitations it had.
Features I’d still consider adding:
Ability to share your entire library with other people. Say for example that I want to be able to access my wife’s recipes without having to log in with her account and vise-versa. So, if you could specify who to share recipes with, that may be useful.
Ability to mark recipes as public.
Ability to select different templates for printing out recipes. If you wanted to use it to make a book or something.
A public API (possibly).
This project is still definitely in development stages, but I thought I’d put it out there now, just to get some feedback. If you want to check it out got to: http://www.RecipeBinApp.com from a modern browser or your iPhone, just sign in with your Google Account and start entering recipes. While it’s possible to add and edit recipes on your phone, realistically, you’ll want to do that in a regular browser. I highly recommend adding pictures of your recipes, because I built the web app portion with a highly visual display.
I’m curious to hear some feedback from anybody who wants to test it out. Feel free to sound off in the comments or just email me.