A modern, real-time collaborative task management platform built with cutting-edge technologies
Features β’ Tech Stack β’ Getting Started β’ Documentation
TaskOrbit is a full-stack task management application designed for teams and individuals who need powerful project organization with real-time collaboration. Built with a modern monorepo architecture using Turborepo, it demonstrates enterprise-level development practices with beautiful UI/UX powered by Shadcn and Tailwind CSS.
- Real-time Collaboration - Live updates across all connected clients using Pusher
- Multiple Views - Kanban, List, and Calendar views for flexible task visualization
- Beautiful UI - Modern, responsive design with dark mode support
- Monorepo Architecture - Organized codebase with Turborepo for optimal development
- Secure Authentication - JWT-based auth with role-based access control
- Fully Responsive - Seamless experience across desktop, tablet, and mobile
- High Performance - Optimized with React Query for efficient data fetching
- Type-Safe - 100% TypeScript for robust, maintainable code
- Create, edit, delete, and organize tasks
- Priority levels (Low, Medium, High, Urgent)
- Due dates and time tracking
- Tags and labels for categorization
- Subtasks with progress tracking
- Multi-user task assignments
- File attachments support
- Multiple boards/projects per user
- Customizable board colors and icons
- Board sharing and collaboration
- Custom status columns
- Kanban and List view options
- Archive and restore functionality
- Live task updates across all clients
- User presence indicators
- Real-time notifications
- Drag-and-drop synchronization
- Instant UI updates with Pusher
- Dark/Light theme toggle
- Advanced search and filtering
- Keyboard shortcuts
- Mobile-responsive design
- Beautiful animations with Framer Motion
- Intuitive drag-and-drop interface
- Email notifications
- Secure authentication (JWT)
- User profiles and avatars
- Activity timeline
- Role-based access control
- Auto-save functionality
- Framework: React 19 with TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS 4
- UI Components: Shadcn UI + Radix UI
- State Management: Zustand + React Query
- Animations: Framer Motion
- Drag & Drop: @dnd-kit
- Forms: React Hook Form + Zod
- Routing: React Router v7
- Real-time: Pusher JS
- Runtime: Node.js with Express
- Language: TypeScript
- Database: MongoDB with Mongoose
- Authentication: JWT + bcrypt
- Real-time: Pusher
- Email: Nodemailer
- Security: Helmet, express-rate-limit, xss-clean
- Validation: Express Validator
- Monorepo: Turborepo
- Package Manager: pnpm
- Code Quality: ESLint + Prettier
- Git Hooks: Husky + lint-staged
- Type Checking: TypeScript 5.9
Before you begin, ensure you have the following installed:
- Node.js 18+ or 20+
- pnpm 9.0.0+
- MongoDB (local or MongoDB Atlas)
- Git
- Clone the repository
git clone https://github.com/yourusername/task-orbit.git
cd task-orbit- Install dependencies
pnpm install- Set up environment variables
Create .env files in both apps/api and apps/web:
apps/api/.env
# Server
PORT=5000
NODE_ENV=development
# Database
MONGODB_URI=mongodb://localhost:27017/task-orbit
# JWT
JWT_SECRET=your-super-secret-jwt-key-change-this-in-production
JWT_EXPIRES_IN=7d
# Pusher (Real-time)
PUSHER_APP_ID=your-pusher-app-id
PUSHER_KEY=your-pusher-key
PUSHER_SECRET=your-pusher-secret
PUSHER_CLUSTER=your-pusher-cluster
# Email (Nodemailer)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your-email@gmail.com
EMAIL_PASSWORD=your-app-password
EMAIL_FROM=TaskOrbit <noreply@taskorbit.com>
# Frontend URL
FRONTEND_URL=http://localhost:5173apps/web/.env
VITE_API_URL=http://localhost:5000/api
VITE_PUSHER_KEY=your-pusher-key
VITE_PUSHER_CLUSTER=your-pusher-cluster- Start MongoDB
# macOS with Homebrew
brew services start mongodb-community
# Or manually
mongod --dbpath /path/to/data
# Windows
net start MongoDB- Run the development servers
# Start both API and Web servers
pnpm dev
# Or start individually
pnpm --filter api dev # API server on http://localhost:5000
pnpm --filter web dev # Web app on http://localhost:5173- Open your browser
Navigate to http://localhost:5173
task-orbit/
βββ apps/
β βββ api/ # Backend API (Node.js + Express)
β β βββ src/
β β β βββ controllers/ # Route controllers
β β β βββ models/ # MongoDB models
β β β βββ routes/ # API routes
β β β βββ middleware/ # Auth, validation, error handling
β β β βββ services/ # Business logic (email, pusher)
β β β βββ utils/ # Utilities (JWT, etc.)
β β β βββ config/ # Configuration files
β β β βββ scripts/ # Seed data and utilities
β β β βββ index.ts # Entry point
β β βββ package.json
β β
β βββ web/ # Frontend (React + Vite)
β β βββ src/
β β β βββ components/ # React components
β β β β βββ ui/ # Shadcn UI components
β β β β βββ board/ # Board & Kanban components
β β β β βββ task/ # Task components
β β β β βββ layout/ # Layout components
β β β β βββ notifications/ # Notification components
β β β β βββ animations/ # Animation wrappers
β β β β βββ theme/ # Theme components
β β β βββ pages/ # Page components
β β β βββ hooks/ # Custom React hooks
β β β βββ services/ # API services
β β β βββ contexts/ # React contexts
β β β βββ store/ # Zustand stores
β β β βββ lib/ # Utilities
β β β βββ styles/ # Global styles
β β β βββ types/ # TypeScript types
β β βββ package.json
β β
β βββ docs/ # Documentation
β βββ project-specification.md
β βββ ui-revamp-*.md
β βββ phase-*-completion.md
β
βββ packages/ # Shared packages
β βββ eslint-config/ # Shared ESLint configs
β βββ typescript-config/ # Shared TypeScript configs
β βββ ui/ # Shared UI components
β βββ types/ # Shared TypeScript types
β
βββ turbo.json # Turborepo configuration
βββ package.json # Root package.json
βββ pnpm-workspace.yaml # pnpm workspace config
βββ README.md # This file
- Getting Started Guide - Fast setup for portfolio screenshots
- Screenshot Guide - How to capture the best screenshots
- Seed Data - Populate database with sample data
- API Documentation - Full project specification
- UI Revamp Docs - UI design system and guidelines
- Troubleshooting - Common issues and solutions
# Development
pnpm dev # Start all apps in development mode
pnpm build # Build all apps for production
pnpm lint # Lint all packages
pnpm format # Format code with Prettier
pnpm check-types # Type check all packages
# Turborepo commands
turbo run dev # Run dev with Turborepo
turbo run build # Build with Turborepocd apps/api
pnpm dev # Start API server with nodemon
pnpm build # Compile TypeScript
pnpm start # Start production server
pnpm seed # Seed database with sample datacd apps/web
pnpm dev # Start Vite dev server
pnpm build # Build for production
pnpm preview # Preview production build
pnpm lint # Lint frontend codeTo populate your database with sample data for testing or portfolio screenshots:
cd apps/api
pnpm seedThis will create:
- 3 sample boards (Product Development, Marketing Campaign, Design System)
- 23 realistic tasks with various statuses, priorities, and subtasks
- Data assigned to your user account
For detailed instructions, see:
TaskOrbit uses JWT-based authentication with the following features:
- Registration: Create new user accounts with email verification
- Login: Secure login with JWT token generation
- Password Reset: Email-based password recovery
- Role-Based Access: Admin, Manager, and Member roles
- Protected Routes: Middleware-based route protection
POST /api/auth/register # Register new user
POST /api/auth/login # Login user
POST /api/auth/forgot-password # Request password reset
POST /api/auth/reset-password # Reset password
GET /api/auth/me # Get current user
PUT /api/auth/profile # Update profile
TaskOrbit uses Pusher for real-time collaboration:
- β Live task updates across all connected clients
- β Real-time notifications
- β User presence indicators
- β Board-specific channels
- β Private user channels
- Create a free account at pusher.com
- Create a new Channels app
- Copy credentials to
.envfiles - Restart servers
TaskOrbit features a modern, carefully crafted design system:
- Design Tokens: Consistent colors, spacing, and typography
- Component Library: Built with Shadcn UI and Radix UI
- Animations: Smooth transitions with Framer Motion
- Responsive: Mobile-first design approach
- Accessibility: ARIA labels and keyboard navigation
- Dark Mode: System-aware theme switching
For detailed design specifications, see UI Revamp Documentation.
# Run tests (when implemented)
pnpm test
# Type checking
pnpm check-types
# Linting
pnpm lintcd apps/web
pnpm build
# Deploy to Vercel
vercel --prodcd apps/api
pnpm build
# Set environment variables on your platform
# Deploy using platform CLI or Git integrationRemember to set all environment variables in your deployment platform:
- MongoDB connection string
- JWT secret
- Pusher credentials
- Email service credentials
- Frontend URL
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style
- Run
pnpm lintbefore committing - Run
pnpm formatto format code - Ensure TypeScript types are properly defined
- Write meaningful commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
Pasindu Lanka
- Email: pasindulankaa@gmail.com
- Portfolio: [Your Portfolio URL]
- GitHub: @yourusername
- LinkedIn: Your LinkedIn
- Shadcn UI - Beautiful UI components
- Turborepo - Monorepo build system
- Pusher - Real-time infrastructure
- Vercel - Deployment platform
- MongoDB - Database
If you have any questions or need help, please:
- Check the Documentation
- Review Troubleshooting Guide
- Open an issue on GitHub
- Contact via email
β Star this repo if you find it helpful! β
Made with β€οΈ by Pasindu Lanka