Friday, 9 May 2008

About the Application

The application is going to be small "to do" app loosely based on David Allen's Getting Things Done. Not that the world needs another "to do" app (or even another GTD app) but it fits the basic criteria: it's small but not trivial, capable of being built in a few days and the problem is well understood enough that I can concentrate on learning the basics of the framework rather than solving some other problem.

Here's a short summary of the requirements:
  • Users need to be able to register with a user name and password to save and access their lists. The "stretch target" would be to allow users to start making lists anonymously, and then to save that work upon registering. If they already have an account, then the anonymous list and previously saved list should be merged sensibly.
  • Users will make lists of tasks. So we have the concept of a "list" (users must have at least one). A list should have a name and, when users are looking at the "list of lists" should be able to be sorted arbitrarily (in other words, users should be able to force a particular list to the "top" or above another list).
  • Lists contain tasks. A task needs a name, some notes, and the same sorting behaviour as lists (ie give users full control over the order of the list).
  • Each task can have exactly one context. A context is a GTD concept -- it's basically the things you need to get a task done. Example context might be "at work", "at home", "online" -- so that a task that has the context "at work" is something to do at work. Each user can have their own set of unique contexts but it's expected that the application will provide some sensible defaults.
  • Stretch target: Allow tasks to have an arbitrary number of contexts which represent the intersection of those requirements. A task that has the context "home" and "online" is one that requires an Internet connection from home to do. Not very "GTD-y" to make things overly complex though...
  • There is the concept of a context being "current." In other words, you tell the application "I am at work" and it will only show you the "at work" tasks.
  • Stretch target: When a user logs on, the default context should be the last context they were using from that particular device. For example, if they've logged on from their iPhone and have set their current context to "errands" then the next time they log on from their iPhone that should be the default context. However, if they log on from work immediately after, the default context will be "at work." It is anticipated that the browser string will be unique enough for this.
  • Stretch target: Mobile and Twitter support.

So, there you have it. Will not set the world on fire but I'm confident that we can get to know some of the frameworks well enough to get a "feel" for how they see the problem and how much code it takes to get it going.

I shall call it "lulztodo", because we're doing it for the lulz (thanks Nick).

4 comments:

John said...

Was that for a 1 hour presentation? I could think of a lot of scope here - like using google ui framework to order things by dragging.

hissohathair said...

Well, it's preparation work. Condensing it into 1 hour will be interesting. Once I've got the base using YUI or Google UI will be kinda interesting.

Really still putting it all together.

John said...

Hey - ask if you want any projects. Have to aim for 1/2 a day prototypes for GTD:

http://communityfoods.com.au/rego/showRec.jsp?link_id=271

Original concept was 'facebook for local foods' about 2000.

App is:
- directory listing for growers (etc)
# name/contact, fields as per URL
# description text description with html markup
# geolocate - type in city name and then narrow via google map.
# upload photo
# create editing account

Extensions are to get it to be more social. Invite/recommend other growers (etc). Photo sharing (of food). I am interested in xxx (growers/consumers) near me.

hissohathair said...

Now that sounds not only cool but also useful.