{"id":17665792,"url":"https://github.com/mingkang111/contact-keeper","last_synced_at":"2026-02-02T09:04:23.081Z","repository":{"id":160903524,"uuid":"263003346","full_name":"mingkang111/Contact-Keeper","owner":"mingkang111","description":"A web application for users to save their contacts. (Full Stack Development with MERN)","archived":false,"fork":false,"pushed_at":"2023-07-20T02:51:13.000Z","size":4791,"stargazers_count":0,"open_issues_count":52,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-13T08:31:02.918Z","etag":null,"topics":["expressjs","javascript","mongodb","nodejs","react-hooks","react-router","reactjs"],"latest_commit_sha":null,"homepage":"","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/mingkang111.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":"2020-05-11T09:53:57.000Z","updated_at":"2023-05-03T08:03:43.000Z","dependencies_parsed_at":"2024-12-20T16:14:51.382Z","dependency_job_id":"1ef683ba-e277-47d7-8b42-c094c143ef92","html_url":"https://github.com/mingkang111/Contact-Keeper","commit_stats":{"total_commits":5,"total_committers":2,"mean_commits":2.5,"dds":"0.19999999999999996","last_synced_commit":"1f5806d575a7b5c7de87a5e9ae05625a25b416d8"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mingkang111%2FContact-Keeper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mingkang111%2FContact-Keeper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mingkang111%2FContact-Keeper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mingkang111%2FContact-Keeper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mingkang111","download_url":"https://codeload.github.com/mingkang111/Contact-Keeper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247589836,"owners_count":20963022,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["expressjs","javascript","mongodb","nodejs","react-hooks","react-router","reactjs"],"created_at":"2024-10-23T21:07:54.203Z","updated_at":"2026-02-02T09:04:18.062Z","avatar_url":"https://github.com/mingkang111.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Contact-Keeper\nA web application for users to save their contacts. (Full Stack Development with MERN)\n\n# Demo\nview the [demo](https://gentle-bastion-16273.herokuapp.com/).\n\n# Tech stacks\nReact.JS, MongoDB, Express.js, Node.js, JWT, MERN stack, Java, JavaScript, HTML 5, CSS\n\n# Highlight\nDeveloped an interactive web page for users to add, update, create and view contacts with React.js ( with React Hooks and Context API for state management). \u003cbr\u003e\nUsed Node.js and Express.js for creating contacts and users API for the frontend to interact as well as the user authentication is based on JWT(JSON Web Token). \u003cbr\u003e\nBuilt with MongoDB to store the users' data and contacts data.\n\n# RESTful APIs\nRESTful API for contacts that uses JWT authentication. \u003cbr\u003e\nAll contact endpoints are protected and each registered user has their own contacts.\n\n## API Usage \u0026 Endpoints\n\n### Register a User [POST /api/users]\n\n- Request: Add user and request JSON web token\n\n  - Headers\n\n        Content-type: application/json\n\n  - Body\n\n            {\n              \"name\": \"\",\n              \"email\": \"\",\n              \"password\": \"\"\n            }\n\n- Response: 200 (application/json)\n\n  - Body\n\n          {\n            \"token\": \"\"\n          }\n\n### Login with a User [POST /api/auth]\n\n- Request: Login with credentials to recieve a JSON web token\n\n  - Headers\n\n        Content-type: application/json\n\n  - Body\n\n            {\n              \"email\": \"\",\n              \"password\": \"\"\n            }\n\n- Response: 200 (application/json)\n\n  - Body\n\n          {\n            \"token\": \"\"\n          }\n\n### Get Contacts [GET /api/contacts]\n\n- Request: Get all contacts of a specific user\n\n  - Headers\n\n        x-auth-token: YOURJWT\n\n* Response: 200 (application/json)\n\n  - Body\n\n          {\n            \"contacts\": []\n          }\n\n### Add New Contact [POST /api/contacts]\n\n- Request: Add a new contact\n\n  - Headers\n\n        x-auth-token: YOURJWT\n        Content-type: application/json\n\n  - Body\n\n            {\n              \"name\": \"\",\n              \"email\": \"\",\n              \"phone\": \"\",\n              \"type\": \"\" [personal or professional]\n            }\n\n- Response: 200 (application/json)\n\n  - Body\n\n          {\n            \"contact\": {}\n          }\n\n### Update Contact [PUT /api/contacts/:id]\n\n- Request: Update existing contact\n\n  - Parameters\n\n    - id: 1 (number) - An unique identifier of the contact.\n\n  - Headers\n\n        x-auth-token: YOURJWT\n        Content-type: application/json\n\n  - Body\n\n            {\n              \"name\": \"\",\n              \"email\": \"\",\n              \"phone\": \"\",\n              \"type\": \"\" [personal or professional]\n            }\n\n- Response: 200 (application/json)\n\n  - Body\n\n          {\n            \"contact\": {}\n          }\n\n### Delete Contact [DELETE /api/contacts/:id]\n\n- Request: Delete existing contact\n\n  - Parameters\n\n    - id: 1 (number) - An unique identifier of the contact.\n\n  - Headers\n\n        x-auth-token: YOURJWT\n\n* Response: 200 (application/json)\n\n  - Body\n\n          {\n            \"msg\": \"Contact removed\"\n          }\n\n\n## Usage\n### Install dependencies \u003cbr\u003e\n`\nnpm install \n`\n\u003cbr\u003e\n`\nnpm client-install\n`\n\n### Mongo connection setup\nEdit your /config/default.json file to include the correct MongoDB URI \u003cbr\u003e\n\n## Run Server\n`\nnpm run dev   \n`\n\u003cbr\u003e\n`\nnpm run server  \n`\n\u003cbr\u003e\n`\nnpm run client \n`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmingkang111%2Fcontact-keeper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmingkang111%2Fcontact-keeper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmingkang111%2Fcontact-keeper/lists"}