An Overview of NoteTag

The Kiwi team is focused on enabling developers to build read/write web components in Flex and Apollo. NoteTag is a proof-of-concept Flex 2.0 application which offers a solution to a common problem: how to keep track of tasks while taking notes for a meeting.

Let’s jump straight into the user experience. I’m in a meeting with my Kiwi cohorts, and I’m in charge of note-taking duties. I launch my browser, navigate to the NoteTag URL, and immediately start taking notes.

After the usual status round-robin, Darrick points out that there’s a bug which he needs to investigate further. Aha! We have our first task! I highlight the text of the task ("Need to locate RichTextEditor source") and click the "Tag as Task" button on the control bar. The task’s text now changes to red, and the property inspector at the bottom of the screen is pre-populated with values. I set the owner to "darrick" and continue taking notes.

When the meeting ends I click "Publish", and the note and tasks are posted to our backend. (More on that later.) If I want, I can browse through the previously-posted meeting notes in an RSS aggregator-like view…

.. but most likely, I’m done. Darrick, on the other hand, has some work to do. He connects to NoteTag and clicks on "My Tasks" to see his aggregated list of tasks. If the text of the task alone doesn’t provide the context he needs, he can click on the task to see the enclosing note.

After Darrick has finished his investigation, he needs to mark the task as completed. He checks the box next to the Task, and the task instantly turns from red to green in the note.

This is more than just a local change: anyone who views either the note or Darrick’s list of tasks will see that the task has been finished.

At this point you might be thinking, "I’ve seen plenty of applications that help people keep track of tasks. What’s unique about NoteTag?" Two things…

First, NoteTag is a completely free, completely open-source Flex 2.0 application. Want to figure out how we’re aggregating tasks? Just dive in to the source code. Want to see how we’re publishing notes to the web? It’s all there. Want to use our source code in your application? Help yourself! NoteTag should be a great resource for developers who are ramping up on Flex, and who want to understand how to build an app that involves more than a handful of classes.

The other unique thing about NoteTag is the backend: there is none! (Well, none that we wrote, at least.) Here’s where the notes are stored:

Blogger! (NoteTag also supports TypePad, and theoretically could use any service that supports the Atom Publishing Protocol.)

And here’s where we store references to the notes and tasks:

Delicious! Every note and task is tagged with information about the author, owner, status, etc., and points to the URL of the note on the blog server.

What this means is that NoteTag doesn’t replace existing workflows and services, it complements them. You can view your tasks in NoteTag, or you can log into your delicious account and use delicious’s support for filters, related tags, and tag clouds to view them in new and interesting ways.

All that being said — we on the Kiwi project think NoteTag will be less interesting as an end-user product and more interesting as an application that developers can use to learn how to build their own read/write web applications in Flex. In the next post, I’ll talk about the overall design and architecture of NoteTag, as well as the reusable components that we’ve developed.