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.
- 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
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 with the Makefile
make run
You can run with debug mode enabled with the Makefile
make debug
Run with the Makefile
make build
make docker-dev
Please change any values needed in .env
and docker-compose/docker-compose-dev.yaml
make docker
Please change any values needed in .env
and docker-compose/docker-compose.yaml
Run Pytest against the code, including test coverage
make test sast
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 ⌛
- Removed unused packages:
- Clean up HTML
- Refactor application structure
- 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