For this project you will develop a web forums application similar to CSNS Forums.
A user must first register with the web application before he or she can post in the forums. For each user, the application keeps track of the user's name (e.g. John Doe), username (e.g. jdoe), password, email, and whether the user is an administrator or a forum moderator. An administrator can manage (i.e. add, edit, and delete [1]) users, forums, and posts, and a forum moderator can manage posts in a specific forum.
Each forum has a name. The application also keeps track of the creator of the forum, and when the forum was created.
A forum contains a number of topics. Any registered user can create new topics in a forum and post replies to existing topics. A topic must have a subject and content, while a reply only needs to have content. The application also keeps track the author and the timestamp of each topic and reply.
[Notes]
1. Actually deleting data from an application may be problematic. For example, if we delete a forum, what happens to all the topics in the forum and the replies to those topics? What if the deletion is by mistake and we want to recover the data? Because of these problems, in practice the delete operation is often implemented like a "hide" operation where each entity (e.g. a forum or a user) has a deleted flag. If the deleted flag is set to true, the entity is removed from display as if it's deleted. This approach is generally preferred as it's both safe and efficient.