My favorites | Sign in
Project Home Downloads Wiki Issues Source
Implementation details for the CentralShoppingList
Updated Jan 3, 2011 by


A central shopping list that all applications can access.

A central shopping list contains items the user would like to buy. This includes daily requirements (milk, eggs, ...), but also other items (books, equipment, ...). Different applications may add items (with user consent) or suggest bargains, alternatives, or interesting offers for items contained in the shopping list. Other applications may display a reminder notification if one is close to a suitable shop. Synchronization with family or friends makes common shopping lists possible.

Sample usage

  • I'm at home and notice I ran out of milk. I write this into my shopping list, and my wife who happens to be close to a supermarket receives a notification to buy milk for me.
  • I find a recipe in the web-browser that I want to cook for friends on Saturday. All ingredients are scaled automatically from 4 to 6 persons (converting kg to lbs). I can check in which of my favorite supermarkets this specific list of items would be cheapest, and next time I'm in the supermarket I'm reminded of all items I have to buy.
  • I'm in the supermarket and notice the green pepper that I need for my recipe is not fresh. I choose an alternative recipe from the web-browser. All items from the first recipe are removed and replaced by the new items, keeping other items that I wanted to buy anyway.
  • I see a good cookbook in the shop, scan its barcode (using OpWoCo or ZXing), and it is put on my "birthday wish list" (also a shopping list), that I share with friends via XMPP. (The fastest friend orders the book using 1-click from a famous online-retailer with personlized birthday wishes, and the other friends know that they have to think of something else).



We are currently in the stage of a pre-DRAFT. Any information may change. Different ideas might exclude each other. There is no code/API yet.

Technical Ideas

KISS features

  • Lists contains all shopping lists, e.g. "My shopping list", "Bob's shopping list", "Ingredients for birthday cake",..
  • Items contains possible items to buy, e.g. "egg", "milk", "book on Android programming", ...

The relation between lists and items is simply given by tagging via CentralTagging. Items tagged by a list means that this item is part of the list. In the KISS version, there are no quantity specifiers, or they can be stored with the item (e.g. "1 egg", "6 eggs", "3 kg flour", ...)

  • Supporters: Peli
  • Developers: Peli

Minimal extension: Quantifiers

Include quantities. There are several possible approaches - which one shall we choose?

  • (Peli) Just do it as in KISS version, quantity is included in item.
    • Disadvantage: "egg", "1 egg", "6 eggs" are three different items. Additional overhead for applications to disentangle this.
  • (Peli) Put item into singular form (item is always "egg"), but create a SQLite database for shopping lists.
    • SQLite could contain several entries: quantity, unit, notes, last price, last time bought, prefered shop, ...
    • Disadvantage: Overhead synchronizing CentralTagging with SQLite shopping list.
  • (Peli) Extend CentralTagging to contain modifiers of links.

Quantifiers would enable:

  • (Peli) Clever conglomeration of several shopping lists into a single long list.
  • (Peli) Scaling of recipes (e.g. from 4 to 6 people)
  • (Peli) Conversion of units (e.g. from kg to pounds)
  • Supporters:
  • Developers:

Minimal extension: Shops

  • (Peli) CentralTagging could be used to indicate which item is available in which shop.
  • (Peli) A SQLite database could contain: location, notes, contact information, opening hours, ...
  • Supporters:
  • Developers:

Extended features

  • (Peli) Automatic recognition of singular/plural forms (e.g. list contains "6 eggs", receipe adds "1 egg", the list should then contain "7 eggs"), first for English (list of irregular nouns, + standard rules "->s", "f->ves", "(non-vowel)y->ies", ..)
  • (Peli) Automatic conversion of units (e.g. web page displays "500g flour", should be converted according to user preferences to "1 pound flour", using appropriate rounding)
  • (Peli) Automatic extraction of ingredients from a web page containing a recipe (e.g. from Wikibooks cookbook)
  • (Peli) Synchronization of selected lists with other people via XMPP. Could this be a more general request? (i.e. synchronize specific tags via XMPP?)

Super extended features

  • (Peli) Localized transducer to support singular/plural noun forms in various languages. Could this be part of a general-purpose "natural language" content provider?

Sign in to add a comment
Powered by Google Project Hosting