A Terminal Calendar Task App: TasCal
A lightweight terminal-based calendar app for writing and managing date-specific notes — powered by Python's curses module.
No mouse. No cloud. No distractions.
Features
- Interactive calendar interface (arrow key navigation)
- Add multiple notes to any date
- Modify or delete individual notes
- Past dates are locked (read-only)
- Local-only data storage (
notes.json) - Runs in any Unix-like terminal (Linux, macOS, WSL, SSH, etc.)
Why?
Most calendar and notes apps are over-engineered, visually bloated, and tethered to cloud ecosystems. This app is:
- Minimal
- Private
- Fast
- Ideal for developers, sysadmins, and minimalists
Use it in your terminal. On your laptop. On your server. On your Raspberry Pi.
How It Works
- Notes are stored per date in
notes.json - You can add, modify, and delete individual notes
- Each date can contain multiple notes
- Terminal UI highlights today and the selected day
Controls
| Key | Action |
|---|---|
| Arrow keys | Navigate the calendar |
a |
Add a note to selected date |
m |
Modify a specific note |
d |
Delete a specific note |
q |
Quit the app |
Installation
1. Pip
pip install tascal
2. (Optional) GitHub Repo
git clone https://github.com/bearenbey/tascal.git
cd tascal/tascal
python3 cli.py
# or
git clone https://github.com/bearenbey/tascal.git
cd tascal
pip install .
Data Format
All notes are saved in a local notes.json file in this format:
{
"2025-07-02": ["Doctor at 10am", "Lunch with Sam"],
"2025-07-05": ["Send invoices"]
}
License
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see https://www.gnu.org/licenses/.
© 2025 Eren Öğrül termapp@pm.me
Metadata
Release files for tascal 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tascal-0.2.0.tar.gz | 5.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tascal-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.3 kB
Release files / tascal-0.2.0.tar.gz
| Download URL | tascal-0.2.0.tar.gz |
|---|---|
| Size | 5.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a20f642f06841d3df7054090c616c8cc182a1d5642ba32f59cc0bce12d90b324
|
|
BLAKE2b-256 checksum How to use checksums |
d8f41e373f03e5b44bb4c9ba9a016b7a46fd438b81b8f51994533d3f7e3860c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|
Release files / tascal-0.2.0-py3-none-any.whl
| Download URL | tascal-0.2.0-py3-none-any.whl |
|---|---|
| Size | 6.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b71a47dcbd7001acdc2770a7a9b7ba6160c29e949d35e214779ca47f8e1c4dd1
|
|
BLAKE2b-256 checksum How to use checksums |
34d5942bb95ccdf054860e5f54640ae738fb874bc2e36d0733511b4ff2a60146
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|