Assignment 1: Local Markdown wiki and editor

Due date: 5 6 September, 2022

Introduction

Wikipedia is one of the most visited websites on the internet. All of us have used it, some of us have even edited it. Wikipedia is an example of a wiki, a collection of easy-to-edit pages which have links to each other. In this assignment, you are required to create a similar application which allows creating, updating, removing and viewing operations for articles.

Develop an application, in any language, which maintains a wiki as a repository of articles in Markdown format. It should provide a rendered view of the articles, and permit creation of new articles and editing and removal of existing articles.

Links in the Mardown files should be interpreted as links to other pages in the wiki. The user should get redirected to the relevant page upon clicking on the link. If the page does not exist, the user should be given the choice to create it.

For example, suppose a page named markdown has the following contents:

Markdown
========

**Markdown** is a simple way to write *formatted text*.

Its [syntax](markdown_syntax) is easy to learn.

This page would be shown to the user as

Markdown

Markdown is a simple way to write formatted text.

Its syntax is easy to learn.

and if the user clicks on the link, they should be taken to the page named markdown_syntax.

Requirements

  1. Develop a GUI based application which allows its user to navigate a wiki and view, create, remove and update pages. Pages should be saved as Markdown files (.md).
  2. User should be able to follow links to other existing articles in the wiki.
  3. Implement a Markdown renderer that can parse basic Markdown syntax and display it with the proper formatting. Your renderer should support at least the following: bold, italics, headings, links, and bulleted lists.
  4. Create a report and explain the design with flowcharts and diagrams. Include screenshots of GUI in the report. Describe the software architecture followed along with the reasons and benefits. Your marks will depend not just on the functionality of the application but also on code modularity and software architecture.
  5. Complete any 2 of the 4 additional requirements mentioned on the course webpage.

Additional requirements for groups with 3 students:

  1. There should be a way to see the list of all articles in the wiki, and selecting an article from the list should open it.
  2. The editor mode should have live preview of the Markdown text. That is, during editing, the GUI should have 2 panes, one for writing the Markdown source code and one to view the formatted result in real time.

Submission Instructions

List all of the resources you have used in the report. Students will be heavily penalised in case of any plagiarism.

The assignment submission form is on Moodle. You should submit a zip file with the name <entry_numbers_of_members_separated_by_underscores>.zip. The zip file should contain the entire code as well as the report.

Only one member should make the submission for the whole group.

Grading Policy