Skip to content
AviralMehrotraPublic

About

A full-stack Project Management application built with React, Redux Toolkit, Node.js, Express, and MongoDB. This app allows teams to manage tasks, assign users, track progress, and handle notifications with a modern, responsive UI.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Tasker β€” High-Velocity Project Orchestration

Tasker Logo

A tactile, high-craft agile project orchestration platform built for high-velocity software teams. Zero ceremonial drag.

View Live Application β†—

React 19 Vite 6 Node.js Express MongoDB Redux Toolkit Tailwind CSS Vercel License: MIT


⚑ Overview: The Architect's Ledger

Tasker is an agile project and task management system designed to eliminate context-switching and configuration labyrinths. Rather than burying work beneath enterprise clutter, Tasker treats every task, stage, and sprint as an architectural blueprint: clear structural lines, high-contrast typography, and sub-80ms interactions.

Core Philosophy

  • Speed Over Ceremony: Transition stages, assign teammates, and check off subtasks in a single interaction without full-page reloads.
  • Visual Scanability: Overdue milestones, priority alerts, and stage progressions are immediately discernible through structured color hierarchy and typography.
  • Zero Dead Ends: Every stateβ€”whether an empty trash bin, route error, or offline stateβ€”provides an instant path forward.

✨ Features & Architecture

πŸ“‹ Interactive Drag & Drop Kanban

  • Multi-stage pipeline (To Do, In Progress, Completed) powered by @hello-pangea/dnd.
  • Optimistic local state updates with automatic server rollback on network errors.
  • Priority tagging (Urgent, High, Normal, Low) with visual indicators.
  • Subtask checklists with automatic sprint completion calculations.

⌨️ Universal Command Palette (⌘K / Ctrl+K)

  • Instant keyboard launcher for fuzzy-searching tasks and quick navigation across all views.
  • Quick stage filters, theme switching, and action execution without lifting fingers from the keys.

🌊 Hardware-Accelerated Smooth Scrolling

  • Integrated Lenis inertia scrolling delivering butter-smooth 120fps navigation.
  • Calibrated navbar offset clearance ensuring header anchors land with exact spacing.

πŸŒ“ Adaptive Obsidian Theme Engine

  • Dual dark/light theme architecture with noise grain overlay.
  • High-contrast obsidian base palette (#08090d, #10121a) paired with refined cadmium cobalt accents (#2563eb).
  • Persisted user preference via localStorage with zero theme flash.

πŸ›‘οΈ Hardened Security Architecture

  • Stateless Session Security: Cryptographically signed JWT tokens delivered via httpOnly, SameSite: None, Secure cookiesβ€”immune to client-side XSS token extraction.
  • OWASP Defense-in-Depth:
    • Helmet HTTP Headers for clickjacking and MIME-type sniffing prevention.
    • NoSQL Injection Sanitization stripping malicious query operators ($gt, $ne).
    • Express Rate Limiting mitigating credential stuffing and DoS attacks.
    • Payload Size Caps restricting body parsing to prevent memory exhaustion.

πŸ“± Responsive & Mobile-Optimized

  • Mobile drawer navigation with backdrop blur.
  • Floating glassmorphic Sticky Mobile Conversion CTA for mobile landing page visitors.

πŸ“ˆ Web Analytics & Standards

  • Privacy-preserving real-time visitor metrics via @vercel/analytics.
  • Production SEO setup: robots.txt, sitemap.xml, Open Graph cards, and Twitter summary metadata.
  • PWA-ready site.webmanifest and high-resolution icon set.
  • Built-in legal transparency with dedicated /privacy and /terms pages.
  • Custom architectural /404 diagnostic page.

πŸ› οΈ Tech Stack

Layer Technologies
Frontend Framework React 19, Vite 6, React Router DOM v7
State & Data Fetching Redux Toolkit (RTK), RTK Query with tag invalidation
Styling & Icons Tailwind CSS, Lucide React, React Icons
Motion & Interaction Lenis Smooth Scroll, Headless UI, @hello-pangea/dnd
Telemetry & Alerts Sonner Toaster, Recharts, @vercel/analytics
Backend Runtime Node.js (v20+), Express.js 4
Database MongoDB Atlas, Mongoose ODM
Security & Middleware Cookie Parser, Helmet, Express Rate Limit, Morgan
Asset Storage Cloudinary CDN

πŸ›οΈ System Architecture

flowchart TD
    Client["Client: React 19 + Vite (port 3000)"]
    subgraph Browser["Browser Runtime"]
        Client --> RTK["Redux Toolkit / RTK Query"]
        Client --> Lenis["Lenis Inertia Scrolling"]
        Client --> DND["@hello-pangea/dnd Kanban"]
        Client --> Analytics["@vercel/analytics"]
    end

    subgraph SecurityBoundary["Security & Middleware Layer"]
        Helmet["Helmet Security Headers"]
        RateLimit["Rate Limiter (DoS Defense)"]
        Sanitize["NoSQL Sanitizer"]
        CookieAuth["httpOnly Cookie Parser"]
    end

    subgraph Server["Backend: Express 4 (port 8800)"]
        Routes["REST API Routes: /api/*"]
        AuthMiddleware["verifyToken Middleware"]
        Controllers["Controllers (Tasks, Users, Auth)"]
    end

    subgraph Database["Data Layer"]
        Mongo[("MongoDB Atlas")]
        Cloudinary[("Cloudinary CDN")]
    end

    Client -->|HTTPS + Credentials| SecurityBoundary
    SecurityBoundary --> Routes
    Routes --> AuthMiddleware
    AuthMiddleware --> Controllers
    Controllers --> Mongo
    Client -.->|Direct Image Upload| Cloudinary
Loading

πŸ“ Repository Structure

Tasker/
β”œβ”€β”€ client/                      # React 19 Frontend
β”‚   β”œβ”€β”€ public/
β”‚   β”‚   β”œβ”€β”€ googlefaf7226c098585ff.html # Google Search Console verification
β”‚   β”‚   β”œβ”€β”€ robots.txt           # Search crawler directives
β”‚   β”‚   β”œβ”€β”€ site.webmanifest     # PWA manifest
β”‚   β”‚   β”œβ”€β”€ sitemap.xml          # Canonical XML sitemap
β”‚   β”‚   └── logo.png / tasker.ico # Brand icon assets
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ assets/              # Static styling assets
β”‚   β”‚   β”œβ”€β”€ components/          # Reusable UI primitives
β”‚   β”‚   β”‚   β”œβ”€β”€ tasks/           # TaskDialog, AddTask, UserList, BoardView
β”‚   β”‚   β”‚   β”œβ”€β”€ Navbar.jsx       # Workspace navigation & search bar
β”‚   β”‚   β”‚   β”œβ”€β”€ Sidebar.jsx      # Desktop navigation links
β”‚   β”‚   β”‚   β”œβ”€β”€ CommandPalette.jsx # ⌘K universal command launcher
β”‚   β”‚   β”‚   └── Table.jsx        # Data tables with sorting & actions
β”‚   β”‚   β”œβ”€β”€ pages/               # Application routes
β”‚   β”‚   β”‚   β”œβ”€β”€ LandingPage.jsx  # Architectural product landing page
β”‚   β”‚   β”‚   β”œβ”€β”€ Login.jsx        # Authentication & demo quick-launch
β”‚   β”‚   β”‚   β”œβ”€β”€ Dashboard.jsx    # Metrics overview & sprint telemetry
β”‚   β”‚   β”‚   β”œβ”€β”€ Tasks.jsx        # Interactive Kanban & list view
β”‚   β”‚   β”‚   β”œβ”€β”€ MyTasks.jsx      # Member assigned tasks
β”‚   β”‚   β”‚   β”œβ”€β”€ ActivityFeed.jsx # System activity stream
β”‚   β”‚   β”‚   β”œβ”€β”€ CalendarView.jsx # Milestones & deadline calendar
β”‚   β”‚   β”‚   β”œβ”€β”€ Users.jsx        # Admin team directory management
β”‚   β”‚   β”‚   β”œβ”€β”€ Trash.jsx        # Soft-deleted task recovery
β”‚   β”‚   β”‚   β”œβ”€β”€ Privacy.jsx      # Legal data & cookie policy
β”‚   β”‚   β”‚   β”œβ”€β”€ Terms.jsx        # Terms of service & governance
β”‚   β”‚   β”‚   └── NotFound.jsx     # Diagnostic 404 route handler
β”‚   β”‚   β”œβ”€β”€ redux/               # Store configuration & RTK Query slices
β”‚   β”‚   β”‚   β”œβ”€β”€ slices/          # authSlice, apiSlice, userApiSlice, taskApiSlice
β”‚   β”‚   β”‚   └── store.js
β”‚   β”‚   β”œβ”€β”€ utils/               # ThemeContext, formatters, helpers
β”‚   β”‚   β”œβ”€β”€ App.jsx              # Routing & dynamic document.title listener
β”‚   β”‚   └── main.jsx
β”‚   β”œβ”€β”€ index.html               # Open Graph, Twitter Cards, Typography preconnects
β”‚   β”œβ”€β”€ vite.config.js           # Vite configuration (port 3000, manualChunks)
β”‚   └── package.json
β”œβ”€β”€ server/                      # Express Backend
β”‚   β”œβ”€β”€ controllers/             # authController, taskController, userController
β”‚   β”œβ”€β”€ middlewares/             # errorMiddleware, sanitizeMiddleware, authMiddleware
β”‚   β”œβ”€β”€ models/                  # taskModel, userModel, notificationModel
β”‚   β”œβ”€β”€ routes/                  # Express route routers
β”‚   β”œβ”€β”€ utils/                   # dbConnection, createJWT cookie handler
β”‚   β”œβ”€β”€ index.js                 # Server entry point (port 8800)
β”‚   └── package.json
β”œβ”€β”€ PRODUCT.md                   # Product specs & user personas
β”œβ”€β”€ DESIGN.md                    # Design tokens & color system
└── README.md                    # Project documentation

βš™οΈ Local Development Setup

Prerequisites

1. Clone the Repository

git clone https://github.com/AviralMehrotra/Tasker.git
cd Tasker

2. Configure & Start Backend

cd server
npm install

Create a .env file in the /server directory:

PORT=8800
NODE_ENV=development
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_signing_secret_key

Start the backend API server:

npm run dev

The API server will initialize at http://localhost:8800.

3. Configure & Start Frontend

Open a separate terminal window:

cd client
npm install

Create a .env file in the /client directory:

VITE_SERVER_API=http://localhost:8800/api
VITE_CLOUDINARY_URL=https://api.cloudinary.com/v1_1/<your_cloud_name>/upload
VITE_CLOUDINARY_PRESET=<your_upload_preset>

Start the frontend Vite development server:

npm run dev

The frontend application will run at http://localhost:3000.


πŸ”‘ Environment Variables Reference

Backend (server/.env)

Variable Required Description Example / Default
PORT No Port on which Express server listens 8800
NODE_ENV Yes Runtime environment mode development / production
MONGODB_URI Yes MongoDB Atlas connection URI mongodb+srv://user:pass@cluster.mongodb.net/tasker
JWT_SECRET Yes Cryptographic secret for signing tokens super_secure_random_hash_string

Frontend (client/.env)

Variable Required Description Example / Default
VITE_SERVER_API Yes Base URL for backend REST endpoints http://localhost:8800/api
VITE_CLOUDINARY_URL No Cloudinary unsigned REST upload endpoint https://api.cloudinary.com/v1_1/<cloud_name>/upload
VITE_CLOUDINARY_PRESET No Unsigned Cloudinary upload preset name tasker_uploads

πŸ“š REST API Reference

Authentication & Users (/api/user)

Method Endpoint Description Access
POST /api/user/register Register new user account Public
POST /api/user/login Authenticate credentials & set token cookie Public
POST /api/user/logout Clear session cookie Authenticated
GET /api/user/get-team Fetch team directory and profile metadata Authenticated
GET /api/user/notifications Fetch unread notifications Authenticated
PUT /api/user/profile Update account profile Authenticated
PUT /api/user/change-password Update account password Authenticated
DELETE /api/user/:id Remove user from workspace Admin Only

Tasks & Kanban (/api/task)

Method Endpoint Description Access
POST /api/task/create Create a new task with subtasks & attachments Authenticated
GET /api/task Fetch tasks with stage/priority filters & search Authenticated
GET /api/task/dashboard Fetch aggregate metrics, charts & sprint telemetry Authenticated
GET /api/task/:id Fetch detailed task card with activity timeline Authenticated
PUT /api/task/update/:id Update task fields (title, priority, stage, dates) Authenticated
POST /api/task/activity/:id Post timestamped comment / status event Authenticated
PUT /api/task/create-subtask/:id Append checklist subtask Authenticated
PUT /api/task/:id Soft-delete task to Trash Bin Authenticated
DELETE /api/task/delete-restore/:id Restore from Trash or permanently delete Authenticated

🚒 Deployment

Tasker is optimized for rapid cloud deployment:

  • Frontend: Hosted seamlessly on Vercel with native Single-Page Application rewrites and @vercel/analytics support.
  • Backend: Deployable to Render, Railway, or Fly.io as a persistent Node service.
  • Database: Hosted on MongoDB Atlas with compound indexes on { stage: 1, isTrashed: 1 } for high-throughput queries.

🀝 Contributing

Contributions, feature suggestions, and issues are welcome!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'feat: add AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

Distributed under the MIT License. See LICENSE for more information.

Built with focus, discipline, and craft by Aviral Mehrotra.

About

A full-stack Project Management application built with React, Redux Toolkit, Node.js, Express, and MongoDB. This app allows teams to manage tasks, assign users, track progress, and handle notifications with a modern, responsive UI.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages