Skip to content

Rakshi2609/task-tapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

88 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Task Tapper

A modern, feature-rich collaborative task management platform with recurring tasks, communities, departments, real-time chat, and daily email summaries.

🌟 Overview

Task Tapper is a comprehensive task management solution designed for teams and communities. Built with a Node/Express + MongoDB backend and a modern React frontend, it provides:

  • One-Time & Recurring Tasks: Create and manage both single and recurring tasks (Daily/Weekly/Monthly)
  • Community Structure: Organize work into Communities β†’ Departments β†’ Tasks
  • Smart Task Management: Auto-generate recurring tasks, skip Sundays, track completion
  • Real-Time Collaboration: World chat via WebSockets with message persistence
  • Email Notifications: Daily summary emails with de-duplication (Gmail + Nodemailer)
  • Rich Task Details: Comments, updates, and priority tracking
  • User Stats: Track assigned, completed, and pending tasks
  • Advanced Filtering: Filter by status, type, date range with search capabilities
  • Mobile-First Design: Responsive UI with compact layouts and pagination

✨ Key Features

Task Management

  • Create one-time or recurring tasks with customizable frequency
  • Assign tasks to team members with priority levels (High/Medium/Low)
  • Auto-generation of recurring task instances
  • Smart date handling (automatically skip Sundays)
  • Task completion tracking with history
  • Comments and updates on tasks

Community & Organization

  • Multi-level structure: Communities β†’ Departments β†’ Tasks
  • Department-based task organization
  • Member management with pending approvals
  • Owner and member role differentiation
  • Community-wide visibility controls

Filtering & Search

  • Status Filters: All, Upcoming, Overdue, Completed
  • Type Filters: All, One-Time, Recurring
  • Date Filters: All Dates, Today, This Week, This Month
  • Search: Real-time search across tasks, departments, and communities
  • Pagination: Mobile-friendly pagination (6 items per page)

Real-Time Features

  • World chat with Socket.io
  • Message persistence in MongoDB
  • Last 50 messages on connect
  • Live updates across connected clients

User Experience

  • Modern gradient designs with animations
  • Compact, mobile-first layouts
  • Framer Motion animations
  • Responsive grid layouts (1-4 columns)
  • Toast notifications for user feedback

πŸ› οΈ Tech Stack

Backend

  • Runtime: Node.js 18+
  • Framework: Express 5
  • Database: MongoDB with Mongoose
  • Real-Time: Socket.io
  • Email: Nodemailer with Gmail
  • Environment: dotenv

Frontend

  • Framework: React 19
  • Build Tool: Vite
  • Styling: Tailwind CSS
  • State Management: Zustand
  • HTTP Client: Axios
  • Routing: React Router v6
  • Animations: Framer Motion
  • Charts: Recharts
  • Icons: React Icons
  • Date Picker: React Datepicker

Deployment

  • Frontend: Vercel-ready with routing config
  • Backend: Any Node.js hosting (Railway, Render, etc.)

πŸ“ Project Structure

backend/
  β”œβ”€β”€ server.js                    # Express app + Socket.io + routes
  β”œβ”€β”€ taskScheduler.js             # Task scheduling logic
  β”œβ”€β”€ config/
  β”‚   └── connectDB.js            # MongoDB connection with retry
  β”œβ”€β”€ controllers/
  β”‚   β”œβ”€β”€ auth.js                 # Authentication logic
  β”‚   β”œβ”€β”€ community.js            # Community management
  β”‚   β”œβ”€β”€ team.js                 # Task operations
  β”‚   └── recurringTaskController.js
  β”œβ”€β”€ models/
  β”‚   β”œβ”€β”€ User.js                 # User schema
  β”‚   β”œβ”€β”€ Community.js            # Community schema
  β”‚   β”œβ”€β”€ CommunityDept.js        # Department schema
  β”‚   β”œβ”€β”€ Team.js                 # One-time tasks
  β”‚   β”œβ”€β”€ recurringTaskModel.js   # Recurring tasks
  β”‚   β”œβ”€β”€ TaskUpdate.js           # Task updates/comments
  β”‚   └── WorldChatMessage.js     # Chat messages
  β”œβ”€β”€ routes/
  β”‚   β”œβ”€β”€ auth.route.js           # Auth endpoints
  β”‚   β”œβ”€β”€ community.route.js      # Community endpoints
  β”‚   β”œβ”€β”€ team.route.js           # Task endpoints
  β”‚   └── recurringTaskRoutes.js  # Recurring task endpoints
  β”œβ”€β”€ socket/
  β”‚   └── worldChat.js            # Socket.io chat setup
  └── utils/
      β”œβ”€β”€ checkAndSendDailySummary.js
      β”œβ”€β”€ emailTemplates.js
      └── sendMail.js

client/
  β”œβ”€β”€ src/
  β”‚   β”œβ”€β”€ App.jsx                 # Main app component
  β”‚   β”œβ”€β”€ components/
  β”‚   β”‚   β”œβ”€β”€ Dashboard.jsx
  β”‚   β”‚   β”œβ”€β”€ UserTasks.jsx       # Task list with filters
  β”‚   β”‚   β”œβ”€β”€ TaskDetail.jsx      # Single task view
  β”‚   β”‚   β”œβ”€β”€ RecurringTaskDetail.jsx
  β”‚   β”‚   β”œβ”€β”€ RecurringTaskForm.jsx
  β”‚   β”‚   β”œβ”€β”€ WorldChat.jsx       # Real-time chat
  β”‚   β”‚   └── community/
  β”‚   β”‚       β”œβ”€β”€ AllCommunity.jsx        # Communities list
  β”‚   β”‚       β”œβ”€β”€ CommunityMembers.jsx    # Member management
  β”‚   β”‚       β”œβ”€β”€ CommunityDepartment.jsx # Departments with filters
  β”‚   β”‚       β”œβ”€β”€ CommunityDeptTasks.jsx  # Department tasks
  β”‚   β”‚       β”œβ”€β”€ CreateCommunity.jsx
  β”‚   β”‚       β”œβ”€β”€ CreateCommunityDept.jsx
  β”‚   β”‚       β”œβ”€β”€ CreateCommunityTask.jsx
  β”‚   β”‚       └── CreateCommunityRecurringTask.jsx
  β”‚   β”œβ”€β”€ services/
  β”‚   β”‚   β”œβ”€β”€ taskService.js
  β”‚   β”‚   β”œβ”€β”€ community.js
  β”‚   β”‚   └── recurring.js
  β”‚   └── assests/
  β”‚       └── store.js            # Zustand state
  β”œβ”€β”€ vite.config.js
  └── vercel.json                 # Vercel deployment config

πŸ“‹ Prerequisites

  • Node.js 18+ (recommended)
  • MongoDB connection string (MongoDB Atlas or self-hosted)
  • Gmail Account with App Password for email notifications

βš™οΈ Environment Variables

Backend Configuration

Create a .env file in the backend/ directory:

# Required
MONGO_URI=mongodb+srv://user:pass@cluster.mongodb.net/dbname
EMAIL=your_gmail_address@gmail.com
APP_PASSWORD=your_gmail_app_password

# Optional
MONGO_DB_NAME=task_tapper          # If not in URI
MONGO_MAX_RETRIES=3
MONGO_RETRY_DELAY_MS=3000
PORT=5000                           # Default: 5000
TWILIO_SID=...                      # Optional for SMS

Frontend Configuration

Create a .env file in the client/ directory:

VITE_APP_API_URL=http://localhost:5000

For production, update to your backend URL:

VITE_APP_API_URL=https://your-api-domain.com

πŸš€ Installation & Setup

1. Clone the Repository

git clone <repository-url>
cd task-tapper

2. Backend Setup

cd backend
npm install
npm run dev

The backend server will start on http://localhost:5000

3. Frontend Setup

Open a new terminal:

cd client
npm install
npm run dev

The frontend will start on http://localhost:5173

4. Access the Application

Open your browser and navigate to: http://localhost:5173

πŸ“‘ API Documentation

Base URL

  • Development: http://localhost:5000
  • Production: Set via VITE_APP_API_URL

Authentication (/api/auth)

Method Endpoint Description Body
POST /login User login { email }
POST /signup User registration { email, username }
POST /user-detail Update user details { email, phoneNumber, role }
GET /profile/:email Get user profile -
GET /tasks/:email Get user's tasks -
GET /assignedByMe Tasks assigned by user ?email=user@example.com

Tasks (/api/function)

Method Endpoint Description
POST /createtask Create new task
POST /updatetask Mark task complete
POST /deletetask Delete task
GET /email Get all user emails
GET /tasks/:taskId Get single task
GET /tasks/:taskId/updates Get task updates

Create Task Body:

{
  "createdBy": "user@example.com",
  "taskName": "Task Title",
  "taskDescription": "Description",
  "assignedTo": "assignee@example.com",
  "assignedName": "Assignee Name",
  "dueDate": "2025-12-31",
  "priority": "High"
}

Recurring Tasks (/api/recurring-tasks)

Method Endpoint Description
GET / List all recurring tasks
POST / Create recurring task
GET /:id Get single recurring task
DELETE /:id Delete recurring task
POST /:taskId/updates Add task update
GET /:taskId/updates Get task updates

Create Recurring Task Body:

{
  "taskName": "Recurring Task",
  "taskDescription": "Description",
  "taskAssignedTo": "user@example.com",
  "taskFrequency": "Daily",
  "taskStartDate": "2025-01-01",
  "taskEndDate": "2025-12-31",
  "taskPriority": "Medium",
  "taskCreateDaysAhead": 1
}

Communities (/api/community)

Method Endpoint Description
GET / Get all communities
POST / Create community
GET /:id Get community details
GET /:id/members Get community members
GET /:id/departments Get departments
POST /:id/departments Create department

Health Check

Method Endpoint Description
GET /api/ping Trigger daily summary check

WebSocket Events (Socket.io)

Client β†’ Server

  • world-chat-message: Send chat message
    { "userId": "user_id", "message": "Hello!" }

Server β†’ Client

  • world-chat-init: Initial 50 messages on connect
  • world-chat-message: Broadcast new message to all clients

🎨 UI Features

Modern Design

  • Gradient backgrounds and text effects
  • Smooth animations with Framer Motion
  • Glass-morphism effects with backdrop blur
  • Hover states and transitions
  • Mobile-first responsive layouts

Compact Views

  • Reduced padding and margins for efficiency
  • Smart text truncation with line-clamp
  • Icon-only buttons on mobile
  • Collapsible filter panels

Advanced Filtering

  • Status: All, Upcoming, Overdue, Completed
  • Task Type: All, One-Time, Recurring
  • Date Range: All Dates, Today, This Week, This Month
  • Search: Real-time search across all fields
  • Filters work together and reset pagination

Pagination

  • 6 items per page (customizable)
  • Numbered page buttons (max 5 visible)
  • Previous/Next navigation
  • Smart page number display
  • Mobile-optimized controls

πŸ’‘ Usage Examples

Creating a Community

  1. Navigate to Communities page
  2. Click "Create Community"
  3. Enter community name and description
  4. Submit to create

Adding a Department

  1. Go to Community β†’ Departments
  2. Click "Create Department"
  3. Fill in department details
  4. Tasks can now be organized under this department

Creating Tasks

One-Time Task:

  • Go to Department β†’ Add Task
  • Fill in task details, assignee, due date, priority
  • Submit to create

Recurring Task:

  • Go to Department β†’ Add Recurring
  • Set frequency (Daily/Weekly/Monthly)
  • Define start and end dates
  • System auto-generates instances

Filtering Tasks

  1. Click the "Filter" button
  2. Select desired filters:
    • Status (Upcoming, Overdue, etc.)
    • Task Type (One-Time or Recurring)
    • Date Range (Today, This Week, This Month)
  3. Use search bar for specific tasks
  4. Navigate through pages if needed

🚒 Deployment

Frontend (Vercel)

  1. Push code to GitHub/GitLab
  2. Import project in Vercel
  3. Set environment variable:
    VITE_APP_API_URL=https://your-backend-url.com
    
  4. Deploy

The vercel.json file handles routing for React Router.

Backend (Railway/Render/Heroku)

  1. Choose your hosting platform
  2. Connect your repository
  3. Set environment variables from .env
  4. Deploy with Node.js 18+
  5. Ensure MongoDB connection is accessible

MongoDB Atlas Setup

  1. Create a cluster on MongoDB Atlas
  2. Create a database user
  3. Whitelist IP addresses (0.0.0.0/0 for all IPs or specific IPs)
  4. Get connection string and add to MONGO_URI

πŸ“œ Available Scripts

Backend

npm run dev          # Start development server with nodemon
npm start            # Start production server

Frontend

npm run dev          # Start Vite dev server (port 5173)
npm run build        # Build for production
npm run preview      # Preview production build
npm run lint         # Run ESLint

πŸ”§ Development Tips

Git Configuration

First-time setup:

git config --global user.name "Your Name"
git config --global user.email "your@email.com"

Hot Reload

  • Backend uses nodemon for auto-restart on file changes
  • Frontend uses Vite's HMR (Hot Module Replacement)

Debugging

  • Backend logs to console via console.log()
  • Frontend uses React DevTools and browser console
  • Socket.io has built-in debugging: set DEBUG=socket.io* in environment

Database Queries

Monitor MongoDB operations:

mongoose.set('debug', true);

🎯 Best Practices

Task Creation

  • Always set priority for better organization
  • Use descriptive task names (50 chars max recommended)
  • Add detailed descriptions for clarity
  • Set realistic due dates

Recurring Tasks

  • Use "Daily" for everyday tasks
  • Use "Weekly" for weekly meetings/reviews
  • Use "Monthly" for monthly reports
  • Set taskCreateDaysAhead to 1-2 for advance notice

Community Management

  • Create departments by function (Dev, Marketing, etc.)
  • Assign department-specific tasks
  • Keep community descriptions clear and concise
  • Regularly review pending applications

Performance

  • Use pagination for large task lists
  • Apply filters to narrow down results
  • Search is case-insensitive and searches all fields
  • Indexes on MongoDB collections for faster queries

πŸ› Troubleshooting

Backend won't start

  • Check MongoDB connection string
  • Verify environment variables are set
  • Ensure port 5000 is available
  • Check Node.js version (18+)

Frontend can't connect to backend

  • Verify VITE_APP_API_URL in client .env
  • Check CORS settings in backend
  • Ensure backend is running
  • Check browser console for errors

Tasks not appearing

  • Verify user is logged in
  • Check user email matches task assignment
  • Confirm task is not filtered out
  • Check MongoDB for data

Email summaries not working

  • Verify Gmail App Password (not regular password)
  • Check EMAIL and APP_PASSWORD in .env
  • Ensure "Less secure app access" is enabled (or use App Password)
  • Check spam folder

Socket.io not connecting

  • Verify WebSocket support in browser
  • Check firewall/proxy settings
  • Ensure backend Socket.io is initialized
  • Check browser console for connection errors

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is provided as-is. Add a proper license (MIT, Apache, etc.) if open-sourcing.

πŸ‘₯ Authors

  • Built with ❀️ for efficient task management
  • Contributions welcome!

πŸ™ Acknowledgments

  • React team for amazing frontend framework
  • MongoDB for flexible database solution
  • Socket.io for real-time capabilities
  • Vercel for seamless deployment
  • All open-source contributors

πŸ“ž Support

For issues, questions, or suggestions:

  • Open an issue on GitHub
  • Check existing documentation
  • Review troubleshooting section

Made with πŸ’™ by the Task Tapper Team

About

Task-Tapper is a comprehensive web application designed to simplify task creation, assignment, and tracking within teams. Built with the MERN stack (MongoDB, Express.js, React, Node.js) Task-Tapper helps teams stay organized and productive.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages