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

Personal Wiki

Wiki Markup

The personal wiki must support all of the Markdown syntax, with the following differences/limitations:

On top of the standard Markdown syntax the personal wiki must also support the following syntax

Minimum Set of Features

Project Deliverables

Your project submission must contain the following information

  1. README.md file with the following information inside.
    1. Your name and email
    2. 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.
    3. Detail instructions on how to
      1. check out your source code
      2. build your source code
      3. run all your tests (unit and integration tests)
      4. generate all reports/documentation from your source code.
    4. Detail instruction on how to run your program.
    5. A list of any bugs/limitations that you know are present/valid in your code.
    6. 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)
  • excluding UI classes
  • excluding standard setters and getters
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
  • exclude simple getters and setters
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