Skip to content

rugved-bodke/project_reunion

Repository files navigation

Back End Assignment - REUNION

Problem Statement

  • Build APIs for a social media platform in either NodeJS or Python
  • The API should support features like getting a user profile, follow a user, upload a post, delete a post, like a post, unlike a liked post, and comment on a post
  • Design the database schema and implement in PostgreSQL or MongoDB

API Endpoints

  • GET: /api/user should authenticate the request and return the respective user profile.
    RETURN: User Name, number of followers & followings.
  • GET: api/posts/{id} would return a single post with {id} populated with its number of likes and comments
  • GET: /api/all_posts would return all posts created by authenticated user sorted by post time.
    RETURN: For each post return the following values
    1. id: ID of the post
    2. title: Title of the post
    3. desc: Description of the post
    4. created_at: Date and time when the post was created
    5. comments: Array of comments, for the particular post
    6. likes: Number of likes for the particular post
  • POST: /api/follow/{id} authenticated user would follow user with {id}
  • POST: /api/unfollow/{id} authenticated user would unfollow a user with {id}
  • POST: api/posts/ would add a new post created by the authenticated user.
    RETURN: Post-ID, Title, Description, Created Time(UTC).
    • Input: Title, Description
  • POST: /api/like/{id} would like the post with {id} by the authenticated user.
  • POST: /api/unlike/{id} would unlike the post with {id} by the authenticated user.
  • POST: /api/comment/{id} add comment for post with {id} by the authenticated user.
  • POST: /api/authenticate should perform user authentication and return a JWT token.
    RETURN: JWT token
    • INPUT: Email, Password

    NOTE: Use dummy email & password for authentication. No need to create endpoint for registering new user.`

  • DELETE: api/posts/{id} would delete post with {id} created by the authenticated user.
    Return: Comment-ID Input: Comment

Stacks

  • Backend: NodeJS (using ExpressJS or Koa) or Python (using Django). Use other helping libraries.
  • Database: PostgreSQL or MongoDB

Instructions

  • Implement the mentioned functionalities by writing your code & hosting it on Render.

  • Submit the Render hosted link for the deployed APIs and Github or Gitlab public repository link for the deployed code in the form below.

  • Provide the list of the functional testcases specific to each API endpoint with description in an Excel sheet (sample sheet) & submit it via the form below.

    💬 Sample excel file for tests Sample Test Case

    • Don’t write all the testcase but try to focus on the important testcases according to your understanding.
  • Implement the testcases using the language specific framework or library like Mocha or Chai.js for Node.

    • Commit the testcase code in the git repo & provide the commands to run the testcases.
  • Create a single docker file for running the full web app under a single docker image. Commit the docker file under the same repo & provide the link.

    • Please note docker file should take care of the database, running testcases & other dependencies installation.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published