The Next Thing
This project is open for discussion and negotiation.
Use Flask to create a small discussion/
(very) mini social media site with the following features:
- Each user has a page on which to make postings.
- These pages can be viewed by any other user unless blocked by the
owner.
- Users may add comments to other user's pages, but only when given
explicit permission.
- A user's page displays postings and comments in chronological order,
identifying each as a posting, or a comment and and
identifying the commenter.
- 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.
- 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.
- The account page shows the user's own postings and comments, and has
controls to
- Add a post. Either a posting page that returns
here when done, or an entry form displayed atop
the account page.
- Go to the all-users page.
- The all-users page has a simple control to
return to the accounts page, and a list all other users, each with a controls
- To block (or unblock) the other user from viewing your page.
- To allow (or disallow) the other user from commenting on your page.
(If a user cannot view a page, the user cannot comment either.)
- 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.
- 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.
- 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.