A local council wants to build a community hub to allow local residents to both raise issues and proactively help to solve them.
The system should include the data for at least 10 valid issues.
You are required to create the following accounts to allow the system to be tested. All accounts should have the password p455w0rd
:
user1
user2
council
Trying to access the homepage should redirect to the login page if the user is not logged in. The homepage should include an Add issue link or button that sends them to a screen with a form requesting the details of the issue they are reporting. It should request the following information:
- A short issue name.
- A description of the location.
- A detailed, multi-line description that support the use of markdown formatting.
- The user may choose to upload a photo and a placeholder image is used if no photo is uploaded.
In addition to the information added by the user, the following should be captured automatically and stored in the database:
- The username of the person reporting the issue.
- The current date and time.
- The current status (set to new)
To demonstrate this feature and to prove that the form works correctly you will need to show that the data is being persisted correctly, either by running a database query or an API call depending on the platform and technology you are using.
The home screen should display all the issues that have been flagged by all the users
, this should include:
- The issue name.
- The location description.
- The date the issue was raised (but not the time).
If a logged-in user
selects one of the issues on the home screen they should be taken to an Issue screen that should display:
- The issue name.
- The description of the location.
- The multi-line description with markdown formatting replaced with html.
- The photo (if supplied).
- The status of the issue.
- The username of the person raising the issue.
- The date the issue was raised (but not the time).
This feature requires you to make changes to the functionality to monitor the status of the issues:
- When an issue is created you should automatically capture the current location and store this in the database as longitude and latitude.
- The homescreen should capture the device current location and display the approximate distance to each if the issues in metres.
- if a user views someone else's issue they should see a button labelled Flag as fixed. This should set the issue status to
addressed
. - If a user views one of the issues they raised and it was flagged as
addressed
they should see a button labelled Fix confirmed. Clicking this sets the status tofixed
. - The homescreen should only display
new
issues. - The homescreen should have a button called My issues. This takes the user to a screen where only their own issues are listed. The list should contains all their issues whether fixed or not and the status should be displayed against each.
In some assignment briefs you are given marks for the appropriate use of media and using sensors built into the user's device.
In some assignment briefs you are given marks for the appropriate use of sensors and sensor data. You should be implementing:
- When an issue is added, instead of the location being added manually this should be based on the user's current location.
- When the user is prompted to upload a photo they should be given the option of using the device camera (if available).
- The home screen should display a map showing the locations of all the unresolved issues:
- Clicking on a pin should show a summary bubble showing the brief title and the person who flagged it.
- Clicking on this should send the viewer to the issues detail screen.
In the requirements listed above you need to provide the user with the ability to upload photos. For the extra media marks you will need to expand this by:
- Providing the user with the choice of uploading photos, video clips or audio clips.
- Giving users the option to directly capture images, audio and video clips using the built-in camera and/or microphone if available.
There are lots of online RESTful APIs you can make use of when developing this system. You should consider: