{"id":20551722,"url":"https://github.com/clarketm/blog-api-node","last_synced_at":"2026-04-21T13:33:45.312Z","repository":{"id":86955178,"uuid":"89426488","full_name":"clarketm/blog-api-node","owner":"clarketm","description":"Blog API - Node","archived":false,"fork":false,"pushed_at":"2017-06-09T01:26:38.000Z","size":10,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-06T05:47:33.553Z","etag":null,"topics":["api","blog","blogger","loopback","microservice","node","nodejs"],"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/clarketm.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":"2017-04-26T02:03:31.000Z","updated_at":"2018-12-13T07:15:12.000Z","dependencies_parsed_at":"2023-05-29T23:30:26.287Z","dependency_job_id":null,"html_url":"https://github.com/clarketm/blog-api-node","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/clarketm/blog-api-node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clarketm%2Fblog-api-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clarketm%2Fblog-api-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clarketm%2Fblog-api-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clarketm%2Fblog-api-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clarketm","download_url":"https://codeload.github.com/clarketm/blog-api-node/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clarketm%2Fblog-api-node/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32094583,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T11:25:29.218Z","status":"ssl_error","status_checked_at":"2026-04-21T11:25:28.499Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","blog","blogger","loopback","microservice","node","nodejs"],"created_at":"2024-11-16T02:33:15.233Z","updated_at":"2026-04-21T13:33:45.289Z","avatar_url":"https://github.com/clarketm.png","language":"JavaScript","readme":"# Blog API - Node\n**Live Demo** coming soon!\n\n## Installation\n```bash\n$ npm install\n```\n\n## Configuration\n```js\n/* config.json */\n{\n  \"restApiRoot\": \"/v1\",   // api root\n  \"host\": \"0.0.0.0\",      // host\n  \"port\": 3000,           // port\n  ...\n}\n```\n```js\n/* datasources.json */\n{\n  ///////////////////////////////////////\n  // in-memory database (testing ONLY) //\n  ///////////////////////////////////////\n  \"db\": {\n    \"name\": \"db\",\n    \"connector\": \"memory\"\n  },\n  /////////////////////////////////////////\n  // transient database (embeded models) //\n  /////////////////////////////////////////\n  \"transient\": {\n    \"name\": \"transient\",\n    \"connector\": \"transient\"\n  },\n  ////////////////////////////////////\n  // MongoDB database ////////////////\n  ////////////////////////////////////\n  // [1] install and run mongodb /////\n  ////////////////////////////////////\n  \"mongodb\": {\n    \"host\": \"127.0.0.1\",\n    \"port\": 27017,\n    \"database\": \"blog\",\n    \"name\": \"mongodb\",\n    \"connector\": \"mongodb\"\n  },\n  /////////////////////////////////////////\n  // Redis KV database (analytics cache) //\n  /////////////////////////////////////////\n  // [1] install and run redis ////////////\n  /////////////////////////////////////////\n  \"redis\": {\n    \"host\": \"127.0.0.1\",\n    \"port\": 6379,\n    \"name\": \"redis\",\n    \"db\": 0,\n    \"connector\": \"kv-redis\"\n  }\n}\n```\n\n## Running\n```bash\n$ npm start\n\nWeb server listening at: http://0.0.0.0:3000\nBrowse your REST API at http://0.0.0.0:3000/explorer\n```\n\n## Persisted Models\n### Blog\n|  Property   |  Type  | Required | Default |\n|-------------|--------|----------|---------|\n|  kind       | string |   false  |blog#blog|\n|  name       | string |   false  |         |   \n|  description| string |   false  |         | \n|  published  | date   |   false  |         | \n|  updated    | date   |   false  |         | \n|  url        | string |   false  |         | \n\n##### Embeded Transient Models\n* **Locale**\n\n|  Property   |  Type  | Required | Default |\n|-------------|--------|----------|---------|\n|  language   | string |   false  |         |\n|  country    | string |   false  |         |   \n\n### Post\n|  Property   |  Type  | Required | Default |\n|-------------|--------|----------|---------|\n|  kind       | string |   false  |blog#post|\n|  title      | string |   false  |         |   \n|  content    | object |   false  |         |   \n|  published  | date   |   false  |         | \n|  updated    | date   |   false  |         | \n|  url        | string |   false  |         | \n\n### Comment\n|  Property   |  Type  | Required | Default |\n|-------------|--------|----------|---------|\n|  kind       | string |   false  |blog#comment|\n|  content    | object |   false  |         |   \n|  published  | date   |   false  |         | \n|  updated    | date   |   false  |         | \n\n### Author\n|  Property   |  Type  | Required | Default |\n|-------------|--------|----------|---------|\n| displayName | string |   false  |         |\n|  url        | string |   false  |         | \n\n##### Embeded Models\n* **Image** as profileImage\n\n|  Property   |  Type  | Required | Default |\n|-------------|--------|----------|---------|\n|  url        | string |   false  |         | \n\n### Reader\n|  Property   |  Type  | Required | Default |\n|-------------|--------|----------|---------|\n| displayName | string |   false  |         |\n|  url        | string |   false  |         | \n\n##### Embeded Transient Models\n* **Image** as profileImage\n\n|  Property   |  Type  | Required | Default |\n|-------------|--------|----------|---------|\n|  url        | string |   false  |         | \n\n\n## KeyValue Models\n* Analytics\n\n## Operations\nWIP\n\n## Usage\nWIP\n\n## :star: Credits\nSpecial thanks the the following: \n* [Loopback](https://loopback.io/) - StrongLoop\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclarketm%2Fblog-api-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclarketm%2Fblog-api-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclarketm%2Fblog-api-node/lists"}