A todo list that syncs over devices with a [CP]ouchDB in the back.
I liked Wunderlist as todo list. But I don't liked that they have my todos. So I only want to share my todos with my wife and over our devices. For this reason the web app should work on PCs as well as on IOS/ Android devices. I focused on webkit engines of latest version. For the syncing mechanism I use CouchDB, because I like the project and wanted to start with at least a small project. In addition to that I also wanted to start with CoffeeScript, because of the Python like syntax. The next thing I want to to try is to work with Python so now there is a commandline tool made with Python 3.4.
Look at gulp tasks for more information.
cd webapp
npm install
bower install
Did you checkout the git submodule?
if not do it now:
cd gulp
git submodule init
git submodule update
cd ..
cd webapp
gulp build
cd webapp
gulp build:prod
coffee -b -j js/todolist.js -c coffee/todolistmain.litcoffee coffee/GeneralBehavior.coffee coffee/TodoListApp.coffee coffee/TodoListApp.EntryInput.coffee coffee/TodoListApp.ListInput.coffee coffee/TodoListApp.ListsView.coffee coffee/TodoListApp.EntriesView.coffee coffee/TodoListApp.Configuration.coffee coffee/TodoListApp.TopBar.coffee
compass compile
or enable compile on file change with the build in watch funtions
coffee -b -j js/todolist.js -cw coffee/todolistmain.litcoffee coffee/GeneralBehavior.coffee coffee/TodoListApp.coffee coffee/TodoListApp.EntryInput.coffee coffee/TodoListApp.ListInput.coffee coffee/TodoListApp.ListsView.coffee coffee/TodoListApp.EntriesView.coffee coffee/TodoListApp.Configuration.coffee coffee/TodoListApp.TopBar.coffee &
compass watch &
For the indizies it is needed to create the following desing documents in your [CP]ouchDB
{
"_id": "_design/todolist",
"language": "javascript",
"views": {
"lists": {
"map": "function(doc) {\n if (doc.type == 'todolist')\n\temit(doc.created, doc.name)\n}"
},
"entries": {
"map": "function(doc) {\n if (doc.type && doc[\"todolist-id\"] && doc.type == 'todoentry' )\n\temit(doc[\"todolist-id\"], doc.name) \n}"
},
"checked_entries": {
"map": "function(doc) {\n if (doc.type && doc[\"todolist-id\"] && doc.type == 'todoentry' && doc.checked != null)\n\temit(doc.checked) \n}"
}
}
}