I use the todo.txt format to manage some of my daily tasks. It’s a plain-text format, and both iOS and Android have apps, such as SimpleTasks. Emacs and Vim also support the format. Actually, you don’t need a special editor for it; the format is so simple that even Notepad is sufficient.
I have a shell script to add daily recurring tasks, such as “Drink Water” or “Pray Maghreb,” to this file. SimpleTasks expects the file to be at $HOME/Dropbox/todo/todo.txt, and I use a template file, such as template.txt, to populate it. However, as anyone who has used TODO files knows, there are always unfinished tasks; for instance, I don’t always drink my daily allotted amount of water.
So, my evening script moves completed tasks (marked as DONE) to their own file, removes recurring tasks from todo.txt, and repopulates them for a new day. (Note: The code below is not usable as-is; you must define the TODO, DONE, and TEMPLATE file paths correctly.)
TODO=.../todo.txt
DONE=.../$(date +%F)-done.txt
TEMPLATE=.../template.txt
#Move Done to $DONE
grep -wE '^x ' $TODO >> $DONE
sed -i '/^x /d' $TODO
#Delete lines with @Evening, @Morning or @Regular tags from todo
sed -i "/\b\(@Morning|@Evening|@Regular\)\b/d" $TODO
cat $TODO_TEMPLATE >> $TODO
I have configured cron to run this every day at 6 PM. (My “evening” starts earlier than my morning.)