A clean minimal task tracking engine with layered architecture.
Project description
Taskforge
A clean, minimal task tracking engine built with layered architecture, UUID identity, JSON persistence, and pytest-driven development.
Features
- Clean layered architecture:
domainservicesstoragecli
- Stable UUID-based task identity
- JSON persistence
- Backward compatible data loading
- CLI with subcommands
- Pytest test suite
- GitHub Actions CI
- 79%+ test coverage
Architecture Overview
CLI
↓
Tracker (Application Service)
↓
Task (Domain Model)
↓
Repository Interface
↓
JSON Repository
Desing Principles Used
- Single Responsibility Principle
- Dependency Inversion
- Encapsulation
- Backward Compatibility
- Separation of Concerns
Installation
git clone https://github.com/itsar-t/taskforge.git
cd taskforge
Create virtual environment:
python -m venv venv
venv\Scripts\activate # Windows
Install editable:
pip install -e .
Usage
Add a task:
taskforge add "Learn architecture"
List tasks:
taskforge list
List pending tasks:
taskforge list --pending
List done tasks:
taskforge list --done
Mark done (using short UUID prefix):
taskforge done a1b2c3d4
Mark undone (using short UUID prefix):
taskforge undone a1b2c3d4
Switch done (using short UUID prefix):
taskforge switch a1b2c3d4
Remove:
taskforge rm a1b2c3d4
Remove ALL tasks:
taskforge rm --all
Remove ALL tasks without confirmation:
taskforge rm --all --yes
Remove ALL PENDING tasks:
taskforge rm --pending
Remove ALL PENDING tasks without confirmation:
taskforge rm --pending --yes
Remove ALL DONE tasks (No confirmation on this one):
taskforge rm --done
Example Output
1. [Undone] (a1b2c3d4) Learn architecture
2. [Done] (f8e9d123) Build portfolio project
Running Tests
Install pytest
pip install -e .[dev]
Run:
pytest
Example output:
7 passed in 0.24s
Coverage: 79%
Project Structure
taskforge/
│
├── src/
│ └── taskforge/
│ ├── domain/
│ │ └── task.py
│ ├── services/
│ │ └── tracker.py
│ ├── storage/
│ │ ├── repository.py
│ │ └── json_repo.py
│ ├── cli.py
│ └── __main__.py
│
├── tests/
│ ├── test_task.py
│ ├── test_tracker.py
│ └── test_json_repo.py
│
├── pyproject.toml
└── README.md
Persistence
Tasks are stored in:
data/tasks.json
The system is backward compatible:
- Missing
idfields are automatically generated. - Missing
donefields default toFalse.
Future Improvements
- SQLite backend
- Rich CLI formatting (rich library)
- Sorting & filtering
- Export / import
- REST API wrapper
- Packaging for PyPI
License
MIT License
Copyright (c) 2026 Rasti
Author
Rasti
Built as a learning project in clean Python architecture and testing discipline.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file taskforge_rasti-0.1.0.tar.gz.
File metadata
- Download URL: taskforge_rasti-0.1.0.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba579b38e2976befe22935711408038883d0555e617d6d46450ed694cb101015
|
|
| MD5 |
a76f6116660fb40b00b6dec430e467f3
|
|
| BLAKE2b-256 |
0133ab030e3c86cf6d290793fd7c9019b0becf60754ec432d52b5b9c00d03204
|
File details
Details for the file taskforge_rasti-0.1.0-py3-none-any.whl.
File metadata
- Download URL: taskforge_rasti-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b58f05f4d8e17bea7ab472ea5c5834c1e6f3a4d773e997eb02e0e2afe610adf
|
|
| MD5 |
c838638ed1ab706d584545c6121dbb4d
|
|
| BLAKE2b-256 |
f1be168ac73324dfcd068f2c7757448e99936a5e6e6036e3ef729d57375583b8
|