{"id":23846129,"url":"https://github.com/sagargajare/reunion-assignment","last_synced_at":"2026-04-18T05:34:00.823Z","repository":{"id":113601202,"uuid":"467084302","full_name":"Sagargajare/reunion-assignment","owner":"Sagargajare","description":null,"archived":false,"fork":false,"pushed_at":"2022-03-08T05:36:00.000Z","size":1769,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-12T05:36:50.616Z","etag":null,"topics":["django-rest-framework","postgresql","rest-api"],"latest_commit_sha":null,"homepage":"https://backend-assignment-reunion.herokuapp.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sagargajare.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-07T12:27:38.000Z","updated_at":"2022-11-13T05:42:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"e8b19109-2c1e-4957-8074-830d36203596","html_url":"https://github.com/Sagargajare/reunion-assignment","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Sagargajare/reunion-assignment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagargajare%2Freunion-assignment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagargajare%2Freunion-assignment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagargajare%2Freunion-assignment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagargajare%2Freunion-assignment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sagargajare","download_url":"https://codeload.github.com/Sagargajare/reunion-assignment/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagargajare%2Freunion-assignment/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31957643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django-rest-framework","postgresql","rest-api"],"created_at":"2025-01-02T20:53:19.505Z","updated_at":"2026-04-18T05:34:00.805Z","avatar_url":"https://github.com/Sagargajare.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Backend Assignment - REUNION\n\n### Problem Statement\n\nBuild 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.\n\n**Using Token**\n```\ncurl \\\n  -X POST \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"email\": \"demouser@sagargajare.in\", \"password\": \"demouser\"}' \\\n  http://localhost:8000/api/authenticate\n```\n\n```javascript\n{'access_token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjQ2NjcwOTIzLCJpYXQiOjE2NDY2NzA2MjMsImp0aSI6IjAzYzEzMGE2YmQ5ODQwN2M4MzUxNWQ5YjRlODIxNzlmIiwidXNlcl9pZCI6MX0._o2SrwPg8eXnR9ZQ77V6shx05LQOL2ShOrjg20kUKfw',\n 'refresh_token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTY0Njc1NzAyMywiaWF0IjoxNjQ2NjcwNjIzLCJqdGkiOiIwN2IxODFmNjdiMGY0ZjBlODhhMWE2NjRlMjBhMDgyNSIsInVzZXJfaWQiOjF9.vBRC48Zb-IiXXHEREiVI-9e8DS5ZT-gAH19S2uCZ0q4',\n 'user': {'email': 'demouser@sagargajare.in',\n          'followers': 0,\n          'following': 0,\n          'pk': 1,\n          'username': 'demouser'}}\n```\n\nPass Header as: Authorization: Bearer \u003caccess_token\u003e\n\nGenerating Access Token\n\n\u003cbr\u003e\n**API Endpoints**\n\n- POST /api/authenticate should perform user authentication and return a JWT token.\n    - INPUT: Email, Password\n    - RETURN: JWT token\n    \n    \u003caside\u003e\n    ➡️ **NOTE:** Use dummy email \u0026 password for authentication. No need to create endpoint for registering new user.\n    \n    \u003c/aside\u003e\n    \n- POST /api/follow authenticated user would follow user with {id}\n```javascript\n{\n    \"follower_id\": user_id,\n}\n```\n\n\nuser_id: id of the user to be followed\n\n- DELETE /api/follow/{id} authenticated user would unfollow a user with {id}\n- GET /api/user should authenticate the request and return the respective user profile.\n    - RETURN: User Name, number of followers \u0026 followings.\n- POST api/posts/ would add a new post created by the authenticated user.\n    - Input: Title, Description\n    - RETURN: Post-ID, Title, Description, Created Time(UTC).\n- DELETE api/posts/{id} would delete post with {id} created by the authenticated user.\n- POST /api/like/{id} would like the post with {id} by the authenticated user.\n```javascript\n{\n    \"post_id\": post_id,\n}\n```\npost_id: id of the post to be liked\n- DELETE /api/like/{id} would unlike the post with {id} by the authenticated user.\n- POST /api/comment/{id} add comment for post with {id} by the authenticated user.\n    - Input: Comment\n    - Return: Comment-ID\n```javascript\n{\n    \"post_id\": post_id,\n    \"input\": input\n}\n```\npost_id: id of the post to be commented\ninput: comment to be added\n\n- GET api/posts/{id} would return a single post with {id} populated with its number of likes and comments\n- GET /api/all_posts would return all posts created by authenticated user sorted by post time.\n    - RETURN: For each post return the following values\n        - id: ID of the post\n        - title: Title of the post\n        - desc: Description of the post\n        - created_at: Date and time when the post was created\n        - comments: Array of comments, for the particular post\n        - likes: Number of likes for the particular post\n\n### **Stacks**\n\n- Backend: NodeJS (using ExpressJS or Koa) or Python (using Django). Use other helping libraries.\n- Database: PostgreSQL or MongoDB\n\n### Submission Details\n\n- Implement the mentioned functionalities by writing your code \u0026 hosting it on Heroku\n- Submit the Heroku hosted link for the deployed APIs and Github or Gitlab public repository link for the deployed code in the form below","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagargajare%2Freunion-assignment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsagargajare%2Freunion-assignment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagargajare%2Freunion-assignment/lists"}