CLI Todo app made with typer, sqlite and a REST API
Project description
todo-cli-tddschn
A simple command-line Todo app made with typer, sqlite and a REST API.
Features
- Creating, reading, updating, and deleting todos;
- Nicely formatting the outputs (with color);
todo ls
lists all todos, ordered by priority and due date, the todos without a due date are put last (nullslast).- Not only the command line interface - you can also CRUD your todos by making HTTP requests to the REST API.
Install, Upgrade and Uninstall
pipx (recommended)
- Install
pipx install todo-cli-tddschn
- Upgrade
pipx upgrade todo-cli-tddschn
- Uninstall
pipx uninstall todo-cli-tddschn
About pipx
pip
- Install
pip install todo-cli-tddschn
- Upgrade
pip install --upgrade todo-cli-tddschn
- Uninstall
pip uninstall todo-cli-tddschn
Usage
todo
You can add, modify, or remove (all) todos with the todo
command:
todo --help
Usage: todo [OPTIONS] COMMAND [ARGS]...
tddschn's command line todo app
Options:
-v, --version Show the application's version and exit.
--install-completion Install completion for the current shell.
--show-completion Show completion for the current shell, to copy it or
customize the installation.
--help Show this message and exit.
Commands:
a Add a new to-do with a DESCRIPTION.
clear Remove all to-dos.
config Getting and managing the config
g Get a to-do by ID.
info Get infos about todos
init Initialize the to-do database.
ls list all to-dos, ordered by priority and due date.
m Modify a to-do by setting it as done using its TODO_ID.
re-init Re-initialize the to-do database.
rm Remove a to-do using its TODO_ID.
todo ls
List and filter the todos.
todo ls --help
Usage: todo ls [OPTIONS] COMMAND [ARGS]...
list all to-dos, ordered by priority and due date.
Options:
-d, --description TEXT
-p, --priority [low|medium|high]
-s, --status [todo|done|deleted|cancelled|wip]
-pr, --project TEXT
-t, --tags TEXT
-dd, --due-date [%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%d %H:%M:%S]
--help Show this message and exit.
Commands:
project Filter to-dos by project.
tag Filter to-dos by tag.
todo serve
Serve the REST API (built with FastAPI)
todo serve --help
Usage: todo serve [OPTIONS]
serve REST API. Go to /docs for interactive documentation on API usage.
Options:
--host TEXT [default: 127.0.0.1]
--port INTEGER [default: 5000]
--log-level TEXT [default: info]
--help Show this message and exit.
todo config
Get or edit the configurations
todo config --help
Usage: todo config [OPTIONS] COMMAND [ARGS]...
Getting and managing the config
Options:
--help Show this message and exit.
Commands:
db-path Get the path to the to-do database.
edit Edit the config file. # Opens in default editor
path Get the path to the config file.
todo info
Get the info and stats about the todos.
todo info --help
Usage: todo info [OPTIONS] COMMAND [ARGS]...
Get infos about todos
Options:
--help Show this message and exit.
Commands:
count Get todo counts
todo utils
Utility commands.
todo utils --help
Usage: todo utils [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
export Export todos to todo commands that can be used to re-construct your todo database
fill-date-added-column fill date_added column with the current time if it's null # used for migrate to v1.0.0
Configuration
Example config file:
[General]
home_dir = /Users/tscp # set it to your $HOME
database = %(home_dir)s/.todo-cli-tddschn.db # or anywhere you'd like
[Format]
# see https://strftime.org/ for the format specs
due_date = %%m-%%d
date_added = %%m-%%d
You can install this file with the following command:
curl -o "$(todo config path)" https://raw.githubusercontent.com/tddschn/todo-cli-tddschn/master/examples/config.ini
Migrate to v1.0.0
todo
v1.0.0 added a new column date_added
to the todo
table of the todo database,
and you need to migrate your todo database to v1.0.0 if you were using a previous version.
Here's the how:
-
Install alembic, the database migration tool.
pip install alembic # or method of your choice
-
Run the migration scripts in this repository and fill the new column with the current time:
# clone this repository git clone https://github.com/tddschn/todo-cli-tddschn.git cd todo-cli-tddschn # edit alembic.ini, change the sqlalchemy.url to your database url vim alembic.ini # migrate to new db schema python -m alembic revision --autogenerate -m "Initial Migration" python -m alembic upgrade head python -m alembic revision --autogenerate -m "Add date_added to Todo model" python -m alembic upgrade head # fill the new column (make sure to upgrade to v1.0.1 first) todo utils fill-date-added-column
Why do you made this?
For practicing my python and SQL skills.
If you're looking for an awesome CLI todo app, try taskwarrior.
SQLite database schema
Screenshots
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file todo-cli-tddschn-1.1.1.tar.gz
.
File metadata
- Download URL: todo-cli-tddschn-1.1.1.tar.gz
- Upload date:
- Size: 15.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.10.4 Darwin/21.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c75c80c7e5a1c704b764f842155c5fd963176f93e535381b16e1148d9e0de544 |
|
MD5 | 5a2368e372bbf67b266045f95919663f |
|
BLAKE2b-256 | 5c31d118b4a1028f977fe4e4679858ab8677fb986cf39019675b450435483a18 |
File details
Details for the file todo_cli_tddschn-1.1.1-py3-none-any.whl
.
File metadata
- Download URL: todo_cli_tddschn-1.1.1-py3-none-any.whl
- Upload date:
- Size: 16.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.10.4 Darwin/21.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8298811faf10ef0b1fd95faecca43f809d3062fdefad0c894f2b321e82460d03 |
|
MD5 | 1204a3a4245c191c4f340434050edee3 |
|
BLAKE2b-256 | b3981acd54decc75d91e3d7b148bc54c5a3277ae5b3bfe7d1e92c7fdcc09884e |