- Document Version: 1.0
- Date: December 2024
- Author: Development Team
- Status: Approved
This document specifies the requirements for the Simple Project Management System (SPMS), a web-based application designed to help teams manage projects, tasks, and track progress efficiently.
SPMS is a lightweight project management tool that provides:
- User management with role-based access control
- Project creation and management
- Task assignment and tracking
- Progress visualization and reporting
- Activity logging and collaboration
- SPMS: Simple Project Management System
- Admin: System administrator with full access
- Project Manager: User who can create and manage projects
- Team Member: User who can view and update assigned tasks
- CRUD: Create, Read, Update, Delete operations
- Flask Documentation: https://flask.palletsprojects.com/
- SQLAlchemy Documentation: https://docs.sqlalchemy.org/
- Bootstrap Documentation: https://getbootstrap.com/
SPMS is a standalone web application built using:
- Backend: Flask (Python web framework)
- Database: SQLite (lightweight database)
- Frontend: HTML, CSS (Bootstrap), JavaScript
- Authentication: Flask-Login with role-based access
- User registration and authentication
- Project management (create, edit, delete, view)
- Task management (create, assign, update status)
- Dashboard with progress visualization
- Activity logging and comments
- Role-based access control
- Characteristics: Full system access, manages all users and projects
- Responsibilities: User management, system configuration, oversight
- Access Level: Complete system access
- Characteristics: Creates and manages projects, assigns tasks
- Responsibilities: Project planning, team coordination, progress tracking
- Access Level: Project and task management within assigned scope
- Characteristics: Works on assigned tasks, updates progress
- Responsibilities: Task completion, status updates, collaboration
- Access Level: Limited to assigned tasks and projects
- Server: Linux/Windows/macOS with Python 3.7+
- Database: SQLite (file-based database)
- Web Server: Flask development server or production WSGI server
- Browser: Modern web browsers (Chrome, Firefox, Safari, Edge)
- Must use Flask framework for backend
- SQLite database for simplicity and portability
- Responsive design for mobile and desktop
- Role-based access control implementation
- Secure password hashing and session management
FR-001: User Registration
- Description: Users can register for new accounts
- Input: Username, email, password, role selection
- Processing: Validate input, hash password, create user record
- Output: User account created, confirmation message
- Priority: High
FR-002: User Authentication
- Description: Users can login with username and password
- Input: Username, password, remember me option
- Processing: Verify credentials, create session
- Output: Successful login, redirect to dashboard
- Priority: High
FR-003: Role-Based Access Control
- Description: System enforces different access levels based on user roles
- Input: User role, requested action
- Processing: Check permissions, grant or deny access
- Output: Access granted or denied with appropriate message
- Priority: High
FR-004: User Profile Management
- Description: Users can view and update their profile information
- Input: Profile data, password change
- Processing: Validate and update user information
- Output: Updated profile, confirmation message
- Priority: Medium
FR-005: Password Security
- Description: Passwords must be securely hashed and stored
- Input: Plain text password
- Processing: Hash password using secure algorithm
- Output: Hashed password stored in database
- Priority: High
FR-011: Project Creation
- Description: Authorized users can create new projects
- Input: Project name, description, start date, end date, status
- Processing: Validate input, create project record
- Output: New project created, redirect to project view
- Priority: High
FR-012: Project Editing
- Description: Project creators can edit project details
- Input: Updated project information
- Processing: Validate input, update project record
- Output: Project updated, confirmation message
- Priority: High
FR-013: Project Deletion
- Description: Project creators can delete projects
- Input: Project deletion confirmation
- Processing: Delete project and all associated tasks
- Output: Project deleted, confirmation message
- Priority: Medium
FR-014: Project Listing
- Description: Users can view list of projects based on their role
- Input: User role and permissions
- Processing: Filter projects based on access level
- Output: List of accessible projects
- Priority: High
FR-015: Project Progress Tracking
- Description: System calculates and displays project progress
- Input: Project tasks and their status
- Processing: Calculate completion percentage
- Output: Progress percentage and statistics
- Priority: High
FR-021: Task Creation
- Description: Authorized users can create tasks within projects
- Input: Task title, description, priority, due date, assigned user
- Processing: Validate input, create task record
- Output: New task created, activity logged
- Priority: High
FR-022: Task Assignment
- Description: Tasks can be assigned to specific team members
- Input: Task ID, assigned user ID
- Processing: Update task assignment
- Output: Task assigned to user
- Priority: High
FR-023: Task Status Updates
- Description: Users can update task status (To Do, In Progress, Done)
- Input: Task ID, new status
- Processing: Update task status, log activity
- Output: Status updated, activity logged
- Priority: High
FR-024: Task Filtering
- Description: Users can filter tasks by status, priority, or project
- Input: Filter criteria
- Processing: Query tasks based on filters
- Output: Filtered task list
- Priority: Medium
FR-025: Task Comments
- Description: Users can add comments to tasks
- Input: Task ID, comment text
- Processing: Create activity log entry
- Output: Comment added, activity logged
- Priority: Medium
FR-031: Dashboard Statistics
- Description: Dashboard displays task and project statistics
- Input: User role and permissions
- Processing: Calculate statistics based on accessible data
- Output: Statistics cards and charts
- Priority: High
FR-032: Progress Visualization
- Description: System displays progress using charts and graphs
- Input: Task and project data
- Processing: Generate chart data
- Output: Visual progress representation
- Priority: High
FR-033: Recent Activities
- Description: Dashboard shows recent system activities
- Input: Activity log data
- Processing: Query recent activities
- Output: List of recent activities
- Priority: Medium
FR-034: Overdue Tasks Alert
- Description: System identifies and alerts about overdue tasks
- Input: Task due dates and current date
- Processing: Compare dates, identify overdue tasks
- Output: Overdue task alerts
- Priority: High
FR-041: Activity Tracking
- Description: System logs all user activities and changes
- Input: User actions and system changes
- Processing: Create activity log entries
- Output: Activity logged in database
- Priority: High
FR-042: Activity History
- Description: Users can view activity history for tasks and projects
- Input: Task or project ID
- Processing: Query activity logs
- Output: Chronological activity list
- Priority: Medium
NFR-001: Response Time
- Description: Web pages must load within 3 seconds
- Measurement: Time from request to page display
- Priority: High
NFR-002: Database Performance
- Description: Database queries must complete within 1 second
- Measurement: Query execution time
- Priority: High
NFR-003: Concurrent Users
- Description: System must support at least 50 concurrent users
- Measurement: Number of simultaneous active sessions
- Priority: Medium
NFR-004: Data Storage
- Description: System must handle up to 10,000 projects and 100,000 tasks
- Measurement: Database size and record count
- Priority: Medium
NFR-006: Password Security
- Description: Passwords must be hashed using secure algorithms
- Implementation: Werkzeug password hashing
- Priority: High
NFR-007: Session Security
- Description: User sessions must be secure and timeout after inactivity
- Implementation: Flask-Login session management
- Priority: High
NFR-008: Input Validation
- Description: All user inputs must be validated and sanitized
- Implementation: WTForms validation
- Priority: High
NFR-009: CSRF Protection
- Description: Forms must be protected against CSRF attacks
- Implementation: Flask-WTF CSRF tokens
- Priority: High
NFR-010: Access Control
- Description: Users can only access authorized resources
- Implementation: Role-based permission checking
- Priority: High
NFR-011: Responsive Design
- Description: Interface must work on desktop and mobile devices
- Implementation: Bootstrap responsive framework
- Priority: High
NFR-012: User Interface
- Description: Interface must be intuitive and easy to use
- Implementation: Modern web design principles
- Priority: High
NFR-013: Error Handling
- Description: System must provide clear error messages
- Implementation: User-friendly error pages and messages
- Priority: Medium
NFR-014: Navigation
- Description: Navigation must be consistent and logical
- Implementation: Consistent navigation structure
- Priority: Medium
NFR-016: System Availability
- Description: System must be available 99% of the time
- Measurement: Uptime percentage
- Priority: Medium
NFR-017: Data Integrity
- Description: Data must remain consistent and accurate
- Implementation: Database constraints and validation
- Priority: High
NFR-018: Error Recovery
- Description: System must recover gracefully from errors
- Implementation: Exception handling and logging
- Priority: Medium
NFR-019: Data Backup
- Description: System must support data backup and recovery
- Implementation: Database backup procedures
- Priority: Medium
- Minimum RAM: 512 MB
- Recommended RAM: 2 GB
- Storage: 1 GB for application and database
- CPU: 1 GHz processor
- Operating System: Linux, Windows, or macOS
- Python: Version 3.7 or higher
- Web Browser: Modern browser with JavaScript support
- Database: SQLite (included with Python)
- Internet: Required for external dependencies (Bootstrap, Font Awesome)
- Port: 5000 (default Flask port)
- Protocols: HTTP/HTTPS
Actor: New User Goal: Create account and access system Preconditions: None Main Flow:
- User navigates to registration page
- User fills registration form
- System validates input
- System creates user account
- User is redirected to login page
- User enters credentials
- System authenticates user
- User is redirected to dashboard
Actor: Project Manager or Admin Goal: Create new project Preconditions: User is logged in and has permission Main Flow:
- User navigates to project creation page
- User fills project form
- System validates input
- System creates project
- System logs activity
- User is redirected to project view
Actor: Project Manager or Admin Goal: Assign task to team member Preconditions: Project and users exist Main Flow:
- User navigates to task creation
- User fills task form including assignment
- System validates input
- System creates task
- System logs activity
- Task appears in assigned user's task list
Actor: Team Member Goal: Update task progress Preconditions: User has assigned tasks Main Flow:
- User views assigned tasks
- User selects task to update
- User changes status
- System updates task status
- System logs activity
- Updated status is reflected in dashboard
- Users can register and login successfully
- Role-based access control works correctly
- Projects can be created, edited, and deleted
- Tasks can be created, assigned, and updated
- Dashboard displays accurate statistics
- Activity logging captures all changes
- All forms validate input correctly
- Pages load within 3 seconds
- System supports 50+ concurrent users
- Responsive design works on mobile devices
- Security measures are properly implemented
- Error handling provides clear messages
- Database performance meets requirements
- Interface is intuitive and easy to use
- Navigation is consistent and logical
- All features work as expected
- System is stable and reliable
- Documentation is complete and accurate
- Users have basic computer literacy
- Modern web browsers are available
- Internet connection for external resources
- Python environment is properly configured
- Flask framework and extensions
- SQLite database
- Bootstrap CSS framework
- Chart.js for visualizations
- Modern web browser
-
Risk: Database performance with large datasets
-
Mitigation: Implement indexing and query optimization
-
Risk: Security vulnerabilities
-
Mitigation: Regular security audits and updates
- Risk: User adoption and training
- Mitigation: Provide comprehensive documentation and training
- Email notifications
- File attachments
- Advanced reporting
- API integration
- Mobile application
- Database migration to PostgreSQL/MySQL
- Caching implementation
- Load balancing
- Microservices architecture
Document Approval
- Technical Lead: _________________ Date: _______
- Project Manager: _________________ Date: _______
- Stakeholder: _________________ Date: _______