Skip to content

shaanlabs/Tekista

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

25 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Tekista

A modern Flask-based project and task management application with advanced features.

πŸš€ 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)

πŸ› οΈ Setup Instructions

1. Install Dependencies

pip install -r requirements.txt

2. Environment Configuration

Create 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:5000

3. Initialize Database

python init_db.py

This will create the database tables and optionally create sample data.

4. Run the Application

flask run

The application will be available at http://localhost:5000

πŸ“± Usage

Web Interface

  1. Register a new account or use the sample accounts:

    • admin / admin123
    • john_doe / password123
    • jane_smith / password123
  2. Create projects and assign team members

  3. Add tasks with dependencies and priorities

  4. Track progress and collaborate with your team

REST API

Authentication

# Get API token
curl -X POST http://localhost:5000/api/token \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": "admin123"}'

API Endpoints

  • GET /api/projects - List all projects
  • GET /api/projects/{id} - Get project details
  • GET /api/tasks - List all tasks
  • POST /api/tasks - Create new task
  • GET /api/tasks/{id} - Get task details

🐳 Docker Support

Build and run with Docker:

docker build -t tekista .
docker run -p 5000:5000 --env-file .env tekista

Using Docker Compose (recommended):

docker-compose up --build

πŸ”§ Advanced Features

  • 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

πŸ“Š Database Schema

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

πŸš€ Quick Start

  1. Clone the repository
  2. Install dependencies: pip install -r requirements.txt
  3. Initialize database: python init_db.py
  4. Run application: flask run
  5. Open browser to http://localhost:5000
  6. Login with admin/admin123 to get started!

🧱 Architecture Overview

  • App Factory: app.create_app() wires extensions, blueprints, error handlers
  • Blueprints:
    • auth/ for authentication (/login, /register, /logout)
    • projects/ for project pages and CSV export
    • tasks/ for task CRUD and details
    • api/ for REST API (token, CRUD, analytics)
    • notifications_* for notification integrations
  • Models: models.py with User, Project, Task, Comment, Role, AuditLog
  • Realtime: Socket.IO setup via socket_events.init_socketio()

πŸ“ Directory Structure

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

βš™οΈ Environment Variables

See .env.example. Common keys:

  • SECRET_KEY β€” Flask secret
  • SQLALCHEMY_DATABASE_URI or DATABASE_URL β€” DB connection (SQLite by default)
  • MAIL_* β€” optional email delivery
  • APP_BASE_URL β€” base URL

▢️ Running

  • Dev: flask run (ensure FLASK_APP=app.py or use python app.py)
  • Init DB: python init_db.py
  • WS/SocketIO: Initialized in app.create_app(); use flask run or production SocketIO server as needed
  • Docker: docker-compose up --build

βœ… Testing

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.

🌐 API Overview

  • Auth
    • POST /api/token β€” issue API token (username/password)
    • POST /api/token/revoke β€” revoke token (requires auth)
  • Projects
    • GET/POST /api/projects
    • GET/PATCH/DELETE /api/projects/<id>
    • GET /projects/<id>/export β€” CSV export (admin only)
  • Tasks
    • GET/POST /api/tasks
    • GET/PATCH/DELETE /api/tasks/<id>
  • Analytics
    • GET /api/analytics/metrics
    • GET /api/analytics/performance
    • GET /api/activity
    • GET /api/projects/<id>/analytics

πŸ”’ Admin Tools

  • GET /reports β€” admin reports page (RBAC protected)
  • GET/POST /admin/users β€” user role management and filters
  • GET /admin/audit β€” audit log viewer with filters
  • File operations (admin): /files/upload, /files/download/..., /files/delete

πŸ—ΊοΈ Roadmap / Future Plans

  • 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

🀝 Contributing

Issues and PRs are welcome. Please run the test suite before submitting changes:

pytest -q

πŸ“„ License

MIT (or your preferred license)

About

Tekista is a feature-rich, intelligent SaaS platform designed to streamline project and task management for teams of any size. Combining AI-driven automation, real-time collaboration, and advanced analytics, Tekista ensures that organizations can manage projects, allocate resources, and monitor performance effortlessly...

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors