TaskiMate is a premium, real-time software development ticket dashboard and project workspace modeled after Atlassian Jira. It pairs a responsive, high-fidelity React frontend with a high-velocity FastAPI backend.
Designed for high-scale collaborative teams, TaskiMate features strict schema validations, role-based access control, server-side Google OAuth, Redis-backed WebSocket scaling, and MongoDB transactional safety.
TaskiMate is built upon several modern architectural foundations:
- GraphQL API Layer: Transitioned core data retrieval from REST to a nested GraphQL query layer using Strawberry GraphQL and FastAPI. This allows the client to load complex boards, tickets, and activities in a single roundtrip while completely eliminating over-fetching.
[!NOTE] For a full design review of this decision, see rest_to_graphql.md.
- MongoDB ACID Transactions: Operations (such as status updates or issue creation) write atomically across multiple collections (e.g., tickets, activities) using client sessions. If database operations fail, the state rolls back to maintain database consistency.
- Google OAuth 2.0 Flow: Replaced manual OTP input with a secure, server-side authorization code flow redirecting users directly to Google's consent portal and issuing localized JWT tokens.
- Scale-Out WebSockets: Distributed updates are synchronized across multiple parallel server instances using Redis Pub/Sub to broadcast real-time events uniformly.
- Role-Based Access Control (RBAC): Access is partitioned into Admin, Member, and Viewer roles with corresponding UI visibility toggles and backend endpoint guards.
- Brand-Aligned Dynamic Theme: On startup, a pure-Python PNG chunk decoder reads
logo.png, crops it to its content box, and extracts the dominant color to override Tailwind v4 theme variables, aligning the site color scheme automatically.
- Multi-pane dashboard layout managed in Layout.tsx featuring a collapsible sidebar and top-nav.
- Consistent horizontal dividers dynamically matching header offsets (aligned at
h-20). - Deep-linked view states managed through standard React Router parameters (
?tab=...).
- Kanban Board: Drag-and-drop workflow lanes supporting text search filtering and assignee avatar selection.
- Sprint Backlog: Segmented view separating sprint lists from the product backlog, featuring inline quick-ticket creation inputs.
- Roadmap: Gantt-style timeline visualization tracking issue schedules chronologically.
- Confluence Wiki Pages: Relational documentation center for workspace notes, page creation, and markdown viewing.
- Issues Explorer: Table spreadsheet view with sorting, text searching, and data export simulations.
- Project Settings: Operational dashboard display showing issue status distribution graphs and registered team directories.
- Clicking any issue opens a drawer from the right side of the viewport (IssueDetailDrawer.tsx).
- Supports inline text descriptions (saving/canceling on focus changes), real-time status transitions, reporter directories, and ticket-specific activity feeds.
- FastAPI — High-performance Python web framework.
- Strawberry GraphQL — Python library for typed schemas at
/graphql(configured in graphql_schema.py). - MongoDB — NoSQL database using replica sessions for ACID compliance.
- Redis — Pub/sub messaging database for WebSocket cluster syncing.
- Pydantic v2 — Structural schema verification.
- React 19 & TypeScript — Component layers.
- Vite — Build tool and dev server.
- Tailwind CSS v4 — Utility classes with HSL tokens.
- Node.js (v18+)
- Python (v3.10+)
- Redis Server
- MongoDB (Replica Set recommended for transactions, fallback active for standalone)
- Navigate to the backend directory:
cd BACKEND - Initialize virtual environment and install dependencies:
python -m venv .venv # Windows: .venv\Scripts\activate # macOS/Linux: source .venv/bin/activate pip install -r requirements.txt
- Configure environment variables in
a:\BACKEND\TaskiMate\.env(see template below). - Run the development server with reload flags:
uvicorn main:app --reload --port 8000
- Navigate to the frontend directory:
cd frontend - Install dependencies:
npm install
- Run the Vite development server:
npm run dev
- Open the application at http://localhost:5173/.
DATABASE_URL=mongodb://localhost:27017/ticket_dashboard
JWT_SECRET=your_jwt_signing_key_here
FRONTEND_URL=http://localhost:5173
VITE_GOOGLE_CLIENT_ID=your_google_oauth_client_id
GOOGLE_CLIENT_SECRET=your_google_oauth_client_secret
GOOGLE_REDIRECT_URI=http://localhost:8000/auth/google/callback
REDIS_HOST=localhost
REDIS_PORT=6379
SUPER_TOGGLE_PWD=admin123VITE_API_URL=http://localhost:8000
VITE_GOOGLE_CLIENT_ID=your_google_oauth_client_idPOST /graphql— Strawberry GraphQL endpoint serving all core queries, nested lists, and issue mutations.
- Authentication:
GET /auth/google/callback— Handles Google OAuth token exchanging.GET /auth/me— Fetches current user session info.
- Administrative Utilities:
POST /api/super-toggle— Manages super mode switches.PATCH /api/users/{id}/role— Configures RBAC mappings for users.
WS /ws/activity— Bidirectional WebSockets connecting frontend users to horizontal Redis Pub/Sub channels.