TaskManager is a RESTful API for task management, user authentication, and real-time interactions. Built with Node.js, Express, and MongoDB, it provides secure and scalable endpoints for managing users and tasks.
- User authentication (register, login)
- JWT-based authorization
- CRUD operations for tasks
- Middleware for input validation and security
- Rate limiting to prevent abuse
- Backend: Node.js, Express.js
- Database: MongoDB
- Authentication: JWT
- Middleware: Express Validator, Rate Limiting
- Node.js
- MongoDB (Local or Atlas instance)
- Clone the repository:
git clone https://github.com/kunal697/TaskManagerAssignment.git
- Install dependencies:
npm install
- Configure environment variables:
- Create a
.envfile in the root directory and add:PORT=5000 MONGO_URI=your_mongodb_uri JWT_SECRET=your_jwt_secret
- Create a
- Start the server:
npm start
- Endpoint:
POST /api/auth/register - Description: Registers a new user
- Request Body:
{ "username": "kunal_bodke", "email": "kunal@example.com", "password": "SecurePass123", "fullName": "Kunal Bodke", "gender": "Male" }
- Endpoint:
POST /api/auth/login - Description: Authenticates a user and returns a JWT token
- Request Body:
{ "email": "kunal@example.com", "password": "SecurePass123" }
- Endpoint:
POST /api/task/create - Headers:
{ "Authorization": "Bearer your_jwt_token" } - Request Body:
{ "title": "Write API Docs", "description": "Document all API endpoints", "status": "pending" }
- Endpoint:
GET /api/task - Query Parameters:
?page=1&limit=10&search=documentation
- Endpoint:
GET /api/user/search?username=kunal_bodke&email=kunal@example.com
📦 quizo-api
├── config
│ └── db.js
├── controllers
│ ├── authController.js
│ ├── taskController.js
│ ├── userController.js
├── middleware
│ ├── ValidateUser.js
│ ├── authMiddleware.js
│ ├── rateLimiter.js
│ ├── validateRequest.js
├── models
│ ├── TaskModel.js
│ ├── UserModel.js
├── routes
│ ├── authRoutes.js
│ ├── taskRoutes.js
│ ├── userRoutes.js
├── utils
│ ├── validateMongoDbId.js
├── .env
├── .gitignore
├── package.json
├── server.js