/taskmate

Taskmate is a free task management tool that helps you stay organised and on top of your work. Taskmate, you can create tasks, set deadlines, track progress and receive email notifications.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

TaskMate

Heres a basic to do list to keep you accountable of your tasks. Simply register your own user, create a task with a title, due date and description. Each task can have comments made.

When your task is overdue, you will see an "Overdue" message displayed, along with an increment of the overdue task counter in the UI. Once completed, move the task to Done. Otherwise, Delete the task to be lost forever.

Live Demo

https://taskmate.digital

Features

  • Multitenancy with a shared database schema
  • Basic Authentication
  • Secure session management protected by IP and login device
  • Written in Flask with gunicorn for performance
  • Feature rich To Do list
  • Easy ability to self host via cli or Docker
  • Application wide logging
  • SMTP support
  • Clean and simple UI
  • Postgres, SQLite support
  • Timezone support

Setup

Initialise the database and virtual environment. 🚨 Please note that psycopg2 is needed for make db but needs to be removed when building the Docker image.

  virtualenv venv
  source venv/bin/active
  venv/bin/pip install -r requirements.txt
  make env db 

Please change any values needed in .env

Run locally

Run with the Makefile

  make run

You can run with debug mode enabled with the Makefile

  make debug

Building the Docker image

Run with the Makefile

  make build

Docker

Run with docker-compose (development environment)

  make docker-dev

Please change any values needed in .env and docker-compose/docker-compose-dev.yaml

Run with docker-compose (production environment)

  make docker

Please change any values needed in .env and docker-compose/docker-compose.yaml

Testing

Run Pytest against the code, including test coverage

  make test sast

Authors

Screenshots

Creating a task:

Active tasks:

Done tasks:

First view upon login:

Email received after creating a task:

Roadmap

Order depends on what I feel like working on when I have the free time 😃

  • CI/CD pipeline to build image and push to Dockerhub
  • Add pytest coverage
  • Introduction of testing using pytests
  • Proper logging instead of just printing values everywhere
  • Redesigned frontend using Bootstrap
  • Add edit & delete for comments
  • Deploying this in AWS
  • Add get_task before anything that uses the existing task to check it exists
  • Switch to flask-sqlalchemy to support more db engines
  • Add timezone support
  • Test errors - redirect with flash instead of continuing with flash ⌛
  • Add support for multiple users in a tenancy
  • SMTP integration for notifications (task creation/overdue/comments left)
  • Add advanced pytests ⌛
  • Refactoring ⌛
  • Input validation, text length limits for title, description, comments
  • File uploads for each task
  • Add caching for performance
  • Introduce background tasks with celery (for emails etc) to reduce waiting times ⌛
  • Improve security
    • Enable HTTPS
    • Flask-talisman
    • Flask-paranoid
    • Password Reset
    • Password complexity
    • Account verification
  • Fix text wrapping on mobile/desktop view
  • Pytest for Flask-SQLAlchemy: https://github.com/jeancochrane/pytest-flask-sqlalchemy
  • Need to fix the images as they don't work from github anymore