A comprehensive full-stack project management system designed for educational institutions to manage student projects and tasks efficiently.
- Project Management: Create and oversee multiple academic projects
- Student Assignment: Assign students to specific projects and tasks
- Task Monitoring: Track task progress and completion status
- Dashboard Analytics: View comprehensive statistics and project metrics
- Real-time Communication: Direct messaging with students
- Project Access: View assigned projects and their details
- Task Management: Update task status and view assignments
- Profile Management: Maintain personal academic profile
- Messaging System: Communicate with administrators and peers
- Progress Tracking: Monitor personal task completion rates
- Role-based Access Control: Secure admin and student interfaces
- Real-time Updates: WebSocket-powered live notifications
- Responsive Design: Mobile-first UI with modern components
- Secure Authentication: JWT-based authentication system
- GraphQL API: Efficient data fetching and manipulation
- Node.js - Runtime environment
- Express.js - Web application framework
- GraphQL - API query language and runtime
- MongoDB - NoSQL database with Mongoose ODM
- Socket.IO - Real-time communication
- JWT - JSON Web Token authentication
- bcrypt - Password hashing
- TypeScript - Static type checking
- React 18 - Component-based UI library
- TypeScript - Type-safe development
- TailwindCSS - Utility-first CSS framework
- shadcn/ui - Modern component library
- Apollo Client - GraphQL client for React
- Socket.IO Client - Real-time communication
- React Router - Client-side routing
- React Hook Form - Form management
taskmaster/
βββ backend/ # Node.js + GraphQL backend
β βββ src/
β β βββ models/ # MongoDB models
β β β βββ User.ts
β β β βββ Project.ts
β β β βββ Task.ts
β β βββ schema/ # GraphQL schema
β β β βββ schema.ts
β β β βββ resolvers.ts
β β βββ types/ # TypeScript definitions
β β βββ index.ts # Server entry point
β βββ package.json
β βββ tsconfig.json
βββ frontend/ # React + TailwindCSS frontend
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Route components
β β βββ hooks/ # Custom React hooks
β β βββ graphql/ # GraphQL queries & mutations
β β βββ types/ # TypeScript interfaces
β β βββ App.tsx # Main application component
β βββ package.json
β βββ tailwind.config.js
βββ README.md
- Node.js (v16 or higher)
- MongoDB Atlas account or local MongoDB installation
- Git
git clone https://github.com/yourusername/taskmaster.git
cd taskmaster# Install dependencies
npm install
# Create environment file
cp .env.example .envConfigure your .env file:
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_super_secret_jwt_key
PUBLIC_URL=http://localhost:3000# Start development server
npm run devThe backend will be running at http://localhost:4000/graphql
# Navigate to frontend directory (from root)
cd frontend
# Install dependencies
npm install
# Create environment file
cp .env.example .env.localConfigure your .env.local file:
NEXT_PUBLIC_URL=http://localhost:4000# Start development server
npm startThe frontend will be running at http://localhost:3000
Access the GraphQL playground at http://localhost:4000/graphql
All protected routes require a JWT token in the Authorization header:
Authorization: Bearer <your_jwt_token>
# Login
mutation {
login(username: "admin", password: "password") {
token
role
}
}
# Register new user
mutation {
signup(
username: "student1"
password: "securepass"
name: "John Doe"
universityId: "ST001"
role: student
) {
id
username
role
}
}# Get all projects (Admin only)
query {
allProjects {
id
title
description
status
selectedStudents
}
}
# Get my projects (Student)
query {
myProjects {
id
title
description
status
}
}
# Create project (Admin only)
mutation {
createProject(
title: "Web Development Project"
description: "Build a full-stack application"
category: "Computer Science"
selectedStudents: ["student_id_1", "student_id_2"]
) {
id
title
}
}# Get user tasks
query {
tasks {
id
taskName
description
status
dueDate
projectTitle
}
}
# Create task
mutation {
createTask(
projectId: "project_id"
projectTitle: "Web Development Project"
taskName: "Setup React App"
description: "Initialize React application with TypeScript"
assignedStudent: "student_id"
dueDate: "2024-12-31"
) {
id
taskName
status
}
}
# Update task
mutation {
updateTask(
id: "task_id"
status: "Completed"
) {
id
status
updatedAt
}
}- Admin: Full system access, project creation, user management
- Student: Limited access to assigned projects and personal tasks
- All GraphQL mutations require authentication
- Role-based query filtering for sensitive data
- JWT token validation on each request
// Join user room
socket.emit('join', { userId: 'user_id' });
// Send message
socket.emit('sendMessage', {
recipientId: 'recipient_id',
message: 'Hello!',
senderId: 'sender_id'
});// Receive message
socket.on('receiveMessage', (message) => {
console.log('New message:', message);
});- Set environment variables in your hosting platform
- Build the application:
npm run build
- Start the production server:
npm start
- Build the application:
npm run build
- Deploy the
buildfolder to your hosting service - Configure environment variables for production API endpoints
- Create a MongoDB Atlas cluster
- Configure network access and database users
- Update connection strings in environment variables
- User authentication and authorization
- Project management system
- Task assignment and tracking
- Real-time messaging
- Role-based access control
- Responsive web interface
- GraphQL API
- WebSocket integration
- File upload for project resources
- Advanced notification system
- Project templates
- Mobile application
- Analytics dashboard
- Email notifications
- Bulk operations
- Advanced search and filtering
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow TypeScript best practices
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
- Follow the existing code style
Please use the GitHub Issues page to report bugs or request features.
Bug Report Template:
- Environment (OS, Node version, Browser)
- Steps to reproduce
- Expected behavior
- Actual behavior
- Screenshots (if applicable)
This project is licensed under the MIT License - see the LICENSE file for details.
