Flask-Todolist is a simple To Do List web application with the most basic features of most web apps, i.e. accounts/login, API and (somewhat) interactive UI.
I've also build a quite similar app in Django: https://github.com/rtzll/django-todolist
Try it out!
Using docker-compose you can simple run:
docker-compose build
docker-compose up
And the application will run on http://localhost:8000/
(It's serving the app using gunicorn which you would use
for deployment, instead of just running flask run.)
If you prefer to run it directly on your local machine, you can use uv for dependency management.
uv sync
FLASK_APP=todolist.py uv run flask run
To add some 'play' data you can run
uv run flask fill-db
To run the test suite:
uv run python -m unittest discover tests/ -v
Now you can browse the API: http://localhost:5000/api/users
Pick a user, login as the user. Default password after fill-db is
correcthorsebatterystaple. Click around, there is not too much, but I like the
overview under: http://localhost:5000/todolists (You must be logged in to see
it.)
In the process of this project I used a couple of extensions.
| Usage | Flask-Extension |
|---|---|
| Model & ORM | Flask-SQLAlchemy |
| Migration | Flaks-Migrate |
| Forms | Flask-WTF |
| Login | Flask-Login |
| Testing | Flask-Testing |
I tried out some more, but for the scope of this endeavor the above mentioned extensions sufficed.