A Modern, Lightweight Agile Project Management & Productivity Suite
Karma Sync unites agile planning, Kanban workflows, sprint tracking, and daily personal to-dos into a single, intuitive workspace for individuals and teams.
- Overview
- Key Features
- Tech Stack
- Project Structure
- API Endpoints
- Getting Started
- Contributing
- License
- Contact & Support
Karma Sync eliminates context switching by combining robust team-based Scrum/Kanban project management with personal productivity tracking. Whether running multi-week sprints with story estimations or managing everyday personal tasks, Karma Sync keeps your progress synchronized and transparent.
- Personal & Collaborative Projects: Create isolated personal projects or collaborative team workspaces.
- Dynamic Role-Based Access Control (RBAC):
- Project Manager: Manage project settings, sprints, team members, and role allocations.
- Developer: Create, update, comment on, and manage assigned issues and stories.
- Team Collaboration: Invite members, assign roles, and control permissions dynamically.
- Fluid Drag-and-Drop: Move tasks smoothly across statuses (To-Do β In Progress β Done).
- Instant Status Synchronization: Kanban card states persist in real-time.
- Visual Priority & Tag Badges: Spot urgent bottlenecks at a glance.
- Sprint Management:
- Lifecycle states:
PlannedβActiveβCompleted/Cancelled. - Strict sprint rules: tasks can only be planned or assigned during eligible states.
- Automatic status cleanups upon completion.
- Lifecycle states:
- User Stories:
- Connect strategic goals to tactical tasks (
DraftβReadyβIn ProgressβDone). - Real-time progress bar calculated from nested task completion percentages.
- Connect strategic goals to tactical tasks (
- Assign tasks with estimates, priorities (Low, Medium, High, Urgent), and due dates.
- Link tasks directly to User Stories or manage them independently.
- Flexible multi-tag taxonomy (Technology, Feature, Priority, Workflow).
- Search, filter, and sort tasks with high responsiveness.
- Threaded discussions on individual task and issue cards.
- @Mentioning: Tag project members directly via
@username. - Backend-validated mention parsing with highlighting in the UI.
- Centralized audit trail capturing project events:
- Task state transitions & Kanban moves
- Sprint lifecycle events
- User story updates
- Team member role adjustments
- Lightweight Activity Widget embedded in the Project Overview dashboard.
- Dedicated personal productivity hub separate from team boards.
- Categorize by Work, Health, Study, or custom labels.
- Set reminders, due dates, priority tiers, and mark items complete.
- Secure JWT-based authentication.
- Email verification with OTP during registration.
- Password recovery via OTP email reset.
- Intentionally rate-limited transactional emails (powered by Nodemailer & Gmail SMTP) to eliminate notification fatigue.
- Framework: React 18 (Hooks, Context API)
- Routing: React Router v6
- Drag & Drop: react-beautiful-dnd
- Charts & Data Viz: Recharts
- Styling & UI: Custom CSS3, Bootstrap 5, FontAwesome, React Icons
- Feedback & Notifications: React Toastify
- HTTP Client: Axios
- Runtime: Node.js (>= 18.x / 22.x)
- Framework: Express.js (MVC Architecture)
- Database: MongoDB Atlas with Mongoose ODM
- Authentication: JSON Web Tokens (jsonwebtoken) & bcryptjs
- Mailing: Nodemailer & EmailJS
karmasync/
βββ client/ # React Frontend Application
β βββ public/ # Static assets, HTML template, manifest
β βββ src/
β βββ api/ # Axios API service integrations
β βββ components/ # Reusable React components & views
β β βββ BoardManager.js # Kanban board view
β β βββ Dashboard.js # User dashboard
β β βββ SprintManager.js# Sprint planning & tracking
β β βββ StoryManager.js # User story lifecycle
β β βββ Todos.js # Personal daily to-do hub
β β βββ ...
β βββ context/ # Global state (AuthContext, etc.)
β βββ styles/ # Modular CSS stylesheets
β βββ config.js # Frontend runtime configuration
β βββ App.js # Application entry & routing
β βββ index.js # React DOM bootstrap
β
βββ server/ # Express.js Backend API
β βββ controllers/ # Request handlers (Auth, Projects, Sprints, Tasks, etc.)
β βββ middleware/ # JWT authentication & route guards
β βββ models/ # Mongoose schemas (User, Project, Task, Sprint, Story, Todo, Activity)
β βββ routes/ # Express route definitions
β βββ services/ # Activity logger and notification services
β βββ server.js # Express server bootstrap & MongoDB connection
β
βββ .gitignore # Root Git ignore rules
βββ LICENSE # MIT License
βββ README.md # Project documentation
| Resource | Base Route | Description |
|---|---|---|
| Auth | /api/auth |
User registration, login, OTP verification, password reset |
| Projects | /api/projects |
Project CRUD, collaborator management, role assignments |
| Sprints | /api/sprints |
Sprint creation, activation, completion, cancellation |
| Tasks & Issues | /api/tasks |
Task creation, status updates, comments, @mentions |
| User Stories | /api/user-stories |
Story breakdown, task mapping, progress aggregation |
| Todos | /api/todos |
Personal daily to-do CRUD operations |
| Users | /api/users |
User profile retrieval and account updates |
| Health | /api/health, /health |
API and MongoDB cluster health check |
- Node.js (v18.x or higher) β Download Node.js
- npm (v9.x or higher) or yarn
- MongoDB Atlas cluster URI or a local MongoDB instance
-
Clone the repository:
git clone https://github.com/bsurajpatra/karmasync.git cd karmasync -
Install Server Dependencies:
cd server npm install -
Install Client Dependencies:
cd ../client npm install
Create a .env file in the server/ directory:
# Server Port
PORT=5000
NODE_ENV=development
# MongoDB Connection String
MONGODB_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/karmasync?retryWrites=true&w=majority
# JWT Authentication
JWT_SECRET=your_super_secret_jwt_key_here
# Frontend Application URL
FRONTEND_URL=http://localhost:3000
# Transactional Email (Gmail SMTP)
EMAIL_USER=yourgmail@gmail.com
EMAIL_PASS=your-gmail-app-passwordCreate a .env file in the client/ directory:
# Backend API Base URL
REACT_APP_API_URL=http://localhost:5000
# EmailJS Configuration (Contact Form)
REACT_APP_EMAILJS_SERVICE_ID=your_emailjs_service_id
REACT_APP_EMAILJS_TEMPLATE_ID=your_emailjs_template_id
REACT_APP_EMAILJS_PUBLIC_API=your_emailjs_public_keyYou can run both the server and client in separate terminals:
Terminal 1 (Backend Server):
cd server
npm run dev
# Server will start on http://localhost:5000Terminal 2 (Frontend Client):
cd client
npm start
# Client will launch on http://localhost:3000Contributions make the open-source community an incredible place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project (
https://github.com/bsurajpatra/karmasync/fork) - Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more details.
Ankit Suraj Patra
π§ Email: ankitsuraj1111@gmail.com
π GitHub: @bsurajpatra
π Project Repository: https://github.com/bsurajpatra/karmasync