Allow new users to register securely with the application.
Acceptance Criteria:
- New users can successfully register by entering their email, password, first name, last name, and address.
- Email field undergoes proper validation with error messages for invalid entries.
- Upon successful registration, users are redirected to the login page.
- [Optional] Social Media integration: Users can choose to register using social media (Facebook, Google, etc.).
Enable registered users to securely log in and access their personalized data.
Acceptance Criteria:
- Registered users, when logged out, can access their account by entering email and password on the login page.
- Incorrect login attempts result in appropriate error messages.
- Home Page displays the app logo, user name label, and a logout button.
Provide users with a comprehensive list of recycling centers based on selected filters.
Acceptance Criteria:
- After logging in, a dedicated "Recycling Centers" section presents a table view of all recycling centers.
- Table columns include Name, Location, Material Types Accepted, and Operating Hours.
- Dropdown menu allows users to filter centers based on accepted materials.
- Real-time updates of the table based on applied material filters.
- Search bar facilitates filtering based on center names, addresses, or relevant data.
- Partial matching supported in the search.
- "Reset" button clears all filters.
- Sorting functionality available for various criteria.
- Display a message if no recycling centers are available.
Enable administrators to add new recycling centers with detailed information.
Acceptance Criteria:
- Administrators can input location details, materials-to-recycle, name, and working hours.
- Dropdowns for county, city, and materials-to-recycle offer quick-search functionality.
- Proper validations ensure data integrity.
- Validation message prompts for mandatory empty fields.
- Confirmation message appears upon successfully saving a new recycling center.
- The list of recycling centers updates after each save.
Allow users to input recycled materials and view real-time statistics.
Acceptance Criteria:
- Input form for recycled material type and amount.
- Display of the sum of contributed materials per type and their environmental impact.
- Material type and amount undergo validation.
- Real-time updates of statistics after contributing materials.
Automatically calculate and display user reward points based on recycled products.
Acceptance Criteria:
- Automatic point calculation upon login.
- Recognition and assignment of points for different recycled product types.
- Real-time updates of total reward points.
- Notifications for earned points after each recycling activity.
- Tracking of total points and notification upon reaching the voucher threshold.
- Clear user documentation on point calculation and product types.
Allow users to download a PDF voucher containing their reward points for use at partner businesses.
Acceptance Criteria:
- Clear and easily accessible option to "Download Voucher" in the user dashboard or navigation menu.
- PDF voucher generation with user details, total reward points, expiration date, and a unique voucher code.
- Redemption instructions included in the voucher.
- Downloadable in PDF format.
- [Optional] Storage of voucher history in the account's transaction history.
Provide users with a dedicated section offering educational resources on recycling, environmental benefits, and sustainable living.
Acceptance Criteria:
- Clearly visible and easily accessible "Educational Resources" section.
- Diverse content types, including articles, videos, infographics, and tips.
- [Optional] Search and filter options for specific topics or categories.
- [Optional] User engagement features such as liking, sharing, or saving content.
Implement notifications and reminders to encourage regular recycling among users. Reminders about recycling collection days or nearby events.
Enhance user engagement by incorporating gamification elements such as challenges, badges, and leaderboards, fostering friendly competition among users.