Lists of things
If you're anything like me you casually keep a bunch of lists. Some of them quickly get thrown away like shopping lists. Others grow over months like a your favorite movies, great places to eat or places to visit on your dream holiday.
I keep some of these lists on paper, but then they're hard to share with friends or have people contribute. When I'm out and about I often email myself from my phone, but then all my ideas get dissorganised and forgotten. I even have a couple of todo apps that I fill up with work stuff, but they all have too many features and force me to follow their workflow.
So I created Lists of Things. You can use it to keep all your lists in one place. It's a really flexible system that you can use to store your recipes or manage all your company's contacts and projects, or anything in between. You can create lists of any type of thing, like books, purchases, yoga positions or theme parks, and of course projects and tasks.
You can share lists friends and collegues and they can work on them with you. I keep a list of things to do with my girlfriend that we both update when we get new ideas. My team at work has lists for work that's coming up, currently being worked on, waiting for approval, and totally complete. And we keep track of who's working on what by adding tasks to multiple lists.
I hope you'll give it a try and let me know what you think.
Usage
- Checkout this source
- Download datomic from http://downloads.datomic.com/0.8.3438/datomic-free-0.8.3438.zip into the same directory as lists-of-things is checked out into (not into the lists of things directory).
- Run
make server
andmake datomic
- A browser window should appear showing lists of things.
In production you should set the PORT and HOST environment variables
Roadmap
Replaces reminders
- Things
CreateList orphansDelete thing- Edit thing
Replaces emailing myself
- Things
Show
- Text Content
CreateList- Delete
- Edit
Replaces mind maps
- Children
ListCreate- Move
Add to new parent- Remove from parent
Replaces the hit list
- Simulates tagging
- Simulates contexts
- Sorting
Replaces jira
- Give permission to other users
- Open multiple listings
- 'Sort' things between listings
Simulates commentsSearch
Explainations
- Introduce
- Things
- Content
- Links
- Users
- Replaces
- Workflows
- Tags
- Contexts
- Comments
- Attatchments
- Authorization?
BUGS
- When the first static page load occurs you see it with no content for a moment before we ajax in the real content. This flicker should be avoided.
TODO
Remove html based interface- Search
- Display parents of open node above listing
Add parent in priviewRemove parents in previewSave new content to db- Edit name of thing
- Refactor JS
- Wrapping recursively
- Opening current thing
- History
- List
- Preview
- Breadcrumbs
- Restore normal browser behavior
Add history- Have the api return urls in addition to ids
- Add links with meaningful hrefs to everything with an onclick
Have bs-index served dynamically inline with history and urls- Use # to represent which child should be selected
- Performance tuning
- Add expires headers
- Double check gzipping
- Power usage
- navigation
- j and k shortcuts for movement up and down list
- h for back
- l and o for open current thing
- p for preview (consider automatic on selection)
- / for search
- leave arrow keys and space bar free for scrolling as normal
- editing
- escape to unfocus any current form field
- i to insert new child
- c for content
- e to change thing name
- d to delete
- u to undo
- a to add parent
- m to move from current parent to new
- r to remove current parent
- discoverability
- ? and link to show help
- underline appropriate character for edit/delete/add/move/remove
- navigation
- Batch operations
- Allow multiple selection
- Update basic operations to act in batch
- Auth
User accounts with persona- Share with user (via email)
Things to consider
Switch to coffee script- Switch to clojurescript
Split js into seperate files
License
Copyright (C) 2012 Logan Campbell-McPherson
Distributed under the Eclipse Public License, the same as Clojure.