{"id":22941482,"url":"https://github.com/das-jishu/restful-api-for-article-manager","last_synced_at":"2026-04-18T04:34:10.425Z","repository":{"id":46201165,"uuid":"280575567","full_name":"das-jishu/RESTful-API-for-article-manager","owner":"das-jishu","description":"A RESTful API made using NodeJS (Express) and MongoDB (mongoose) to manage a platform where users (or authors) can signup and collaborate on different articles, leave reviews and organize their work. ","archived":false,"fork":false,"pushed_at":"2023-02-01T22:31:18.000Z","size":182,"stargazers_count":1,"open_issues_count":5,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-28T16:49:49.960Z","etag":null,"topics":["api","api-rest","article","article-manager","authentication","github","heroku","node","node-js","nodejs","nodemon","postman","routes"],"latest_commit_sha":null,"homepage":"https://article-manager-using-rest-api.herokuapp.com/","language":"JavaScript","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/das-jishu.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}},"created_at":"2020-07-18T03:44:01.000Z","updated_at":"2023-01-31T17:52:59.000Z","dependencies_parsed_at":"2023-02-17T11:45:55.842Z","dependency_job_id":null,"html_url":"https://github.com/das-jishu/RESTful-API-for-article-manager","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/das-jishu/RESTful-API-for-article-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/das-jishu%2FRESTful-API-for-article-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/das-jishu%2FRESTful-API-for-article-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/das-jishu%2FRESTful-API-for-article-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/das-jishu%2FRESTful-API-for-article-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/das-jishu","download_url":"https://codeload.github.com/das-jishu/RESTful-API-for-article-manager/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/das-jishu%2FRESTful-API-for-article-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31957077,"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":["api","api-rest","article","article-manager","authentication","github","heroku","node","node-js","nodejs","nodemon","postman","routes"],"created_at":"2024-12-14T13:40:14.664Z","updated_at":"2026-04-18T04:34:10.408Z","avatar_url":"https://github.com/das-jishu.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RESTful-API-for-article-manager\n\nA RESTful API made using NodeJS (Express) and MongoDB (mongoose) to manage a platform where users (or authors) can signup and collaborate on different articles, leave reviews and organize their work. \n\n[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/)\n\n------------------------------------------------------------------------------------------------------------------------------------------\n### NOTE: \n\n###### This repo contains only the backend implementation of the project. Users are free to develop their own frontend using this. Follow the Readme to know the routes and their implementation.\n\n-------------------------------------------------------------------------------------------------------------------------------------\n\n## HOW TO\n\n- Fork the repository and clone it.\n- Head over to MongoDB Atlas and create a free cluster.\n- Add a *config.env* to store all the environment variables.\n###### List of environment variables to be written:\n- DATABASE\n- DATABASE_PASSWORD\n- PORT\n- NODE_ENV\n- JWT_SECRET\n- JWT_EXPIRES_IN\n- JWT_COOKIE_EXPIRES_IN\n- EMAIL_USERNAME\n- EMAIL_PASSWORD\n- EMAIL_HOST\n- EMAIL_PORT\n\n##### NOTE: \n- I have used smtp.google.com to queue and send mails but feel free to use any other smtp you might prefer. \n- Replace the DATABASE variable with your own MongoDB link and the DATABASE_PASSWORD with your password.\n- Open the terminal and run the following command:\n```\nnode server.js\n```\n- You can also use nodemon to run the app. If you don't have nodemon installed, follow this:\n```\nnpm i nodemon\nnodemon server.js\n```\n- That's it! Now make any changes you require for your own project and handle the front-end accordingly. The routes are listed below.\n\n--------------------------------------------------------------------------------------------------------------\n\n### ROUTES:\n\n##### User Routes: /api/v1/users\n\nProtected routes can only be accessed by logged in users. To access these routes, pass a bearer authentication token along with the request.\nFor POST and PATCH, pass required parameters as JSON in request body.\n\n- POST /signup                  -- To signup a new user (name, email, password, confirmPassword).\n- POST /login                   -- To login (email, password).\n- POST /forgotPassword          -- In case an user forgets his password. A mail is sent to the user's email address (email).\n- PATCH /resetPassword/:token   -- To reset password (password, passwordConfirm).\n\n- (*protected*) PATCH /updateMyPassword -- To update password for logged in user (currentPassword, password, passwordConfirm).\n- (*protected*) GET /me                 -- To get details of current logged in user.\n- (*protected*) PATCH /updateMe         -- Update details of current logged in user (:any).\n- (*protected*) DELETE /deleteMe        -- Delete current user.\n\n- (*protected, restricted to admin*) GET /        -- Get all users.\n- (*protected, restricted to admin*) GET /:id     -- Get a specific user by id.\n- (*protected, restricted to admin*) PATCH /:id   -- Update a specific user (:any).\n- (*protected, restricted to admin*) DELETE /:id  -- Delete an user.\n\n------------------------------------------------------------------------------------------------------------------------------------\n\n##### Article Routes: /api/v1/articles\n\nProtected routes can only be accessed by logged in users. To access these routes, pass a bearer authentication token along with the request.\nFor POST and PATCH, pass required parameters as JSON in request body.\n\n- GET /top-5-rated                                      -- Get the top 5 rated articles.\n- GET /                                                 -- Get all articles.\n- GET /:id                                              -- Get a particular article by id.\n\n- (*protected*) POST /                                    -- Create a new article (body, headline, location, collaborators).\n- (*protected, restricted to admin, editor*)  PATCH /:id  -- Update a particular article by id (:any).\n- (*protected, restricted to admin*) DELETE /:id          -- Delete a particular article.\n\n--------------------------------------------------------------------------------------------------------------------------------------\n\n##### Review Routes: /api/v1/reviews\n\nProtected routes can only be accessed by logged in users. To access these routes, pass a bearer authentication token along with the request.\nFor POST and PATCH, pass required parameters as JSON in request body.\n\n- (*protected*) GET /                                   -- Get all the reviews.\n- (*protected, restricted to user*) POST /              -- Create a new review (rating, article, review).\n- (*protected*) GET /:id                                -- Get a review based on id.\n- (*protected, restricted to admin, user*) PATCH /:id   -- Update a review based on id (:any).\n- (*protected, restricted to admin, user*) DELETE /:id  -- Delete a review based on id.\n\n-----------------------------------------------------------------------------------------------------------------------------------------\n\n##### API Features: \n\n- Sorting: ?sort=field1,-field2       --  Sorts results first using field1 (ascending), then for same field1 values field2 (decreasing) is used and so on.\n- Paginate: ?limit=l\u0026page=p           --  Results are divided into pages. Each page contains l results and page number p is returned.\n- Select: ?fields=field1,field2       --  Selects only field1, field2 from the result documents.\n- Filter: ?query                      --  Filter results based on the query.\n\n---------------------------------------------------------------------------------------------------------------------------------------------\n\n#### Author: Subham Das.\n\n[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdas-jishu%2Frestful-api-for-article-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdas-jishu%2Frestful-api-for-article-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdas-jishu%2Frestful-api-for-article-manager/lists"}