A modern, full-stack task management application with support for both human users and AI agents.
- Task Management: Create, view, edit, and delete tasks
- Rich Descriptions: Markdown-supported task descriptions
- Task Organization:
- Categories with custom colors
- Priority levels
- Status tracking (Todo, In Progress, Done)
- Due dates
- User assignments
- Multiple Views:
- List view with filtering
- Kanban board with drag-and-drop
- Email + Password: Traditional authentication with TOTP 2FA support
- Passkey Support: Passwordless authentication using WebAuthn
- Session-based Auth: Secure session management with Flask-Login
- API Key Auth: Programmatic access for AI agents and integrations
- System Users: Special user accounts for AI agents
- API Key Authentication: Secure API access without sessions
- Agent Skill Package: Pre-built skill for easy agent integration
- Full API Access: Agents can perform all task operations
- Framework: Flask (Python)
- Database: MySQL (configurable, defaults to SQLite for development)
- ORM: SQLAlchemy
- Authentication: Flask-Login + WebAuthn (Fido2)
- API: RESTful JSON API
- Framework: React 19 with TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS
- Markdown: react-markdown for rich descriptions
- HTTP Client: Axios
- Python 3.8+
- Node.js 18+
- MySQL (optional, SQLite used by default)
Navigate to backend directory:
cd backendCreate and activate virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
Install dependencies:
pip install -r requirements.txt
Configure environment (optional):
cp .env.example .env # Edit .env with your settingsRun the application:
PYTHONPATH=/path/to/task-tracker FLASK_APP=backend.app:create_app flask run
The backend will be available at
http://localhost:5000
Navigate to frontend directory:
cd frontendInstall dependencies:
npm install
Start development server:
npm run dev
The frontend will be available at
http://localhost:5173
The first user to register automatically becomes an admin with full system privileges, including the ability to create system users for AI agents.
# Register
POST /api/auth/register
{
"email": "user@example.com",
"password": "password123",
"name": "John Doe"
}
# Login
POST /api/auth/login
{
"email": "user@example.com",
"password": "password123"
}All endpoints that support API key authentication accept the X-API-Key header:
curl -H "X-API-Key: YOUR_API_KEY" http://localhost:5000/api/tasks| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /api/tasks | List all tasks | Session or API Key |
| POST | /api/tasks | Create a task | Session or API Key |
| GET | /api/tasks/:id | Get task details | Session or API Key |
| PUT | /api/tasks/:id | Update a task | Session or API Key |
| DELETE | /api/tasks/:id | Delete a task | Session or API Key |
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /api/categories | List categories | Session or API Key |
| GET | /api/priorities | List priorities | Session or API Key |
| GET | /api/auth/users | List users | Session or API Key |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/users/system | List system users |
| POST | /api/users/system | Create system user |
| PUT | /api/users/system/:id | Update system user |
| DELETE | /api/users/system/:id | Delete system user |
| POST | /api/users/system/:id/reset-key | Reset API key |
| POST | /api/users/system/:id/enable | Enable user |
| POST | /api/users/system/:id/disable | Disable user |
cd backend
python -m pytesttask-tracker/
├── backend/
│ ├── app.py # Flask application factory
│ ├── models.py # Database models
│ ├── routes/ # API route handlers
│ │ ├── auth.py # Authentication endpoints
│ │ ├── tasks.py # Task CRUD endpoints
│ │ ├── references.py # Reference data endpoints
│ │ └── users.py # System user management
│ ├── auth/ # Auth utilities
│ │ └── decorators.py # Auth decorators
│ ├── schemas.py # Marshmallow schemas
│ └── tests/ # Test suite
├── frontend/
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── api/ # API client
│ │ └── types/ # TypeScript types
│ └── public/
├── .agent/
│ └── skills/
│ └── task-tracker/ # Agent skill package
└── specs/ # Project specifications
See AGENTS.md for detailed information on integrating AI agents with the Task Tracker application.
Quick start for agents:
- Admin creates a system user via
/api/users/system - Agent receives API key (shown only once)
- Agent uses API key in
X-API-Keyheader for all requests - Full task management capabilities available
SECRET_KEY: Flask secret key for session managementDATABASE_URL: Database connection string (default: SQLite)FLASK_ENV: Environment (development,production)
VITE_API_URL: Backend API URL (default:http://localhost:5000)
- Set up MySQL database
- Configure environment variables
- Run database migrations
- Use a production WSGI server (e.g., Gunicorn)
- Configure reverse proxy (e.g., Nginx)
- Build the frontend:
npm run build - Serve the
distdirectory with a web server
The application is designed for Kubernetes deployment. Ensure health check endpoints are properly configured.
[Your License Here]
[Contributing Guidelines Here]
For issues and questions, please use the GitHub issue tracker.