Personal Wiki
Due Date : 6/29 @ 11:59pm
The goal of this project is the creation of personal wiki application that includes a frontend component that allows for user interactions and a backend component that allows for the managing and operations on wiki pages.
The description provided here is intentionally incomplete. This description serves as a minimal set of tasks/features to be implemented by each team. Clarifications, extensions and variations to tasks/features are to be discussed and agreed upon during each team's weekly meeting with the class staff.
Background
A wiki is an application that allows for the modification, extension and deletion of its content. A wiki's content comprises of documents written in a simplified markup language called the wiki markup. One of the most popular applications of a wiki is Wikipedia which is a free access, free content Internet encyclopedia.
The general characteristics of a wiki are
- Editing of wiki pages. The wiki application allows users to retrieve a document from the wiki (also referred to as a wiki page) and allow the user to edit the contents of the wiki. Edits on the wiki page can be anything from adding new content, altering the structure of the document etc.
-
Viewing of wiki pages. The wiki application allows users
to retrieve a wiki page and view the wiki page. Viewing
the wiki page can display the raw wiki markup text of
the page, and/or, display rendered HTML output based on
the wiki markup language's syntax definition,
e.g., a word surrounded with the character
*
renders with bold text while a word surrounded with the character_
renders in italics. - Linking and creating wiki pages. Wiki pages can link to other wiki pages as well as other web pages on the Web through hypertext links. Hypertext links are created by using wiki markup syntax called the link pattern. The link pattern syntax provided by the wiki markup language generates a hypertext link that navigates the user to the target page of the hypertext link. If the target page is an existing wiki page or a web page then that page is retrieved and rendered. If the target page points to a wiki page that does not yet exist, then an empty wiki page is created and the user is can start adding content to the newly created wiki page.
- Searching. Most wiki applications allow for wiki title page searches and some also allow for full-text search.
Personal Wiki
Wiki Markup
The personal wiki must support all of the Markdown syntax, with the following differences/limitations:
- headers: only the atx-style headers need to be supported.
- links: do not need to accommodate optional Title or reference-style links.
- images: are not supported.
- automatic links: do not need to accommodate for entity-encoding.
On top of the standard Markdown syntax the personal wiki must also support the following syntax
-
strikethrough: any text surrounded with double tilde
~~
should render the surrounded text with a line through the middle, e.g.,~~get milk~~
should render asget milk.
Minimum Set of Features
- A user should be able to create content using wiki markup and preview the content before saving/committing their changes.
- A user should be able to search for wiki title pages.
- A user should be able to navigate to a wiki page by providing the full path to the wiki page.
- A user should be able to navigate backwards or forwards in the history of visited wiki pages.
Project Deliverables
Your project submission must contain the following information
-
README.md file with the following information inside.
- Your name and email
- A list of all the material that you are submitting, for example, the link to your github repo for your source, the link in your repo for you design document.
-
Detail instructions on how to
- check out your source code
- build your source code
- run all your tests (unit and integration tests)
- generate all reports/documentation from your source code.
- Detail instruction on how to run your program.
- A list of any bugs/limitations that you know are present/valid in your code.
- A list of any extensions that you have implemented on top of the basic feature set.
Project Rubric
Category | Item | Points |
---|---|---|
Readme | Instructions: instructions are complete and correct | 10 |
Code builds: no compile time errors | 5 | |
Code Runs: build output runs and loads the application | 5 | |
Build Reports | Javadoc: no build errors | 10 |
Javadoc: no warnings | 10 | |
JUnit: No failures | 10 | |
Cobertura: 70 - 80% code coverage (line and branch)
|
10 | |
Findbugs: no red warnings | 10 | |
Usability | Create wiki page | 10 |
Update existing wiki page | 5 | |
View wikip page | 5 | |
Edit wiki page | 5 | |
Save wiki page | 10 | |
View wiki page by providing the full path/URL | 5 | |
Search wiki | 10 | |
Markdown | Strikethrough | 5 |
Paragraphs | 5 | |
Line breaks | 5 | |
Headers | 5 | |
Blockquotes | 10 | |
Lists | 10 | |
Code blocks | 5 | |
Horizontal line | 5 | |
Links | 10 | |
Emphasis | 10 | |
Code |
Javadoc: on each method
|
10 |
Javadoc: spelling errors | 5 | |
Javadoc: mismatched argument javadocs | 5 | |
Javadoc: missing exceptions | 5 | |
Google Java Codestyle | 10 | |
Duplications of code | 10 | |
Magic values | 5 | |
Proper abstractions and code reuse | 10 | |
Proper design of data definitions using Classes | 10 | |
Use of design patterns | 5 | |
Proper decomposition of methods: One task One method | 10 | |
Proper names and naming conventions | 5 | |
Enforcemnt of Abstraction Barriers | 15 | |
Grouping of classes into meaningful packages | 5 | |
Total | 310 |