Skip to content

shinevue/finalGoal

 
 

Repository files navigation

Blog Website Project

Overall Requirements

  • There are three user roles. Admin, managers, users. And also there are guests who are not logged in.
  • Admin can manage everything – users, articles and categories.
  • Managers can only manage articles.
  • Admin, managers can do whatever user does.
  • Guest can view only few articles.
  • All users can view articles
  • There should be CRUD APIs for all.
  • /articles/home API should return articles for the categories and users they have followed, for guest users, they should return latest 5 articles. If user doesn’t have any follows, it should return latest 5 articles.
  • GET /articles API should support sort by latest, number of comments, and number of favorites, search by title.

User

  • User has a username, name, bio, profile photo. Username should be unique. It should only contain English lowercase letters, numbers, underscore.
  • Create a separate endpoint for uploading profile photo.
  • On register page, user has to provide username, name and password. Profile photo optional.
  • On profile page, user can update name, bio, profile photo.
  • In change password page, they can change their password.
  • Users can post new articles
  • Users can follow categories, or they can also follow other users.
  • User should be able to see his followers.

Categories

  • Admin can create category. Category doesn’t have a tree structure.
  • Category has only a title.

Article

  • Article has title, category, a list of tags, content
  • Users can create a new blog and publish immediately, or they can mark them as draft and publish later.

Comment

  • User can comment on an article.

Favorite

  • User can like an article.

Notification

  • When a user favorite an article, the author of the article should get a notification. The notification should look like this. “Smith liked your article – title of article”
  • When a user comment on an article, the author of the article should get notification “Smith commented on your article.”
  • When someone write comment and mention some user, the user should get notification as well. “Smith mentioned you on his comment”
  • When a user log in, he should be able to see the notifications.
  • When the user click on specific notification, it should redirect to the article page.

Delete Article, Category, User all should be done with soft delete

Contributor

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 98.8%
  • Other 1.2%