Create your own awesome maps

Even on the go

with our free apps for iPhone, iPad and Android

Get Started

Already have an account?
Log In

Confucius Tasks - HLD by Mind Map: Confucius Tasks - HLD
0.0 stars - reviews range from 0 to 5

Confucius Tasks - HLD

Reads your schedule from Google Calendar



Reduce missed tasks

Home page

Stats dashboard, Average missed tasks, Average percent of missed tasks, Average tasks, Missed tasks in last week

Logo, Old confucius in a business suite, Wei Wei?

Slogan, Wheresoever you go, go with all your heart. (Confucius)


It can also

Update what you plan & actually did on Google Calendar

Update Todoist on completion & reschedule

Add tasks to Todoist (provided via Google Talk)

Add tasks from Todoist to Google Calendar

Add tasks from Google Calendar to Todoist

Produce reports on your tasks & activities

Publish in FaceBook & Twitter your missed tasks


Deployed on GAE

Can be used by any Google User

User need provide Todoist account


I had problem generating fixtures required for running Unit Tests locally, so I didn't yet write any

The problem is due to a problem specifying the exact location of the database file, If you don't specify it, each type of execution of the product (e.g., runserver, debug, shell, dumpdata) will generate a different database

A quick solution can be to generate the initial users in the shell & then run dumpdata to generate the fixtures

So, I only made a stupid test in the home page

If you click on the test, it will send the uncompleted tasks list of a hard-coded user (admin), whose profile has my details

The tasks arrive to the IM client

Suggested features

Update the user success rate


Define in cron.yaml a service invoked daily

The service will create QueuedTasks per each user to calculate his success rate

The QueuedTask per user should read his uncompleted tasks from all days before today

Create a DailyStats record for each historic day, Unless it already exists

The DailyStats model can initially contain just:, user, date, total_tasks, completed_tasks, success_rate, completed_tasks/total_tasks, if total_tasks != 0

While you save them, count the DailyStats records that were indeed added (didn't exist before) & their total success rate

Update the UserStats model for the user, Or add it, if it doesn't exist, find the UserStats for the user, add the count of added DailyStats to total_days, add the total success rate of the added DailyStats to total_success_rate, calculate the avg_success_rate

The UserStats model can initially contain just, user, total_days, total_success_rate, avg_success_rate

Register new users when they add in GTalk

Send an initial explanation about the system

Ask them for their Todoist API token

Create User & UserProfile records

Allow users to add tasks via GTalk


If a message arrives starting with "add task", add a TaskDialog object to memcache

Send questions

When a message arrives, check whether a TaskDialog exists for the user in memcache

According to the dialog_state attribute of TaskDialog, handle the question answer & ask the next question

When reached the final dialog_state, use tasks_provider to add the new task, & remove the TaskDialog from memcache

Show success rate in homepage

The view should require login, add the @login_required decorator

Get the user from the request

Read the UserStats record for the user

Show the avg_success_rate in the template

Remind users about tasks that should start now


Define in cron.yaml a periodic service running every hour

The service should get the list of all online users

Then it should create QueuedTasks per online user to check for scheduled tasks

The QueuedTask per user should get the uncompleted tasks scheduled for the current hour, Define in cron.yaml a periodic service invoked daily

If found, it should send the user a question: Have you started working on <task content>?

Show explanation & instructions on home page

Nag users about tasks that should have been started

If the user answers 'no' when asked whether he started working on a scheduled task, add the task to a list of pending tasks in memcache

The periodic service invoked hourly should check memcache for pending tasks

If pending tasks found, it should ask about each of them, whether the user started working on it

If yes, it should be removed from the pending tasks list in memcache

If tasks aren't scheduled, ask the user when he plans to execute them

It should get the unscheduled uncompleted task for each online user for today

It should ask per task when the user plans to execute it

then update todoist with the time, eg, @10am

Show a graph of DailyStats for the user

In order to see the trend in completing tasks

Read all DailyStats records for the user

Generate a JSON of the data, [[day, rate], [date, rate],...]

In the page, add a HighCharts bar chart with the JSON data

Add SocialAuth registration

Users will be able to login with their social credentials, FaceBook, Twitter, Gmail, LinkedIn, Yahoo!

Add the django-SocialAuth pluggable app to the project

Add required packages:, FaceBook python SDK, openid, oauth

After identifying the user, check whether it has a UserProfile record

If not: show a form asking the user to enter his UserProfile details, create a UserProfileForm

Save the form

Connect to Google Calendar, to check whether scheduled tasks conflict with scheduled event

Connect to Google Calendar to update scheduled tasks in the calendar


Site address

Todoist API

Todoist Python library (that some guy wrote)

Binfire project site