Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Life Calendar

number of users

With life-calendar, you can view your lifetime at a glance - seeing it anywhere from days to decades. These timeframes are represented by 'life boxes', which you can color-code, annotate, and edit with fancily or with Markdown to plan your goals or remember your achievements.

The goal of life-calendar is, and always has been, to serve as a means to help people grow more productive and utilize their time better. Our time here is limited, and we should make the most of it. This calendar acts as a life planner, journal, and accountability app all in one.

Web App Overview

The best way to see what the web app can do is to go directly to the site but here's a visual overview for those who want to stay on GitHub.

gif demonstrating core functionality

Essentially, these are the three pages that you'll be visiting the most often.

The Life Calendar

This is where the real magic happens. You get an automatically generated list of paginated boxes which you can edit (images, tables, etc. all supported). You can likewise color-code buttons and add their meanings to a legend.

homepage screenshot

The Statistics Page

You can look in awe at beautiful statistics provided to you about your usage of the app, such as words inputted or a life progress bar.

statistics demonstration

The Goals Page

This is the place to set customizable goals for yourself. Title, subtitle, and text are supported, as well as due dates + times and a colored outline.

sample goal


  • View your life in days, weeks, months, years, and decades
  • Color-code life boxes to demonstrate specific events in your life
  • Use Markdown or Fancy Mode to write down what and remember what happened or you want to accomplish
  • Set and track colored, detailed goals for yourself
  • Download or print your own life calendar
  • View insightful statistics about your life

...and a lot more.


You can click the image below to be directed to a YouTube video tutorial of the application, explaining core features and app usage.

Video Tutorial

If you are more of a reader, there is already a very detailed tutorial on the official site which you are more than welcome to check out. It creating an account, basic and advanced features of Life Calendar, and all the other hidden goodies that haven't been mentioned here.

The website itself should be intuitive, but it's always helpful to have a tutorial around to reference. You can access individual parts of the site tutorial using the Table of Contents below.

Running Locally

It's super easy to get this app up and running on your local machine. While we recommend the site if you plan on using this long-term, it is beneficial to see how the app works locally, especially if you plan on forking or contributing.

Make sure that you have Python>=3.4 installed, as well as PostgreSQL (handy guide here).

First off, go ahead and either clone or fork the repo. You can easily clone it with the below command:

$ git clone

Now, we need to create out development environment. You can either do everything with bash and our handy file, or do it manually for the explanations and a better understanding.

Automatic Method: Shell Command

If you'd like us to handle all the pesky requirements installations and database creation, simply navigate to the folder where life-calendar was installed.

cd life-calendar

Before you run the script, make sure you have PostgreSQL and Python installed!

Alright now that we've got that out of the way you can run the following in your terminal (make sure you're in the life-calendar directory):


The source part is very important! If it doesn't work, you can try .

After a couple minutes you should have all dependencies installed and the database created. You can then simply run python3 to start the development server.

Note: you may receive red text when psycopg2. This is expected for Mac/Linux users, and another requirement, psycopg2-binary, takes care of this for you.

Manual Method: Multiple Commands

If you'd like to install and setup everything manually, it's outlined below.

First we need to install all the requirements. There's quite a lot, so be prepared to wait for a minute or two!

$ cd life-calendar
$ python3 -m pip install -r requirements.txt

Nearly there! We just need to set some environment variables and get our PostgreSQL database running. We can create a PostgreSQL database with createdb life_calendar (you can name this whatever you want, as long as you haven't used it before).

Now onto the environment variables - we are going to need to set four. The below commands work for Linux and Mac. If you're a Windows user, refer to this guide to setting environment variables.

export APP_CONFIG_KEY="super-secret"
export DATABASE_URL="postgresql://localhost/life_calendar"

We also need to export the keys for SendGrid emailing. You can set these to whatever you want; the program won't run without them but unless you're working on the contact page or forgot password page you should be fine.

export JWT_EMAIL_ENCODE_KEY="super-random"
export SENDGRID_API_KEY="not-important"

You can verify that these are set with echo $APP_CONFIG_KEY and echo $DATABASE_URL, if they don't show up you can just try setting them again.

Of course, if you didn't name your database life_calendar, you're going to have to change the database URL.

Finally, make sure to comment out line 73 of (the Talisman wrapper)! Talisman forces serving over HTTPS, but since localhost is insecure, this will cause an error! You'll need to disable it for the app to run properly in localhost, otherwise you'll get an HTTPStatus.BAD_REQUEST.

So now it's time to run the application. All will work as it does on the official website except for sending emails and getting password verification, as those are managed by the Heroku host, not the code.

rm -r migrations
$ python3 db init
$ python3 db migrate
$ python3 db upgrade
$ python3

It will now be running on your localhost. You can go ahead and head over to port 5000 in your browser.


Contributions are welcome! The JavaScript code is far from efficient, and more features to make Life Calendar better are wonderful.

An easy way to contribute is to fork the project, add some beautiful code, and then open a pull request. You'll be credited on the contributions page with your name and GitHub profile link (and will get the warm fuzzy feeling of building a better free product for users).


Life Calendar is free (cue background sounds of happiness). Problem is, server hosting, the PostgreSQL database, and domain name aren't. We live on donations, and you can help out by sponsoring the project here on GitHub or through PayPal.

If you head over to the top you press the heart button to sponsor the project or simply donate below through PayPal.

Last Note

This project has been inspired by this post on, which demonstrated a simple, printable calendar of an average life in weeks. Thanks for introducing the world to this, Tim Urban.


Want to contribute but not sure where to start? Interested to see what the project's direction is? Search no further.

Once a task has been completed, it is removed from the below task list.

  • Multiple language support | @medium
  • Build API for users to interact with | @medium @much-work
  • Email reminders for goals (and site pop-up reminders) | @easy @under-consideration
  • Add ability to set Markdown/Fancy Mode preference in settings | @low @maybe-not
  • Goals duedate integration with calendar page | @low
  • Brainstorm alternative solution to localStorage dumping | @low @much-work @future

Known Issues

Below are issues that have been reported by users, but were not previously discovered in testing. They are being given high priority and worked on.

  • Edge Browser completely unsupported.
  • Color-coding boxes does not work on Firefox 81.


No releases published

Sponsor this project

You can’t perform that action at this time.