Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
projects/07 Frequently Asked Questions.md
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
103 lines (66 sloc)
5.42 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Frequently Asked Questions | |
Build a knowledge-base system where users can post and answer questions. You can choose the topic. Some suggestions might include University procedures or NodeJS. | |
--- | |
## Testing | |
The system should include the data for at least 5 valid questions and each question must contain at least 3 answers containing sensible comments posted from from valid user accounts (see below). | |
You are required to create the following accounts to allow the system to be tested. All accounts should have the password `p455w0rd`: | |
1. `user1` | |
2. `user2` | |
3. `user3` | |
--- | |
## Feature 1 | |
Users don't need to be logged in to view the homepage however if they are logged inthere should be an **Add question** button or link that takes `users` to a screen where they can ask their own questions. They should supply: | |
1. A brief title | |
2. A short multi-line summary of no more than 200 characters. | |
3. A detailed, formatted, multi-line description of the question. This should support the use of _markdown_ formatting. | |
4. an optional image (screenshot or photo) that should be uploaded from their computer. | |
In addition, the following data should be captured without the user needing to enter it: | |
1. The username of the person asking the question. | |
2. The date and time when the question was posted. | |
> 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. | |
## Feature 2 | |
The home screen should display a list of the questions that `users` have asked. This should include: | |
1. The title | |
2. The short multi-line summary. | |
3. The username of the person asking the question. | |
4. The date (but not the time) when the question was posted. | |
## Feature 3 | |
If the `user` clicks on one of the titles on the homepage they should be taken to a **Details** page which includes the following features: | |
1. The title | |
2. The short multi-line summary. | |
3. The detailed, formatted, multi-line description of the question with _markdown_ formatting converted to html. | |
4. The image (screenshot or photo) if supplied. | |
5. The username of the person asking the question. | |
6. The date (but not the time) when the question was posted. | |
## Feature 4 | |
This feature requires you to make changes to the functionality and allow users to answer each others' questions: | |
1. If a user views a question posted by someone else (but not themselves) they should see a multiline text box at the bottom of the page that supports _markdown_ formatting and an **Answer question** button or link. | |
2. if they submit an answer this needs to be stored in the database together with the following information (not input by the user): | |
1. The username of the person posting the answer. | |
2. The date and time the answer was posted. | |
3. If there are answers posted by one or more users, these should appear between the question information and the text area where new answers can be posted. The answers should be posted in chronological order with the latest at the bottom and each should include: | |
1. The details of the answer (with _markdown_ converted to html). | |
2. The username of the person who posted the answer. | |
3. The date (but not the time) when the answer was posted. | |
## Feature 5 | |
1. If the user who posted a question has recieved one or more answers there should be a **Mark as correct** link or button next to each answer. If the original poster clicks on one of these, that answer is marked as correct and the links or buttons are no longer displayed. This correct answer should be clearly flagged. | |
2. Each of the questions on the homepage should be automatically flagged in one of these three categories: | |
1. unanswered (no-one has provided an answer). | |
2. answered (there is at least one answer provided). | |
3. solved (the person asking the question has flagged an answer as correct). | |
3. When a user adds a question they should be prompted to add one or more keywords (separated by spaces). The homepage should include the top 10 keywords. Clicking on one of these filters the questions to only display questions that are flagged with that keyword. | |
---- | |
## Extras | |
In some assignment briefs you are given marks for the appropriate use of media and using sensors built into the user's device. | |
### Sensors | |
In some assignment briefs you are given marks for the appropriate use of sensors and sensor data. You should be implementing: | |
1. When selecting an avatar image, the user should be given the option of using the device camera (if available). | |
2. Each question should be flagged with the location of the person posting (country and region only). | |
3. Each question should be a map showing the locations where the original question was posted from as well as where the answers were from. Clicking a pin should show their name, avatar and the first part of the message. Selecting this should display the entire message. | |
### Media | |
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: | |
1. Providing the user with the choice of uploading photos, video clips or audio clips. | |
2. Giving users the option to directly capture images, audio and video clips using the built-in camera and/or microphone if available. | |
### Data | |
There are lots of online RESTful APIs you can make use of when developing this system. You should consider: | |
1. [LocationIQ](https://locationiq.com) |