A PersonalInformationManager written in Java using Derby and Hibernate. Here's my original "manifesto" posted to the Derby users mailing list:

Table of Contents

Why LifeCache?

In our modern information driven society, I find myself often unable to locate information that I need and that I have. It may be in an email that I forgot to file or that is not filed in the folder that I expected it to be in or perhaps I need a document on my office computer - or my home computer.

Whatever the cause, I need a new way to store, manage and organize the constant flow of information that I want - or need - to keep track of.

Specific cases for LifeCache:

When I read POP email, it gets downloaded to the computer that I read it on - but I need to be able to move it, or at least access it, on other computers.

My email account is getting full, but if I download it to one computer I won't be able to access it on any other computers.

My email account is getting full in part because there are obsolete emails filling it up. I want to be able to mark emails so that they will automatically come up for review on a periodic basis, on a certain date or after a certain event has occurred.

A new guy has been assigned to my project and I have a collection of documents, notes, callendar entries and emails that he will want to have access to. I want to push a button and grant him access to them - or give him the option to download the whole batch to his computer.

I have a long email discussing several topics. I want to be able to associate it with all of those topics without having more than one copy of it.

I have an email with a text part and a large attachment. I want to be able to keep everything EXCEPT for the attachment.

I have all this information that is related - except that it is scattered amongst text documents, HTML documents, PDF documents, emails, chat logs.......

I want change tracking for something that isn't a Microsoft Word document. Maybe it's an email, maybe it's a text document.

I don't trust someone else to store my data but now that I have hundreds gigabytes in disk space and high-speed internet access, why should I need to?

LifeCache design

To make LifeCache as flexible as possible, it will be necessary to throw out many of the standard assumptions that underlie this kind of software.

My current thinking is that the primary element will be an "information object" that will consist of data components and properties.

I have the following data components in mind:

I also have the following property types in mind:

So, for example, an email would be:

  1. A character data component.
  2. An ordered list of properties (the header)
  3. An ordered list of data components (attachments)

User Stories

I'm more of an agile kind of person these days so we'll have some user stories that give the functionality that we want our software to have. Feel free to add your own or add comments to others but don't delete or modify anything that you didn't add.

Import a text file

I have a collection of text files from various sources that I want to organize.

Design/implementation comments:

What we'll end up with is an information object consisting of:

  1. A character data object
  2. An unordered list of properties (the file properties supplied by the file system)

Group information objects

Some of the text files are chapters of a "book" so I'll want to be able to create an ordered list of information objects that belong to a parent object.

Add custom properties

Once I have my text files imported (and possibly grouped), I'm going to want to add custom properties to them such as an official title and author.

LifeCache (last edited 2009-09-20 22:11:24 by localhost)