A modern, interactive todo list application built with plotly Dash and Dash Mantine Components. No need for Flask, nor Javascript. This is 95% Python and 5% CSS for the styles :-)
This repository is part of a 3 part tutorial on Dash-Resources.com:
- Part 1: Setup the layout, handle a minimal task list
- Part 2: Handle multiple lists and save tasks on page reload
- Part 3 coming soon...
Here's a quick demo (open the live app here):
- Clone this repository:
git clone https://github.com/Spriteware/dash-plotly-todo-app.git
cd dash-todo-app
- Create a virtual environment and activate it:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- Install required packages:
pip install -r requirements.txt
Start the app (or one of the intermediate app) with:
python app5.py
Visit http://localhost:8050
in your web browser to use the app.
The .py files are intermediate scripts to get to the final result.
dash-todo-app/
├── assets/
│ └── style.css # Custom CSS styles
├── app1.py
├── app2.py
├── app3.py
├── app4.py
├── app5.py # This is the final app
└── README.md
This project uses Dash Mantine Components (DMC): https://www.dash-mantine-components.com/ Key components are:
Paper
: Main container with shadow and rounded cornersGrid
: Flexible layout system for task itemsCheckbox
: Task completion statusInput
: Editable task textActionIcon
: Delete button with icon
The app uses Dash's pattern-matching callbacks to handle dynamic content:
- Tasks can be added and removed without page refresh
- Each task has unique identifiers for targeted updates
- CSS handles visual feedback for better performance
This code is under the "Do whatever you want with it" license. :-)
- Built with Dash
- UI components from Dash Mantine Components
- Icons from Dash Iconify