A flask app that shows your recurring tasks with the ability to mark them as done, so they will reappear after an interval of days again.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Nils 3c01b3c2ee Reflect secret URL in the readme 3 weeks ago
data add command line options to protect app with secret url. also option to define what counts as 'soon' in days 3 weeks ago
static cleanup dev images 3 weeks ago
templates Forward secret to update click on card 3 weeks ago
.gitignore Initial commit 3 weeks ago
LICENSE Initial commit 3 weeks ago
README.md Reflect secret URL in the readme 3 weeks ago
main.py add command line options to protect app with secret url. also option to define what counts as 'soon' in days 3 weeks ago
screenshot.jpg screenshot in readme 3 weeks ago

README.md

neverending-todo-list

A Flask app that displays recurring tasks, allowing you to mark them as done. Completed tasks will reappear after a specified interval of days.

Screenshot

Screenshot

How to Use

Prerequisites

Ensure you have Flask installed in your Python environment.

Running the Application

To run the neverending-todo-list application, use the following command:

./main.py [--secret SECRET_STRING] [--soon SOON_DAYS]

  • --secret SECRET_STRING: (Optional) Provide a secret string for minimal security. If set, this string must be included as a query parameter in the URL to access the application.
  • --soon SOON_DAYS: (Optional) Define how many days are considered 'soon', which affects the color of the task cards. Defaults to 21 days if not specified.

Accessing the Application

  • If you started the application with a secret string, navigate to http://yourappdomain.com:5000/?secret=YOUR_SECRET_STRING.
  • If no secret string was provided, simply go to http://yourappdomain.com:5000/.

Replace yourappdomain.com with your server's domain or IP address, and YOUR_SECRET_STRING with the secret string you used to start the application.

Create data files

You can distribute tasks across multiple .ini files placed in the data/ directory. Each file can hold one or more sections like [unqiueNameWithoutSpaces].

There are two types of tasks:

  1. Recurring Tasks: These include activities like haircuts or car oil changes, which, once marked as done, will reappear after a set number of days.

  2. Annual Events: Such as birthdays, these tasks automatically reappear each year.

Each task card requires a title, description, and an image. Be concise with text, as space on the card is limited. Images auto-scale to 250x200px; for optimal performance, use images close to these dimensions. A default "blank.jpg" image is provided.

Task Card Appearance

  • White Background: Task is due in the future.
  • Yellow Background: Task is due within 3 weeks.
  • Red Background: Task is overdue. These remain at the front of the list until marked as done.

To mark a task as done, click on it (after confirmation), and it will be rescheduled based on the intervalInDays value.

Example Task Format

Recurring Task in .ini:

[somethingUniqueForThisFileWithoutSpaces]
title = Haircut
description = 9mm on the sides, 12mm on top.
image = images/haircut.jpg
fixed = False
lastDate = 2023-11-13
intervalInDays = 60

Annual Event

  • Set fixed = True to indicate the task repeats annually.
  • Use intervalindays = 0 as these tasks recur yearly.

For lastDate, specify a date to indicate when the event occurs each year. The year part of this date is not critical, as the application will automatically adjust to show the next occurrence of the event in the current or following year.

[somethingUniqueForThisFileWithoutSpaces]
title = Nils' Birthday
description = Born 1983-08-17!
image = images/nils.jpg
fixed = True
lastDate = 1983-08-17
intervalInDays = 0

Adding, Deleting, or Manually Editing Tasks

Create, copy and edit the .ini files using any text editor to add, delete, or manually modify tasks. Ensure the program is stopped before editing and restart it afterward to load changes.