A comprehensive full-stack task management application built with Node.js, Express, React, and Vite. This application enables teams to efficiently manage tasks, collaborate, track progress, and generate detailed reports.
Task-Manager is a modern web application designed to streamline task management workflows for individuals and teams. It provides a centralized platform for creating, assigning, tracking, and completing tasks with real-time collaboration features. The application includes role-based access control (Admin and User roles) with dedicated interfaces for different user types.
- User Authentication: Secure login and signup with JWT-based authentication
- Role-Based Access: Admin panel for management, user dashboard for task tracking
- Task Management: Create, assign, update, and track task progress
- Reporting: Generate comprehensive reports on task completion and team performance
- File Uploads: Attach files and images to tasks for better documentation
- User Management: Admin capabilities to manage user roles and permissions
- Responsive UI: Modern, intuitive interface built with React
- User registration and login
- Secure password handling
- JWT token-based session management
- Role-based access control (Admin/User)
- Create and assign tasks to team members
- Set task priorities and deadlines
- Track task status (Todo, In Progress, Completed)
- Add task descriptions and attachments
- Update task details in real-time
- Delete tasks with confirmation
- View all users in the system
- Manage user roles and permissions
- Monitor user activity and task assignments
- User profile management
- Generate task completion reports
- View team performance metrics
- Task status analytics
- User productivity insights
- Upload task attachments
- Support for images and documents
- File storage and retrieval
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB
- Authentication: JWT (JSON Web Tokens)
- Middleware: Custom authentication, error handling, and file upload middleware
- Framework: React 18
- Build Tool: Vite
- Styling: CSS/TailwindCSS
- HTTP Client: Axios
- State Management: React Context API
- Charts: Recharts for analytics visualization
- Version Control: Git
- Deployment: Render
- Node.js (v14 or higher)
- npm or yarn
- MongoDB (local instance or MongoDB Atlas account)
- Git
-
Clone the repository
git clone <repository-url> cd Task-Manager/backend
-
Install dependencies
npm install
-
Configure environment variables Create a
.envfile in thebackenddirectory:PORT=5000 MONGODB_URI=mongodb://localhost:27017/task-manager JWT_SECRET=your_jwt_secret_key_here ADMIN_INVITE_TOKEN=your_admin_invite_token CLIENT_URL=your_frontend_url NODE_ENV=development -
Start the backend server
npm start
The backend will run on
http://localhost:5000
-
Navigate to frontend directory
cd Task-Manager/frontend -
Install dependencies
npm install
-
Configure environment variables Create a
.envfile in thefrontenddirectory:VITE_API_BASE_URL=http://localhost:5000 -
Start the development server
npm run dev
The frontend will run on
http://localhost:5173
- Open your browser and navigate to
http://localhost:5173 - Use the signup page to create an account
- Login with your credentials
- Access the dashboard to manage tasks
- Email:
admin@example.com - Password:
admin123 - Invite Token:
your-admin-invite-token-from-env
- Render account (create at render.com)
- GitHub repository with your code
- MongoDB Atlas account for cloud database
- Create a MongoDB Atlas cluster at mongodb.com/cloud
- Create a database user and note the connection string
- Add Render's IP addresses to the network access whitelist
-
Push code to GitHub
git push origin main
-
Create a new Web Service on Render
- Go to Render Dashboard
- Click "New +" → "Web Service"
- Select your GitHub repository and connect
- Configure:
- Name: task-manager-api
- Runtime: Node
- Build Command:
npm install - Start Command:
npm start
-
Set Environment Variables In Render dashboard, add the following environment variables:
PORT=10000 MONGODB_URI=your_mongodb_atlas_connection_string JWT_SECRET=your_secure_jwt_secret_key JWT_EXPIRE=7d NODE_ENV=production -
Deploy
- Render will automatically deploy your backend
- Note the backend URL (e.g.,
https://task-manager-api.onrender.com)
-
Update API Base URL In
frontend/.env:VITE_API_BASE_URL=https://task-manager-api.onrender.com -
Create a new Static Site on Render
- Go to Render Dashboard
- Click "New +" → "Static Site"
- Select your GitHub repository
- Configure:
- Name: task-manager-ui
- Build Command:
npm install && npm run build - Publish Directory:
dist
-
Deploy
- Render will automatically build and deploy your frontend
- Your application will be live at the provided URL
Update your backend CORS configuration to allow requests from your Render frontend URL:
In backend/src/server.js:
const corsOptions = {
origin: process.env.CLIENT_URL || 'http://localhost:5173',
credentials: true
};
app.use(cors(corsOptions));Add to .env:
CLIENT_URL=https://task-manager-ui.onrender.com
- Visit your frontend URL
- Test user registration and login
- Create and manage tasks
- Verify file uploads work correctly
- Check the backend API health
- Free tier limitations: Render's free tier may have spin-down periods. Consider upgrading to a paid plan for production
- Database backups: Regularly backup your MongoDB Atlas database
- Environment security: Never commit
.envfiles to version control - API rate limiting: Consider implementing rate limiting in production
- HTTPS: Render automatically provides HTTPS for all services
- Port already in use: Change PORT in
.env - MongoDB connection failed: Verify connection string and network access
- CORS errors: Check frontend URL in CORS configuration
- API requests failing: Verify
VITE_API_BASE_URLis correct - Build errors: Clear
node_modulesand reinstall:rm -rf node_modules && npm install
- Build fails: Check build logs in Render dashboard
- Application crashes: Review recent deployments and logs
- Slow performance: Check free tier resource limits and consider upgrading
This project is available for use. Please check with the repository owner for specific licensing information.