This project is a Feedback Management System designed to streamline the process of submitting, reviewing, and resolving feedback within an organization. The system is built using Spring Boot and provides a robust workflow for users, approvers, and administrators to manage feedback efficiently.
- Sign-Up Process:
- Users provide a valid email address and a strong password.
- The system validates the email format and password strength.
- Email Verification (Optional):
- A verification email is sent to the user.
- The user activates their account by clicking the verification link.
- Role Assignment:
- The Admin assigns roles: User, Approver(Manager and Leads), and Admin.
- The user is notified of their role via email.
- Access & Authentication:
- Users enter their email and password on the login page.
- The system validates credentials and generates a JWT (JSON Web Token).
- The token is securely stored (e.g., in local storage or cookies).
- Role-Based Redirects:
- Users are redirected to their respective dashboards:
- Users: Feedback submission & tracking.
- Approvers: Feedback review & approval.
- Admins: User management, analytics, & system oversight.
- Users are redirected to their respective dashboards:
- Navigation:
- Users access the Submit Feedback section.
- Feedback Form:
- Users provide the following details:
- Title: Brief description.
- Description: Detailed explanation.
- Category: Bug, Feature Request, or General.
- Priority: Low, Medium, or High.
- Attachments: Optional file uploads.
- The system validates input and saves feedback.
- Feedback status is set to "Submitted".
- A confirmation message is displayed.
- Users provide the following details:
- Notifications:
- An email and in-app notification are sent to the assigned Approver.
- User View:
- Users navigate to "My Feedback".
- Feedback can be filtered by:
- Category: Bug, Feature Request, General.
- Priority: Low, Medium, High.
- Status: Submitted, Under Review, Resolved, etc.
- Keywords: Search for specific terms.
- Sorting options: Submission date, priority, or status.
- Approver/Admin View:
- Access all feedback via "All Feedback".
- Advanced filters: Date range, assigned approver.
- Timeline View:
- Users click feedback items to see:
- Status Changes: Submitted, Under Review, Resolved.
- Comments: Notes from approvers/team members.
- Priority Changes: Updates to the priority level.
- Modified By: User who made the change.
- Timestamp: Date and time of the change.
- Users click feedback items to see:
- Attachments:
- Users can view or download attachments uploaded by the user.
- Notification:
- Approvers/Admins receive email and in-app notifications for new feedback.
- Review Actions:
- Request More Info:
- Adds a comment requesting clarification.
- Status remains "Pending Approval".
- The user is notified.
- Approve for Resolution:
- Assigns feedback to a team member.
- Status changes to "Under Review".
- Priority may be updated.
- The user is notified.
- Reject:
- Marks feedback as "Rejected" with a reason.
- The user is notified.
- Request More Info:
- Workflow:
- The assigned team member updates feedback progress.
- Adds comments to provide updates.
- Mark as Resolved:
- Once resolved, the team member changes the status to "Resolved".
- The system notifies the user.
- Searchable Fields:
- Title: Keywords in the title.
- Description: Keywords in the description.
- Category: Bug, Feature Request, General.
- Priority: Low, Medium, High.
- Status: Submitted, Under Review, Resolved, etc.
- Date Range: Filter by submission date.
- Sorting & Pagination:
- Results are sortable by submission date, priority, or status.
- Pagination is implemented for large datasets.
- Metrics:
- The admin views:
- Most Common Feedback Topics: Recurring issues or popular feature requests.
- Trending Requests: Most requested features over time.
- Average Resolution Time: Time taken to resolve feedback.
- Feedback Distribution: Breakdown by category, priority, and status.
- The admin views:
- Visualizations:
- Charts and graphs (e.g., bar charts, pie charts, line graphs) are used for data visualization.
- Events:
- Notifications are triggered for:
- New feedback submission.
- Feedback status changes.
- Comments added to feedback.
- Approval requests.
- Notifications are triggered for:
- Delivery Methods:
- Email Notifications: Sent via Spring Boot Mail.
- In-App Notifications: Displayed using WebSocket or AJAX polling.
- JWT-Based Login:
- Users log in using JWT-based authentication.
- Tokens are securely stored and validated.
- Role-Based Access:
- Users: Submit and track feedback.
- Approvers: Review and approve/reject feedback.
- Admins: Manage users and feedback.
- Prevent Abuse:
- API calls are rate-limited to prevent abuse.
- Secure Data:
- Sensitive data is encrypted in transit and at rest.
- Containerization:
- The application is Dockerized for easy deployment.
- Regular Updates:
- The system is regularly updated with new features and bug fixes.
- Performance Monitoring:
- Performance is monitored using tools like Prometheus and Grafana.
- User submits feedback.
- Approver reviews feedback.
- Feedback is approved/rejected.
- Resolved feedback is tracked.
- Analytics provide insights.
- Notifications keep users informed.
- Admins manage security & access control.
- Submit Feedback: Users can write feedback, categorize it (Bug, Feature Request, General), and set priority levels.
- Feedback History: Once feedback is submitted, it should show a timeline of changes (status updates, comments, and priority changes).
- Approval Workflow: Feedback should go through an approval process (assigned approvers) before being marked as resolved.
- Smart Filtering: Users can filter feedback based on category, priority, status, and even keywords.
- Analytics Dash: Show the most common feedback topics and highlight trends (like "most requested feature").
- Built with Spring Boot
-
User (
users)- Stores user details and authentication credentials.
- Roles: User, Approver, Admin.
- Relationships:
- A User can submit multiple Feedbacks.
- An Admin assigns roles to users.
-
Feedback (
feedbacks)- Captures user-submitted feedback with categories, priority, and status.
- Relationships:
- A User submits Feedback.
- An Approver reviews Feedback.
- A Team Member resolves Feedback.
-
Feedback History (
feedback_history)- Tracks feedback status changes (audit log).
- Stores timestamps and the User who made changes.
-
Comments (
feedback_comments)- Stores discussions and additional info on feedback.
- Related to
feedback_idanduser_id.
-
Attachments (
feedback_attachments)- Stores uploaded files related to feedback.
-
Notifications (
notifications)- Manages in-app and email notifications for users.
-
Roles & Permissions (
roles,user_roles)- Implements role-based access control (RBAC).
-
Analytics & Reports (
feedback_stats)- Stores aggregated feedback data for quick dashboard queries.



