Zyvora - SaaS Task Management Platform
📌 Overview
Zyvora is a full-featured SaaS project management platform — a Jira-like tool built from scratch with enterprise-grade architecture. It supports multi-tenant workspaces with role-based access control, rich task hierarchies, multiple board views, and real-time collaboration.
The project is built as a TypeScript monorepo using Turborepo, with a React + Vite frontend and a Node.js + Express backend, connected by Socket.IO for live updates.
👉 Try the live app here: zyvora.endra.in
🚀 Features
Multi-Tenant SaaS & Access Control
- Role-Based Access Control (RBAC) with six roles: Owner, Admin, Manager, Team Lead, User, Viewer.
- Each workspace is fully isolated — organizations manage their own projects, members, and data.
- Audit logs for all significant actions.
Task Hierarchy
- Epics → Stories → Tasks → Subtasks / Bugs — full nested issue structure.
- Inline editing for all task properties: title, assignee, priority, status, due date, labels.
- Rich text descriptions via TipTap editor.
Board Views
- Kanban Board — drag-and-drop cards across status columns using dnd-kit.
- Sprint Backlog — plan and manage sprints with velocity tracking.
- Calendar View — visualize due dates and deadlines across the team.
- Timeline / Roadmap View — high-level planning across epics and sprints.
Real-Time Collaboration
- Socket.IO powers live board updates — changes by one user reflect instantly for all teammates.
- Comments with @mentions and threaded discussions.
- Activity timeline on every task showing the full change history.
Notifications & Async Jobs
- In-app notifications for mentions, assignments, and status changes.
- Email notifications sent via Resend, processed asynchronously through BullMQ job queues backed by Redis.
File Attachments
- Upload files directly to tasks, stored in AWS S3 or Cloudflare R2.
Sprint Planning
- Create and manage sprints with start/end dates.
- Velocity tracking across completed sprints.
- Move unfinished issues to the next sprint automatically.
Search & Productivity
- Advanced search and filtering across all issues.
- Keyboard shortcuts and command palette for fast navigation.
🛠️ Tech Stack
Frontend
- React 18, Vite, TypeScript
- TailwindCSS + Radix UI (accessible components)
- TanStack React Query (server state)
- Zustand (client state)
- React Hook Form + Zod (forms and validation)
- TipTap (rich text editor)
- dnd-kit (drag-and-drop)
- Framer Motion (animations)
- Socket.IO Client
- Lucide React (icons)
Backend
- Node.js, Express, TypeScript
- PostgreSQL + Knex (query builder)
- Redis
- BullMQ (job queues for email/notification workers)
- Socket.IO (real-time events)
- JWT (jsonwebtoken) + bcryptjs (auth)
- Resend (transactional email)
- Helmet (security headers), rate limiting
- Pino + Morgan (logging)
Infrastructure
- Docker + Docker Compose (local dev and production)
- Turborepo + pnpm workspaces (monorepo tooling)
🏗️ Architecture
Monorepo Structure
zyvora/
├── apps/
│ ├── web/ # React + Vite frontend
│ └── api/ # Node.js + Express backend
└── packages/
└── shared/ # Shared types and utilities
Backend Design
- Multi-tenant data model with workspace-scoped queries.
- RBAC middleware enforces permissions on every API route.
- BullMQ workers handle email delivery and notification fan-out asynchronously, keeping API responses fast.
- Socket.IO rooms are scoped per workspace and project, broadcasting only relevant updates to connected clients.
Frontend Design
- TanStack Query handles all server state — caching, background refetching, and optimistic updates.
- Zustand manages ephemeral UI state (modals, drag state, command palette).
- All drag-and-drop interactions use dnd-kit with server-side persistence on drop.
📂 Key Features in Action
🗂️ Kanban Board
Drag tasks between status columns in real time. Other team members see the card move instantly without a page refresh.
🏃 Sprint Planning
Create sprints, drag backlog items in, set dates, and track velocity from the sprint view. Unfinished work rolls over automatically.
✍️ Rich Task Descriptions
TipTap powers a full rich-text editor with headings, code blocks, bullet lists, and inline mentions — no plain textarea.
🔔 Smart Notifications
Mention a teammate in a comment and they get an in-app notification and email — all processed in the background via BullMQ so the UI stays fast.
👥 Role Management
Workspace owners can invite members and assign roles with fine-grained permissions down to Viewer (read-only) access.
🌐 Deployment
- Frontend: Cloudflare Workers — fast global CDN delivery with SPA routing
- Backend API: Render — persistent Node.js server with WebSocket support
- DNS & CDN: Cloudflare
- Live at: https://zyvora.endra.in