A comprehensive Flask-based web application for managing projects, tasks, and team collaboration with role-based access control.
- Overview
- Features
- Technology Stack
- Installation
- Configuration
- Usage
- User Roles & Permissions
- Database Schema
- API Endpoints
- Screenshots
- Development
- Testing
- Deployment
- Contributing
- License
The Simple Project Management System (SPMS) is a full-featured web application designed to streamline project management workflows. It provides a centralized platform for teams to collaborate on projects, manage tasks, track progress, and maintain accountability through comprehensive activity logging.
- Centralized Project Management: All projects and tasks in one place
- Role-Based Access Control: Secure access based on user roles
- Real-Time Progress Tracking: Visual dashboards and statistics
- Team Collaboration: Assign tasks and track team performance
- Activity Logging: Complete audit trail of all actions
- Responsive Design: Works on desktop, tablet, and mobile devices
- User Registration & Login: Secure authentication system
- Role-Based Access Control: Admin, Project Manager, Team Member roles
- Password Security: Hashed passwords with Werkzeug
- Session Management: Flask-Login integration
- Profile Management: User profile pages with statistics
- Project Creation: Create and manage multiple projects
- Project Details: Comprehensive project information
- Progress Tracking: Visual progress indicators
- Status Management: Active, Completed, On Hold, Cancelled
- Date Management: Start and end date tracking
- Project Dashboard: Overview of all projects
- Task Creation: Assign tasks to team members
- Task Status: To Do, In Progress, Done workflow
- Priority Levels: Low, Medium, High, Urgent priorities
- Due Date Tracking: Deadline management with overdue alerts
- Task Assignment: Assign tasks to specific team members
- Task Comments: Collaborative commenting system
- Bulk Operations: Mass task updates and management
- User Creation: Add new team members
- Role Assignment: Assign appropriate roles to users
- User Activation: Enable/disable user accounts
- User Statistics: View user activity and performance
- Account Management: Edit user details and passwords
- Project Statistics: Total projects, active projects, completed projects
- Task Analytics: Task distribution, completion rates
- Team Performance: User activity and productivity metrics
- Progress Visualization: Charts and graphs for data insights
- Recent Activity: Real-time activity feed
- Search & Filtering: Find projects and tasks quickly
- Activity Logging: Complete audit trail of all actions
- Responsive Design: Mobile-friendly interface
- Real-Time Updates: Live status updates and notifications
- Data Export: Export project and task data
- Backup & Recovery: Database backup capabilities
- Python 3.13: Core programming language
- Flask 3.0.0: Web framework
- SQLAlchemy 2.0.30+: Object-Relational Mapping
- Flask-SQLAlchemy 3.1.1: Flask integration for SQLAlchemy
- Flask-Login 0.6.3: User session management
- Flask-WTF 1.2.1: Form handling and CSRF protection
- WTForms 3.1.1: Form validation and rendering
- Werkzeug 3.0.1: WSGI utility library
- SQLite: Lightweight, serverless database
- Database Migrations: Automatic schema management
- HTML5: Semantic markup
- CSS3: Modern styling with Bootstrap 5
- JavaScript: Interactive functionality
- Bootstrap 5: Responsive UI framework
- Font Awesome: Icon library
- Chart.js: Data visualization
- Git: Version control
- Virtual Environment: Python dependency isolation
- Pytest: Testing framework
- Flask Debug Toolbar: Development debugging
- Python 3.13 or higher
- pip (Python package installer)
- Git (for cloning the repository)
git clone <repository-url>
cd projectManager# Create virtual environment
python -m venv venv
# Activate virtual environment
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activatepip install -r requirements.txtpython run.pyThe application will automatically:
- Create the SQLite database
- Set up all required tables
- Create an admin user
- Populate with sample data
python run.pyThe application will be available at http://localhost:5000
Create a .env file in the project root:
# Flask Configuration
SECRET_KEY=your-secret-key-here
FLASK_ENV=development
FLASK_DEBUG=True
# Database Configuration
DATABASE_URL=sqlite:///project_manager.db
# Email Configuration (Optional)
MAIL_SERVER=smtp.gmail.com
MAIL_PORT=587
MAIL_USE_TLS=True
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-passwordThe application uses SQLite by default. To use PostgreSQL or MySQL:
# In app.py
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:password@localhost/dbname'
# or
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:password@localhost/dbname'- Access the Application: Navigate to
http://localhost:5000 - Login: Use the default admin credentials:
- Username:
admin - Password:
admin123
- Username:
- Explore: Navigate through the dashboard and features
The system comes with pre-configured users:
| Username | Password | Role | Description |
|---|---|---|---|
| admin | admin123 | Admin | Full system access |
| manager | manager123 | Project Manager | Create projects, assign tasks |
| member | member123 | Team Member | View assigned tasks |
| john_doe | password123 | Team Member | Sample user |
| jane_smith | password123 | Team Member | Sample user |
- Login as admin or project manager
- Navigate to "Projects" β "Create Project"
- Fill in project details:
- Project name
- Description
- Start and end dates
- Status
- Save the project
- Add tasks to the project
- Create Tasks: Assign tasks to team members
- Set Priorities: Mark tasks as Low, Medium, High, or Urgent
- Track Progress: Update task status (To Do β In Progress β Done)
- Add Comments: Collaborate through task comments
- Monitor Deadlines: Track due dates and overdue tasks
- Full System Access: All features and data
- User Management: Create, edit, delete users
- Project Management: Create, edit, delete any project
- Task Management: Create, edit, delete any task
- System Settings: Configure application settings
- Data Export: Export all data
- Analytics: View comprehensive reports
- Project Creation: Create and manage projects
- Task Assignment: Assign tasks to team members
- Team Management: View team members and their tasks
- Progress Tracking: Monitor project and task progress
- Reporting: Generate project reports
- Limited User Management: View user profiles
- Task Management: View and update assigned tasks
- Status Updates: Change task status
- Comments: Add comments to tasks
- Profile Management: Update personal profile
- Limited Project Access: View assigned projects only
CREATE TABLE users (
id INTEGER PRIMARY KEY,
username VARCHAR(80) UNIQUE NOT NULL,
email VARCHAR(120) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
role VARCHAR(20) NOT NULL DEFAULT 'team_member',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT TRUE
);CREATE TABLE projects (
id INTEGER PRIMARY KEY,
name VARCHAR(200) NOT NULL,
description TEXT,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
status VARCHAR(20) DEFAULT 'active',
created_by INTEGER NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (created_by) REFERENCES users(id)
);CREATE TABLE tasks (
id INTEGER PRIMARY KEY,
title VARCHAR(200) NOT NULL,
description TEXT,
status VARCHAR(20) DEFAULT 'To Do',
priority VARCHAR(10) DEFAULT 'medium',
due_date DATE,
project_id INTEGER NOT NULL,
assigned_to INTEGER NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (project_id) REFERENCES projects(id),
FOREIGN KEY (assigned_to) REFERENCES users(id)
);CREATE TABLE activity_logs (
id INTEGER PRIMARY KEY,
task_id INTEGER,
user_id INTEGER NOT NULL,
action VARCHAR(50) NOT NULL,
message TEXT NOT NULL,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (task_id) REFERENCES tasks(id),
FOREIGN KEY (user_id) REFERENCES users(id)
);GET /auth/login- Login pagePOST /auth/login- Process loginGET /auth/register- Registration pagePOST /auth/register- Process registrationGET /auth/logout- Logout userGET /auth/profile- User profile
GET /project/list- List all projectsGET /project/create- Create project formPOST /project/create- Process project creationGET /project/<id>- View project detailsGET /project/<id>/edit- Edit project formPOST /project/<id>/edit- Process project updatePOST /project/<id>/delete- Delete project
GET /task/list- List all tasksGET /task/my-tasks- User's assigned tasksGET /task/create/<project_id>- Create task formPOST /task/create/<project_id>- Process task creationGET /task/<id>- View task detailsGET /task/<id>/edit- Edit task formPOST /task/<id>/edit- Process task updatePOST /task/<id>/delete- Delete taskPOST /task/<id>/status- Update task status
GET /users/list- List all usersGET /users/create- Create user formPOST /users/create- Process user creationGET /users/<id>/edit- Edit user formPOST /users/<id>/edit- Process user updatePOST /users/<id>/delete- Delete userPOST /users/<id>/toggle-status- Toggle user status
GET /dashboard- Main dashboardGET /- Redirect to dashboard
Main dashboard showing project statistics and recent activity
Project list with status indicators and progress bars
Task list with priority indicators and status updates
User management interface for administrators
projectManager/
βββ app.py # Main Flask application
βββ models.py # Database models
βββ forms.py # WTForms definitions
βββ run.py # Application runner
βββ requirements.txt # Python dependencies
βββ seed_data.py # Sample data generator
βββ test_app.py # Test suite
βββ deploy.py # Deployment script
βββ routes/ # Route handlers
β βββ auth.py # Authentication routes
β βββ project.py # Project routes
β βββ task.py # Task routes
β βββ users.py # User management routes
βββ templates/ # HTML templates
β βββ base.html # Base template
β βββ dashboard.html # Dashboard page
β βββ project_*.html # Project templates
β βββ task_*.html # Task templates
β βββ user_*.html # User templates
βββ static/ # Static assets
β βββ css/ # Stylesheets
β βββ js/ # JavaScript files
β βββ images/ # Images
βββ instance/ # Instance folder
β βββ project_manager.db # SQLite database
βββ docs/ # Documentation
βββ SRS.md # Software Requirements
βββ ER_DIAGRAM.md # Database schema
βββ PROJECT_SUMMARY.md # Project overview
- Create Models: Add new database models in
models.py - Create Forms: Add form classes in
forms.py - Create Routes: Add route handlers in appropriate files
- Create Templates: Add HTML templates in
templates/ - Update Navigation: Modify
base.htmlfor new menu items - Test: Add tests in
test_app.py
- PEP 8: Follow Python style guidelines
- Docstrings: Document all functions and classes
- Type Hints: Use type annotations where appropriate
- Error Handling: Implement proper exception handling
- Security: Validate all user inputs
- Performance: Optimize database queries
# Run all tests
python -m pytest test_app.py -v
# Run specific test
python -m pytest test_app.py::test_user_registration -v
# Run with coverage
python -m pytest test_app.py --cov=. --cov-report=htmlThe test suite covers:
- Authentication: Login, registration, logout
- Project Management: CRUD operations
- Task Management: CRUD operations
- User Management: Admin functions
- Authorization: Role-based access control
- Database Operations: Model relationships
- User Registration: Test user creation and validation
- Login/Logout: Test authentication flow
- Project Creation: Test project management
- Task Assignment: Test task workflows
- Role Permissions: Test access control
- Data Integrity: Test database constraints
- Environment Variables:
export FLASK_ENV=production
export SECRET_KEY=your-production-secret-key
export DATABASE_URL=your-production-database-url- Database Setup:
# For PostgreSQL
pip install psycopg2-binary
# Update DATABASE_URL in app.py- Web Server:
# Using Gunicorn
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:8000 app:appFROM python:3.13-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "run.py"]# Install Heroku CLI
# Create Procfile
echo "web: gunicorn app:app" > Procfile
# Deploy
git add .
git commit -m "Deploy to Heroku"
git push heroku main- Use container services (ECS, Cloud Run, Container Instances)
- Set up load balancers for high availability
- Configure auto-scaling
- Set up monitoring and logging
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-feature - Commit changes:
git commit -am 'Add new feature' - Push to branch:
git push origin feature/new-feature - Submit a pull request
# Clone your fork
git clone https://github.com/yourusername/projectManager.git
cd projectManager
# Create virtual environment
python -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run tests
python -m pytest test_app.py- Automated Tests: All tests must pass
- Code Quality: Follow style guidelines
- Documentation: Update relevant documentation
- Security: Review for security vulnerabilities
- Performance: Consider performance implications
This project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: Check this README and code comments
- Issues: Report bugs and request features on GitHub
- Discussions: Use GitHub Discussions for questions
- Email: Contact the development team
# Check database file permissions
chmod 664 instance/project_manager.db
# Reset database
rm instance/project_manager.db
python run.py# Ensure virtual environment is activated
source venv/bin/activate
# Reinstall dependencies
pip install -r requirements.txt# Check file permissions
chmod +x run.py
# Run with proper permissions
python run.py- Email Notifications: Task assignments and deadline alerts
- File Attachments: Upload files to tasks and projects
- Time Tracking: Track time spent on tasks
- Advanced Reporting: Custom reports and analytics
- API Integration: REST API for mobile apps
- Real-time Updates: WebSocket integration
- Mobile App: React Native mobile application
- Advanced Permissions: Granular permission system
- v1.0.0: Initial release with core functionality
- v1.1.0: Added user management and advanced features
- v1.2.0: Enhanced UI and performance improvements
- v2.0.0: Planned major update with new features
The Simple Project Management System (SPMS) provides a comprehensive solution for project and task management. With its intuitive interface, robust security, and scalable architecture, it's perfect for teams of all sizes.
Key Benefits:
- β Easy to Use: Intuitive interface for all skill levels
- β Secure: Role-based access control and data protection
- β Scalable: Handles projects from small teams to large organizations
- β Flexible: Customizable to fit your workflow
- β Reliable: Built with proven technologies and best practices
Get Started Today:
- Follow the installation guide
- Create your first project
- Invite your team
- Start managing tasks efficiently
For questions, support, or contributions, please visit our GitHub repository or contact the development team.
Built with β€οΈ using Flask, SQLAlchemy, and modern web technologies.