Professional Documents
Culture Documents
Lessons Learned App
Lessons Learned App
1. Projects
ProjectID INT (Primary Key, Auto Increment)
ProjectName VARCHAR(255)
StartDate DATE
EndDate DATE
Description TEXT
ProjectManagerID INT (Foreign Key to Users)
Status ENUM('Active', 'Completed', 'On Hold', 'Cancelled')
2. Users
UserID INT (Primary Key, Auto Increment)
FirstName VARCHAR(100)
LastName VARCHAR(100)
Email VARCHAR(150) UNIQUE
Password VARCHAR(255) (Stored using a hashing algorithm)
Role ENUM('Project Manager', 'Team Member', 'Admin')
DateJoined DATE
3. Lessons
LessonID INT (Primary Key, Auto Increment)
ProjectID INT (Foreign Key to Projects)
UserID INT (Foreign Key to Users)
LessonTitle VARCHAR(255)
LessonDescription TEXT
DateAdded DATETIME
CategoryID INT (Foreign Key to LessonCategories)
Priority ENUM('High', 'Medium', 'Low')
4. LessonCategories
CategoryID INT (Primary Key, Auto Increment)
CategoryName VARCHAR(150)
Description TEXT
5. Comments
CommentID INT (Primary Key, Auto Increment)
LessonID INT (Foreign Key to Lessons)
UserID INT (Foreign Key to Users)
CommentText TEXT
DateCommented DATETIME
6. Tags
TagID INT (Primary Key, Auto Increment)
TagName VARCHAR(100)
7. LessonTags (To represent many-to-many relationships between lessons and
tags)
LessonID INT (Foreign Key to Lessons)
TagID INT (Foreign Key to Tags)
1. Introduction:
The "Lessons Learned" application serves as a repository for project teams to store, categorize, and
retrieve valuable insights and experiences gained during the completion of projects.
1.1 Purpose:
To provide a centralized system for capturing, categorizing, and retrieving lessons learned from
completed projects to improve future project planning and execution.
1.2 Scope:
2. Functional Requirements:
2.1.1 Users should be able to register, log in, and log out.
2.1.2 Admin users should be able to manage user roles and permissions.
2.2.2 Projects can be marked with statuses such as "Active", "Completed", "On Hold", or
"Cancelled".
2.3.3 Users can assign a priority level (High, Medium, Low) to lessons.
2.3.4 Users can edit or delete their own lessons. Admin users have the privilege to edit or delete
any lesson.
2.4.3 Users should receive notifications when someone comments on a lesson they created or
commented on.
2.5.2 Users can filter lessons by category, project, date range, or priority.
2.6 Tags:
3. Non-functional Requirements:
3.1 Usability:
3.1.1 The application should have an intuitive user interface with clear navigation menus.
3.2 Performance:
3.2.1 The application should load within 3 seconds on a standard broadband connection.
3.2.2 Search results should display within 2 seconds of the query being made.
3.3 Security:
3.3.2 The system should have protection against common web vulnerabilities like SQL injection,
XSS, and CSRF.
3.3.3 Regular backups of the database should be taken to prevent data loss.
3.4 Scalability:
3.4.1 The system should be designed to handle a large number of concurrent users.
3.4.2 It should be possible to add additional servers or resources without major changes to the
architecture.
3.5 Accessibility:
3.5.1 The application should be usable by people with disabilities and should meet accessibility
guidelines (e.g., WCAG).
5. Acceptance Criteria:
Outlines the criteria that must be met for the application to be considered complete. For example:
5.2 A lesson, once added, appears in the list view and can be searched.
Queries
1. User Management:
2. Project Management:
Lessons Management:
2. Update a lesson:
3. Delete a lesson:
2. Edit a comment:
6. Tags:
Header: App logo on the left, "Login" and "Register" buttons on the right.
Main Content:
For Login: Fields for Email and Password. "Forgot Password" link below. "Login" button.
For Registration: Fields for First Name, Last Name, Email, Password, Confirm Password.
"Register" button.
Header:
Right: Notifications bell icon, User profile picture with dropdown (Profile, Settings,
Logout).
Home (Dashboard)
My Projects
All Lessons
Main Content:
Main Content:
Each project entry displays: Project Name, Start Date, End Date, Status, and Manager.
Edit and Delete options.
4. Lessons Page:
Main Content:
Each lesson entry displays: Title, Description snippet, Date, Project Name, and Priority.
Options to View, Edit, Delete.
Main Content:
Lesson title, full description, date, associated project, category, and priority displayed
prominently.
Below the main content, a section for comments. Users can add, edit, or delete
comments.
Sidebar:
User Management
Lessons Overview
System Settings
User Management: List of users with roles, options to assign roles, delete or deactivate
users.
Lessons Overview: Analytics on lessons (number of lessons added over time, popular
categories, etc.).
Main Content:
Profile Tab: Display and allow editing of user information (name, email, password, etc.).
Settings Tab: Configuration options for notifications, privacy, and other user-specific
preferences.
Design Aesthetics:
Color Palette: Choose a modern and neutral color palette, possibly with a primary color (e.g.,
blue or green) to highlight buttons and active menu items.
Typography: Use readable and web-friendly fonts. Consider a combination like "Roboto" for
body text and "Raleway" for headers.
Icons: Use consistent iconography. Consider using a popular icon set like FontAwesome or
Material Icons.
Spacing & Alignment: Ensure consistent spacing and alignment for all elements.
3. Lessons Management:
Filter and Search: Implement dynamic filtering and searching for lessons without a page reload.
Paginations and Infinite Scrolling: Instead of loading all lessons at once, load them as users scroll
down or click on pagination links.
Modal Windows: Use modals for quick lesson views or editing to avoid taking users to a new
page for each action.
Tag management: Dynamically add or remove tags associated with a lesson using JS.
Upvotes or Likes: If you have a feature for upvoting lessons or comments, JS can update the
count instantly.
5. Admin Panel:
User Management: Use JavaScript to dynamically assign roles, activate/deactivate users, etc.,
without redirecting to different pages.
Graphs & Charts: If you're showing analytics, JS libraries like Chart.js or D3.js can render
dynamic, interactive charts.
6. General UX Enhancements:
Loading Spinners: Display spinners or progress bars during any data-fetching activity.
Confirmation Dialogs: Use JS-driven dialogs to confirm actions like lesson deletion.
Form Auto-save: Automatically save form data as users fill in, preventing data loss if they
accidentally navigate away.
Navigation Highlights: Use JS to dynamically highlight the active navigation item based on the
page being viewed.