A real-time collaborative task management platform that allows users to create, share, and track tasks with friends. Built with TypeScript, React, and Node.js.
- Create, edit, and delete tasks with title, description, due date, and priority
- Filter tasks by status (pending, in_progress, completed) and priority (low, medium, high)
- Tag-based task organization
- Real-time task status updates
- View tasks in a responsive grid layout
- Send and receive friend requests
- Accept/reject incoming friend requests
- Search for users by name or email
- Remove friends from your network
- View your friends list
- Share tasks with friends
- Real-time updates when shared tasks are modified
- View tasks shared with you in a separate tab
- Control over task sharing permissions
- JWT-based authentication with secure cookie storage
- Protected API routes
- Email and password-based user registration
- Secure session management
- React with TypeScript
- Tailwind CSS for styling
- Heroicons for icons
- Axios for API calls
- WebSocket for real-time updates
- React Router for navigation
- Node.js with Express
- TypeScript
- MongoDB with Mongoose
- JWT for authentication
- WebSocket server for real-time communication
- Cookie-based session management
- Node.js (v14 or higher)
- MongoDB instance
- npm or yarn package manager
- Clone the repository
git clone https://github.com/Dev-Puneet-V/Task-Sharing.git
cd Task-Sharing
- Install backend dependencies
cd backend
npm install
- Set up environment variables
Create a
.env
file in the backend directory with:
PORT=5000
MONGODB_URI=your_mongodb_uri
JWT_SECRET=your_jwt_secret
- Install frontend dependencies
cd ../frontend
npm install
- Start the development servers
Backend:
cd backend
npm run dev
Frontend:
cd frontend
npm run dev
POST /api/auth/register
- Register new userPOST /api/auth/login
- Login userPOST /api/auth/logout
- Logout userGET /api/auth/me
- Get current user
GET /api/tasks
- Get all tasksPOST /api/tasks
- Create new taskPATCH /api/tasks/:id
- Update taskDELETE /api/tasks/:id
- Delete taskGET /api/tasks/stats
- Get task statistics
POST /api/friends/request
- Send friend requestPATCH /api/friends/request/:userId
- Accept/reject friend requestGET /api/friends/requests
- Get friend requestsGET /api/friends
- Get friends listDELETE /api/friends/:friendId
- Remove friendGET /api/friends/shared-tasks
- Get tasks shared with me
- Fork the repository
- Create your 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
This project is open source and available under the ISC License.