A modern Flask-based project and task management application with advanced features.
- User Authentication: Secure register/login with Flask-Login
- RBAC & Admin Tools: Admin-only pages for reports, user management, and audit viewing
- Project Management: Deadlines, team assignments, and progress tracking per project
- Task Tracking: Priorities, dependencies, subtasks, comments, and status workflow
- Collaboration: Multi-assignee tasks and team views
- File Management: Upload/download/delete project files (with audit logs)
- Email Notifications: Task assignment and status-change notifications (optional mail setup)
- Real-time: Socket.IO integration prepared for live updates/notifications
- REST API: Token/session authenticated API for Projects/Tasks and analytics
- Analytics: Metrics, performance, activity, and project analytics endpoints
- CSV Export: Export project tasks to CSV
- Modern UI: Responsive interface with utility-first styles
- Database: SQLAlchemy ORM (SQLite by default; PostgreSQL/MySQL supported via URI)
pip install -r requirements.txtCreate a .env file in the project root:
# Flask Configuration
SECRET_KEY=your-secret-key-here
FLASK_ENV=development
FLASK_APP=app.py
# Database Configuration
DATABASE_URL=sqlite:///app.db
# Mail Configuration (Optional)
MAIL_SERVER=smtp.gmail.com
MAIL_PORT=587
MAIL_USE_TLS=true
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
MAIL_DEFAULT_SENDER=your-email@gmail.com
# App Configuration
APP_BASE_URL=http://localhost:5000python init_db.pyThis will create the database tables and optionally create sample data.
flask runThe application will be available at http://localhost:5000
-
Register a new account or use the sample accounts:
- admin / admin123
- john_doe / password123
- jane_smith / password123
-
Create projects and assign team members
-
Add tasks with dependencies and priorities
-
Track progress and collaborate with your team
# Get API token
curl -X POST http://localhost:5000/api/token \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "admin123"}'GET /api/projects- List all projectsGET /api/projects/{id}- Get project detailsGET /api/tasks- List all tasksPOST /api/tasks- Create new taskGET /api/tasks/{id}- Get task details
Build and run with Docker:
docker build -t tekista .
docker run -p 5000:5000 --env-file .env tekistaUsing Docker Compose (recommended):
docker-compose up --build- Task Dependencies: Set up task dependencies to ensure proper workflow
- Priority Management: Assign Low, Normal, or High priorities to tasks
- Status Tracking: Track tasks through To Do, In Progress, and Done states
- Email Notifications: Get notified when tasks are assigned or status changes
- CSV Export: Export project tasks to CSV format
- API Token Management: Generate and revoke API tokens for secure access
The application uses the following main entities:
- Users: Authentication and user management
- Projects: Project containers with deadlines and team assignments
- Tasks: Individual work items with dependencies and assignees
- Comments: Task discussion and collaboration
- Associations: Many-to-many relationships for project users and task assignees
- Clone the repository
- Install dependencies:
pip install -r requirements.txt - Initialize database:
python init_db.py - Run application:
flask run - Open browser to
http://localhost:5000 - Login with admin/admin123 to get started!
- App Factory:
app.create_app()wires extensions, blueprints, error handlers - Blueprints:
auth/for authentication (/login,/register,/logout)projects/for project pages and CSV exporttasks/for task CRUD and detailsapi/for REST API (token, CRUD, analytics)notifications_*for notification integrations
- Models:
models.pywithUser,Project,Task,Comment,Role,AuditLog - Realtime: Socket.IO setup via
socket_events.init_socketio()
app.py # App factory and core routes
models.py # SQLAlchemy models
auth/, projects/, tasks/ # Blueprints (routes, forms, templates)
api/ # REST API and token auth
templates/ # Jinja HTML templates
static/ # CSS/JS assets
tests/ # Pytest test suite
docker-compose.yml # Local container orchestration
See .env.example. Common keys:
SECRET_KEYβ Flask secretSQLALCHEMY_DATABASE_URIorDATABASE_URLβ DB connection (SQLite by default)MAIL_*β optional email deliveryAPP_BASE_URLβ base URL
- Dev:
flask run(ensureFLASK_APP=app.pyor usepython app.py) - Init DB:
python init_db.py - WS/SocketIO: Initialized in
app.create_app(); useflask runor production SocketIO server as needed - Docker:
docker-compose up --build
Pytest-based suite located in tests/.
pytest -q
pytest --cov=. -q
Coverage includes auth flows, RBAC/audit, API CRUD, project filters, tasks, admin reports, analytics.
- Auth
POST /api/tokenβ issue API token (username/password)POST /api/token/revokeβ revoke token (requires auth)
- Projects
GET/POST /api/projectsGET/PATCH/DELETE /api/projects/<id>GET /projects/<id>/exportβ CSV export (admin only)
- Tasks
GET/POST /api/tasksGET/PATCH/DELETE /api/tasks/<id>
- Analytics
GET /api/analytics/metricsGET /api/analytics/performanceGET /api/activityGET /api/projects/<id>/analytics
GET /reportsβ admin reports page (RBAC protected)GET/POST /admin/usersβ user role management and filtersGET /admin/auditβ audit log viewer with filters- File operations (admin):
/files/upload,/files/download/...,/files/delete
- Enhanced Realtime: live updates for tasks/projects over WebSocket
- Role/Permission Editor: UI to manage custom roles and permissions
- Advanced Analytics: backlog aging, burnup/burndown, velocity
- Integrations: GitHub/Jira import, Slack/Teams notifications
- Attachments: Virus scan and storage backends (S3, GCS)
- i18n: Multi-language support
- E2E Tests: Playwright/Cypress flows for critical paths
Issues and PRs are welcome. Please run the test suite before submitting changes:
pytest -q
MIT (or your preferred license)