MCT is a Flask project management dashboard built around a simple hierarchy:
Projects -> Milestones -> Checkpoints -> Tasks
It is intended for personal work, small teams, and project tracking where the important data is progress, blockers, costs, documents, and task ownership.
- Project, milestone, checkpoint, and task tracking
- Task dependencies and status management
- Problem tracking at project, milestone, or checkpoint level
- Markdown project documents
- Cost and work-time tracking
- User login, user profiles, task assignments, and personal/team notes
- Search by task/problem code
- Optional local AI project briefs through a Qwen sidecar service
- Python and Flask
- Flask-SQLAlchemy
- Flask-Login
- Flask-WTF
- SQLite by default
- Bootstrap 5, Font Awesome, and Chart.js
- Python 3.10 or newer
- Git
git clone https://github.com/JMartinezRuiz/MCT.git
cd MCT
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txtCreate a local .env or set environment variables in your shell. At minimum, set a real secret key before exposing the app outside your machine.
$env:SECRET_KEY = "replace-with-a-long-random-secret"
$env:DATABASE_URL = "sqlite:///D:/Github/MCT/mct.db"flask --app run.py init-db
python run.pyThe app runs at:
http://127.0.0.1:5000
Default local credentials:
Username: admin
Password: admin
Change the default password after the first login.
MCT can generate a project brief from the current project structure by calling a local Qwen sidecar service.
On this machine, the local model was found at:
D:\AI\Models\Qwen\Qwen3.5-0.8B
Start the sidecar:
& "D:\AI\Models\Qwen\Qwen3.5-0.8B\.venv\Scripts\python.exe" scripts\qwen_mct_server.py --model-dir "D:\AI\Models\Qwen\Qwen3.5-0.8B"Then run MCT with:
$env:MCT_AI_BASE_URL = "http://127.0.0.1:7861"
$env:MCT_AI_TIMEOUT = "90"
python run.pyMore details are in docs/AI.md.
app/
blueprints/ Flask routes grouped by feature
forms/ WTForms form definitions
models/ SQLAlchemy models
services/ Service integrations
static/ CSS, JavaScript, images
templates/ Jinja templates
utils/ Database and formatting helpers
docs/ Project documentation
scripts/ Utility and AI sidecar scripts
tests/ Unit tests
run.py Development entry point
python -m compileall -q app run.py tests scripts
python -m unittest discover -s tests- Do not commit
.env, local databases, uploads, virtual environments, or model files. - Set
SECRET_KEYbefore using the app beyond local development. - The default
admin/adminaccount is for first local setup only. - Passwords are stored with Werkzeug password hashing. Existing legacy plain-text passwords are upgraded after a successful login.
The repository includes a seed data exporter for future supervised fine-tuning:
python scripts\export_ai_training_seed.py --output data\ai_training_seed.jsonlThe exported records need curated assistant responses before they are useful for supervised fine-tuning. See docs/AI.md.
MIT License.