For now, this is going to be a document detailing the project specifications.
NEMESYS is a near-miss exposure and reporting system which allows University students and staff to report dangerous situations that might be present around the UOM campus.
Types of users: Reporters, Investigators, Administrators
Reporters can;
- Create a report
- Edit/delete their own reports
- Browse all reports
- Upvote reports
User information (italic = optional);
- Name (string)
- Email (string)
- Password (hashed value)
- Number of personal reports (int)
- Photo (default image)
- Phone
Report properties;
- Date of report (date)
- Location (double: longitude, latitude)
- Date and time when hazard was spotted (datetime)
- Hazard type (database table)
- Description
- Status (database table) - only modifyable by investigators
- Open
- No action required
- Being investigated
- Closed
- Details of person (user class)
- Number of upvotes
- Photo
Investigators can;
- Review reports
- Add an investigation entry to each report before closing the case (only one investigation per report)
- Add and edit investigations for individual reports
- Change the status of a report (an email is sent to the reporter when status has been changed)
Investigation properties;
- Description of investigation (string)
- Date of action (date)
- Investigator's details (investigator class)
Optional additional features;
- Email notifications when a new report has been submitted (received by investigators - observer pattern?)
- Watching of reports by other reporters (publisher-subscriber pattern?)
- Contact reporter (for investigations)
- Google SSO
Speculated pages needed;
- Profile page (for each user)
- Home page (page containing reports, small section of hall of fame with link to actual hall of fame - optional features are sorting by date of report/top upvoted, with tabs for opened, closed, etc reports)
- Hall of fame page based on number of reports (optionally, also based on number of upvotes)
- Login page and register page
- Report page (with ability to edit and delete for the reporter who made the report)
- Investigation page (for investigator to change information)