Sunday, December 18, 2011

Grocery Ninja

I just published my first ever Android app! It's called "Grocery Ninja" and was a perfect first app to write to teach me about all the different aspects of Android programming: Activities, ListViews, TouchEvents, and even some SQLite database work. :)

Granted, I've been programming in Java for something like 10 years, and programming in some form or another for the last 25 years, but writing for a mobile smart phone has got to be the most fun thing I've gotten to do so far.

Why a Grocery app? After all, there's got to be 1000's of these available in the Android market! Well, the truth is that I tried probably a dozen or so grocery apps when I first got my Droid X, and none of them really did what I wanted. So many of them are so full featured, I could barely use the things without hitting all kinds of unnecessary features! I considered writing my own, but then I never got around to it. Then one day, my youngest brother sent me an e-mail:
Hey Bro!

I have an app I’d like you to create. We’ve tried several grocery apps (about 10 so far), but have yet to find one we like.

I’d like to be able to add a store, setup my own aisles/depts for that store, and be able to sort them in the order I want.

Then, I’d like to add a grocery item and specify what store/aisle I want to get it from. It would also be nice to add quantity and approx price.

Once I’m done with my list, I want to be able to see the approximate total for all my items and check them off as I purchase them (maybe even update the price to actual purchase price).

The next time I go to create a list, it should remember my preferences (and prices) for previously added items. For example, apples would automatically fall under produce at Safeway.

Entry should be available via keyboard or voice command. I saw one where you could say “and” and add multiple items at once (i.e. “apples and pears and broccoli” would list as 3 separate items).

I was a little taken aback, because this is exactly the same thing I wanted in an app. I'm not sure if my brother thought I would actually take it on or not, but I decided it was time to get my feet wet in Android land.

Well, its been a long road (been working on this off and on since early November), but its finally published. If you have an Android device, and want to give a look-see, search for "Grocery Ninja" in the market, or visit the Android Market on the web.


Anonymous said...


I just installed your app and really liked it being nice-n-simple. I've tried several free and paid apps and none of those would do what I want in a simple way, without switching between gazillion of menus, screens and settings.

The only feature I could possibly want is the graphical layout of the store with entry and exit path (talking about simplicity, huh?). The reason for this is that my local supermarket adopted somewhat random aisle numbering (no idea why) so that aisle 7 is not necessarily between aisles 6 and 8. It might be squeezed between 31 and 16.

Oh and list SD card backup/reuse would be nice too. :)

Also, are you planning to make an ad-free version?

DewKid said...

Hi pofigist,

I wanted to see what the response was with the free version, and then if people are actually interested, making an ad-free version. I probably will do that in the next couple of weeks.

I'm not completely sure I understand why you need a graphical layout of the store. My strategy for dealing with weird store layouts was the ability to reorder the aisles in any order you like. In my Albertson's aisle list, I have Aisle 1 followed by Meat followed by Aisle 2, because that's how I usually walk the store. You could move your Aisle 7 between 31 and 16, and the grocery list will be sorted accordingly. Does that solve your problem, or are you after something else? (or am I completely misunderstanding what you are asking...)

I avoided SD card for the first release, but that's a good idea to consider. Backing up the item locations definitely gets to be more important, the more items that get added. I'll see about getting that feature into the next update.

Thank you for your suggestions, and trying out the app.


Anonymous said...

Yes, rearranging aisles order helps.

As to visual layouts, I guess I didn't explain myself well enough. The idea of graphical layout came to be because I think it is easier for people to arrange things if they can see it in front of them.

To be honest, I sort of thought of making the shopping list app myself but then I am living in a totally different world - for embedded automotive software engineer like myself anything Java-related is a strictly no-go area; assembler is the way forward :)

Anyway, the idea was to let users to create visual layouts such as this one:

(obviously not this ugly :)) and store it somewhere on webserver (a premium feature?) in a form such as "Tesco London, W1", or Safeway Palo Alto Middlefield".

I understand that not everyone follows the same path around the store, so if they could draw their path visually, this would auto-arrange the aisles for them.

Also, this will add a "game element" to the app (a ninja running through aisles and slashing those aisle-blockers? :))

Maybe this is too radical as an idea? If that's the case then well.. if you can't do it then how about allowing users to customise the front app page? Not everyone likes that picture, you know...

DewKid said...

LOL! Ok, well that may be a bit radical, at least for my current android skills. I'm working on a game for my next app, so maybe once I get some experience with the graphics engine, I'll see if I can apply that to Grocery Ninja.

Anonymous said...

One more question - how to delete unneeded aisles? For example, I'd like either to edit or to delete an aisle if I made a spelling mistake in its description.

DewKid said...

First go to the store via "My Stores", and click on the store to open the Aisles page. Then when you click on an aisle, it lets you edit or delete the aisle.

If you open the aisle page when selecting a location in store for an item, you wont be able to edit or delete an aisle.

Honestly, this is my least favorite part of the app, but I haven't decided how to fix it. I like the click-and-drag aisle ordering behavior, but the editing feature isn't that obvious.

DewKid said...

I added some better instructions on the aisle page to alleviate this confusion a bit. Also added a feature to clear all crossed-off items. This helps when you can't find everything you wanted at the store, and just want to clear the list without losing the items you still need!