CSc 445 Assignment 5

The Next Thing

Assigned
Due

Nov 11
100 pts
Dec 5

This project is open for discussion and negotiation.

Use Flask to create a small discussion/ (very) mini social media site with the following features:
  1. Each user has a page on which to make postings.
  2. These pages can be viewed by any other user unless blocked by the owner.
  3. Users may add comments to other user's pages, but only when given explicit permission.
  4. A user's page displays postings and comments in chronological order, identifying each as a posting, or a comment and and identifying the commenter.
  5. The app starts with a login page that accepts an account and password, and also a link to a registration page. A failed login returns to the login page, with an error message. Successful goes to the account page.
  6. The registration page allows anyone to create an account, providing a human name, and choosing an account name and password. Upon successful registration, go to the login page.
  7. The account page shows the user's own postings and comments, and has controls to
    1. Add a post. Either a posting page that returns here when done, or an entry form displayed atop the account page.
    2. Go to the all-users page.
  8. The all-users page has a simple control to return to the accounts page, and a list all other users, each with a controls
    1. To block (or unblock) the other user from viewing your page.
    2. To allow (or disallow) the other user from commenting on your page. (If a user cannot view a page, the user cannot comment either.)
    3. To display the other user's postings and comments, if you are allowed. This takes you to the other-user page.
    Initially, each other user has permission to view and no permission to comment.
  9. The other-user user page shows that user's postings and comments, with a control for adding comments, if permitted. It also has a link back to the account page.
  10. All pages except registration and login should have a logout control, which does that and returns to the log in page.

The content of posts and comments will be entered by the user, and must be sanitized before display. It is sufficient to simply forbid any sort of markup (just use textContent), but it would be nice to find a notation allowing some basic things like italic. Any maybe arbitrary Unicode characters so folks can use emojis, since that is so important.