Cross-platform ToDo-Lists

Idea

I want to have ToDo lists that I can use from all of my devices and that are able to sync using my own server. The goal is to have a infrastructure that uses markdown to write ToDo lists, notes and is able to attach notes to ToDo items. It should also be sync-able with something like git, to be able to have the same state on several devices. There are probably quite some services, maybe even some free software solutions to that, but I did this using git, vimwiki, Markor and MGit, since I did not find anything that really did what I wanted. If anyone has a better idea how to achieve the same, I am happy to take some recommendations.

Setup

I use a central git-repo that I host on my server. Then I clone this repo to my machine and phone using git and MGit respectively.

Linux

Here I organize and update the files using vimwiki. For this I added an alias that automatically pulls the new repo when entering my ToDo lists

alias list='cd /PATH/To/REPO/Notes/; git pull origin master; nvim /PATH/To/Repo/Notes/index.md'

This solution is not optimal since it can take quite some time to get the server to respond. Also if you dont have your ssh-key password in the keychain, this may be quite annoying. An other idea would be to sync every time you log in to your device, assuming that you do not add any changes to the repo while you are logged in. In my init.vim I added the autocommand

autocmd VimLeave /PATH/To/REPO/Notes/* !git commit -am "UpdateFromVim"; git push origin master;

This updates the repo every time I close a file in the local repository.

Android

Here I use MGit to sync the repo to my phone. I then use Markor to edit and view the markdown files. The sync method on the phone is quite tedious since you have to start MGit and add, commit and push manually each time. I am not sure how to do this better, but for now this is an okay inconvenience. But in the long run this needs a better solution.

Conclusion

This is a first version of this. It would be great if I could use calcurse locally to edit the todo lists and to find a better way of syncing, especially on Android.