{"id":13610053,"url":"https://github.com/dwyl/quotes","last_synced_at":"2026-02-24T02:01:30.945Z","repository":{"id":35161583,"uuid":"211968176","full_name":"dwyl/quotes","owner":"dwyl","description":"💬  a curated list of quotes that inspire action + code that returns quotes by tag/author/etc. 💡 ","archived":false,"fork":false,"pushed_at":"2025-10-29T06:17:22.000Z","size":831,"stargazers_count":323,"open_issues_count":21,"forks_count":81,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-11-06T08:02:51.047Z","etag":null,"topics":["elixir","json","quotes"],"latest_commit_sha":null,"homepage":"https://phoenix-content-negotiation.herokuapp.com/.json","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dwyl.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2019-09-30T22:22:45.000Z","updated_at":"2025-10-29T06:17:20.000Z","dependencies_parsed_at":"2023-02-15T03:00:53.402Z","dependency_job_id":"b0af9f78-197e-4888-9c30-aa568c5594ff","html_url":"https://github.com/dwyl/quotes","commit_stats":{"total_commits":186,"total_committers":27,"mean_commits":6.888888888888889,"dds":0.4354838709677419,"last_synced_commit":"741afbacd42c3ca94d16ab80093375b2abc0243a"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/dwyl/quotes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Fquotes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Fquotes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Fquotes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Fquotes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dwyl","download_url":"https://codeload.github.com/dwyl/quotes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Fquotes/sbom","scorecard":{"id":361742,"data":{"date":"2025-08-11","repo":{"name":"github.com/dwyl/quotes","commit":"898eecf38ec0870b6f17541525c190bee3dd0169"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dart.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/dwyl/quotes/dart.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dart.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/dwyl/quotes/dart.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dart.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/dwyl/quotes/dart.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/elixir.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/dwyl/quotes/elixir.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/elixir.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/dwyl/quotes/elixir.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/elixir.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/dwyl/quotes/elixir.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/elixir.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/dwyl/quotes/elixir.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/elixir.yml:28","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/dart.yml:1","Warn: no topLevel permission defined: .github/workflows/elixir.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-vq52-99r9-h5pw","Warn: Project is vulnerable to: GHSA-9fm9-hp7p-53mf"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T11:00:15.733Z","repository_id":35161583,"created_at":"2025-08-18T11:00:15.733Z","updated_at":"2025-08-18T11:00:15.733Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29768307,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T01:40:24.820Z","status":"online","status_checked_at":"2026-02-24T02:00:07.497Z","response_time":75,"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":["elixir","json","quotes"],"created_at":"2024-08-01T19:01:40.713Z","updated_at":"2026-02-24T02:01:30.921Z","avatar_url":"https://github.com/dwyl.png","language":"Elixir","funding_links":[],"categories":["Elixir"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# `quotes` 💬\n\n![When-you-want-something-all-the-universe](https://user-images.githubusercontent.com/194400/162908874-6d1d74cd-a4fd-4dd2-8339-4450c8b4939b.jpeg)\n\n\u003c/div\u003e\n\n### 1. A collection of inspiring quotations.\n\nThe quotes are contained\nin a _single_ file:\n[**`quotes.json`**](https://github.com/nelsonic/quotes/blob/master/quotes.json)\nso they\ncan _easily_ be used\nin _any_ project.\n\n\u003c!--\nBelow are usage examples in\nseveral languages.\n--\u003e\n\n### 2. A module that returns a quote when invoked.\n\n[![Hex pm](http://img.shields.io/hexpm/v/quotes.svg?style=flat-square)](https://hex.pm/packages/quotes)\n[![npm package version](https://img.shields.io/npm/v/quotesy.svg?style=flat-square)](https://www.npmjs.com/package/quotesy)\n[![pub package](https://img.shields.io/pub/v/quotesy.svg?style=flat-square)](https://pub.dev/packages/quotesy)\n![Elixir Build Status](https://img.shields.io/github/actions/workflow/status/dwyl/quotes/elixir.yml?label=Elixir\u0026style=flat-square)\n![Dart Build Status](https://img.shields.io/github/actions/workflow/status/dwyl/quotes/dart.yml?label=Dart\u0026style=flat-square)\n[![codecov.io](https://img.shields.io/codecov/c/github/dwyl/quotes/main.svg?style=flat-square)](http://codecov.io/github/dwyl/quotes?branch=main)\n[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat-square)](https://github.com/dwyl/quotes#contributing)\n[![HitCount](http://hits.dwyl.com/dwyl/quotes.svg)](http://hits.dwyl.com/dwyl/quotes)\n\n## Why?\n\nWe needed a reliable and _fast_ source of quotes.\nThere are _many_ ways of getting quotes\nincluding several APIs\nbut we wanted something\nthat had _zero_ latency\nand could (_optionally_) work _offline_\nso we collated a database from various sources.\n\n![gandhi-future-depends-on-what-you-do-today](https://user-images.githubusercontent.com/194400/66840284-b9399100-ef5f-11e9-80e4-6d62f872f908.jpg \"The future depends on what you do today ~ Mahatma Gandhi\")\n\n## What?\n\n1. A file containing thousands of inspiring quotes.\n2. A module for returning a random quote.\n\nThe\n[**`quotes.json`**](https://github.com/nelsonic/quotes/blob/master/quotes.json)\nfile\ncan be used in _any_ project or programming language.\n\nThe module can be used from `Elixir` and `JavaScript` (`Node.js`, `TypeScript`, etc.) \u003cbr /\u003e\n(_if you want to use it in a different language\n[**please tell us**](https://github.com/dwyl/quotes/issues/6)_)\n\n## _How_?\n\nThere are two ways you can use this project: \u003cbr\u003e\n**A.** Use the\n[**`quotes.json`**](https://github.com/nelsonic/quotes/blob/master/quotes.json)\nlist of quotes _directly_ (_for any purpose_). \u003cbr /\u003e\n**B.** Use the module to return a random quote; sample code below.\n\n\u003cbr /\u003e\n\n## `Elixir`\n\nOur original reason\nfor creating the `quotes` project\nwas to show a practical\ncode reuse example in `Elixir`. \u003cbr /\u003e\nIf you are learning `Elixir`\n(_and we think you\n[should](https://github.com/dwyl/learn-elixir/issues/102)\nbe_),\nfollow along with the \u003c!-- update link once published! --\u003e\n[code reuse tutorial](https://github.com/dwyl/learn-elixir/blob/master/code-reuse-hexpm.md)\nto see this module in action!\n\n### Install from Hex.pm\n\nThe `quotes` Elixir module is available on hex.pm:\n[hex.pm/packages/**quotes**](https://hex.pm/packages/quotes) \u003cbr /\u003e\nAdd `quotes` to your list of `deps` (dependencies) in `mix.exs`:\n\n```elixir\ndef deps do\n  [\n    {:quotes, \"~\u003e 1.0.7\"}\n  ]\nend\n```\n\nIn your terminal run the command:\n\n```sh\nmix deps.get\n```\n\nThat will download the module\ninto your project's `deps` directory.\n\n### Usage in `Elixir`\n\nTo get a random quote from the list invoke:\n\n```elixir\niex\u003e Quotes.random()\n```\n\nYou will receive a `Map`\nwith an `\"author\"` and `\"text\"` fields. e.g:\n\n```elixir\n%{\n  \"author\" =\u003e \"Peter Drucker\",\n  \"text\" =\u003e \"The best way to predict your future is to create it.\"\n}\n```\n\n_Some_ of the quotes have been augmented with a `\"source\"` and `\"tags\"`:\n\n```elixir\n%{\n  \"author\" =\u003e \"Peter Drucker\",\n  \"source\" =\u003e \"https://www.goodreads.com/quotes/784267\",\n  \"tags\" =\u003e \"time, management\",\n  \"text\" =\u003e \"Until we can manage time, we can manage nothing else.\"\n}\n```\n\n`random_by_tag` - get a _random_ quote by a _specific_ tag e.g: `Quotes.random_by_tag(\"time\")`\n\n```elixir\niex\u003e Quotes.random_by_tag(\"time\")\n%{\n  \"author\" =\u003e \"Leo Tolstoy\",\n  \"text\" =\u003e \"The two most powerful warriors are patience and time.\"\n}\n\niex\u003e Quotes.random_by_tag(\"curious\")\n%{\n  \"author\" =\u003e \"Albert Einstein\",\n  \"source\" =\u003e \"https://www.goodreads.com/quotes/11458\",\n  \"tags\" =\u003e \"talent, curious, curiosity, passion\",\n  \"text\" =\u003e \"I have no special talent. I am only passionately curious.\"\n}\n```\n\n\u003cbr /\u003e\n\n## `Dart`\n\n### Install from `Dart` packages\n\n```sh\ndart pub get quotesy\n```\n\n### `Dart` sample code\n\n- Get the whole `list` of quotes.\n\n```dart\nimport 'package:quotesy/quotesy.dart';\n\nfinal quotesArray = await Quotes.list();\n[\n  {\n  \"author\": \"Peter Drucker\",\n  \"text\": \"The best way to predict your future is to create it.\"\n  }\n]\n```\n\n- Get the list of quotes from a specific author.\n\n```dart\nimport 'package:quotesy/quotesy.dart';\n\nfinal authorQuotesArray = await Quotes.byAuthor(\"Peter Drucker\");\n[\n  {\n  \"author\": \"Peter Drucker\",\n  \"text\": \"The best way to predict your future is to create it.\"\n  }\n]\n```\n\n- Get a `random` quote.\n\n```dart\nimport 'package:quotesy/quotesy.dart';\n\nfinal randomQuote = await Quotes.random();\n{\n  \"author\": \"Zig Ziglar\",\n  \"text\": \"Positive thinking will let you do everything better than negative thinking will.\"\n}\n```\n\n- Get a `random` quote from an author.\n\n```dart\nimport 'package:quotesy/quotesy.dart';\n\nfinal randomQuote = await Quotes.singleRandomByAuthor(\"William Shakespeare\");\n{\n  \"author\": \"William Shakespeare\",\n  \"text\": \"Speak low, if you speak love.\"\n}\n```\n\n\u003cbr /\u003e\n\n## `JavaScript` / `Node.js`\n\n### Install from NPM\n\n```sh\nnpm install quotesy --save\n```\n\n### Node.js Sample Code:\n\n```js\n// Get Random Quote:\nconst quotes = require(\"quotesy\");\nquotes.random(); // expect an object of the following form:\n{\n  \"author\": \"Peter Drucker\",\n  \"text\": \"The best way to predict your future is to create it.\"\n}\n\n// get a random quote featuring a desired tag e.g: \"time\"\nquotes.random_by_tag(\"time\");\n{\n  \"author\": \"Leo Tolstoy\",\n  \"text\": \"The two most powerful warriors are patience and time.\"\n}\n```\n\nYou can always filter the `json` based on your own custom function:\n\n```js\n// Array of quotes with 12 words\nconst json = require(\"quotesy\").parse_json();\nconst buddha_quotes = json.filter(function (item) {\n  return item.text.split(\" \").length \u003c= 12;\n});\n\n// Array of quotes for author Buddha\nconst json = require(\"quotesy\").parse_json;\nconst buddha_quotes = json.filter(function (item) {\n  return item.author === \"Buddha\";\n});\n```\n\n### React.js Sample Code:\n\n```jsx\n// Get Random Quote:\nimport quotes from 'quotesy'\n\nclass RandomQuote extends Component {\n   state = {\n      quote: quotes.random()\n   }\n\n   render(){\n   const { author, text } = this.state.quote\n     return(\n       \u003cblockquote\u003e\n       \t{text}\n       \u003ccite\u003e-{author}/cite\u003e\n       \u003c/blockquote\u003e\n\n     )\n   }\n}\n\n```\n\n\u003cbr /\u003e\n\u003chr /\u003e\n\n## Need a _Different_ Programming Language ...?\n\nWant to add an example in your preferred programming language? \u003cbr /\u003e\nPlease comment on this issue:\n[quotes/issues/6](https://github.com/dwyl/quotes/issues/6)\n\n\u003chr /\u003e\n\u003cbr /\u003e\n\n## Contributing\n\nAs with all [@dwyl](https://github.com/dwyl) projects,\ncontributions are _very much_ welcome! \u003cbr /\u003e\nThere are 3 ways of contributing to the quotes project:\n\n1. Curate\n2. Add\n3. Share\n\n### 1. Curate the _Existing_ Quotes\n\nRead through the _existing_ quotes\nand check they are accurate,\ninsightful and inspires _positive action_.\nAccuracy means no misquotes or _misattributions_\n(_attributing a quote to an author when in fact they never said/wrote it_).\nInsightful means it gives us some insight that we can apply to our own lives.\nInspires _positive action_ is vital,\nwe aren't interested in quotes with a negative tone.\n\nFor example, consider the following quote which is _not_ included in our list:\n\n\u003e \"_Happiness in intelligent people is the rarest thing I know_.”\n\u003e ~ [Ernest Hemingway](https://en.wikipedia.org/wiki/Ernest_Hemingway)\n\nThis quote is certainly _interesting_\nand it may even be **`true`** in certain cases;\nsome of the most intelligent people\nin history have been utterly miserable for whatever reason.\nWhile the quote is insightful\nit's _definitely_ not _positive_\nand does not inspire any _action_.\n\n\u003c!--\nit implies that intelligence\nand happiness are\n[mutually exclusive](https://en.wikipedia.org/wiki/Mutual_exclusivity),\nwhich we _all_ know is misleading.\nIn fact there is evidence that intelligence\nif _used_ for positive ends\nleads to\n[greater well-being](https://blogs.scientificamerican.com/beautiful-minds/can-intelligence-buy-you-happiness).\nHappiness has far more to do with mindset, mindfulness and relationships\nthan traditionally quantifiable intelligence metrics.\nBut it's ridiculous to suggest that\nmost intelligent people are unhappy,\nthere simply isn't any _empirical **evidence**_.\n`#rant`\n--\u003e\n\n### _Improve_ Existing Quotes with Sources \u0026 Tags\n\nOpen the `quotes.json` file and scroll through the quotes. \u003cbr /\u003e\nIf you find a quote that you like\n(_that doesn't already have \"source\" or \"tags\")\nyou can \\_enhance_ it with a source and tags.\n\nFor example, consider the following quote\n(_before the addition of a source or tags_):\n\n```js\n{\n  \"author\": \"Albert Einstein\",\n  \"text\": \"I have no special talent. I am only passionately curious.\"\n},\n```\n\nTo find a reputable source, simply copy paste the quote\ninto your favourite search engine:\n\nhttps://duckduckgo.com/?q=I+have+no+special+talent.+I+am+only+passionately+curious\n\n![duck-duck-go-search-for-einstein-quote](https://user-images.githubusercontent.com/194400/66868307-01bf7180-ef95-11e9-93f3-4cba28512b87.png)\n\nClick the link to visit the source and confirm that it's good.\n\nhttps://www.goodreads.com/quotes/11458-i-have-no-special-talents-i-am-only-passionately-curious\n\n![goodreads-einstein-quote](https://user-images.githubusercontent.com/194400/66868413-2ca9c580-ef95-11e9-94f7-79f62e7424b2.png)\n\nWe only need the part of the URL up to the end of the digits:\nhttps://www.goodreads.com/quotes/11458 \u003cbr /\u003e\n(_the rest is added to the URL for SEO purposes\nand is not required to find the resource_)\n\nAdd the source and any relevant tags:\n\n```js\n{\n  \"author\": \"Albert Einstein\",\n  \"text\": \"I have no special talent. I am only passionately curious.\",\n  \"source\": \"https://www.goodreads.com/quotes/11458\",\n  \"tags\": \"talent, curious, curiosity, passion\"\n},\n```\n\nOpen the\n[`quotes.json`](https://github.com/dwyl/quotes/blob/master/quotes.json)\nfile in your web browser (_while logged-in to GitHub_):\n\n![github-click-pencil-icon-to-edit](https://user-images.githubusercontent.com/194400/66868718-c40f1880-ef95-11e9-9d84-979a847af875.png)\n\nClick the **pencil icon** to edit the file.\nOnce in edit mode, locate the quote by searching for it:\n\n![locate-the-quote](https://user-images.githubusercontent.com/194400/66869250-df2e5800-ef96-11e9-8235-0cd7a79d22f9.png)\n\nMake the edit to add the `\"source\"` and `\"tags\"`:\n![update-the-quote](https://user-images.githubusercontent.com/194400/66869516-83180380-ef97-11e9-82c6-59600b58b9bb.png)\n\nScroll down to the bottom of the page till you see **Commit changes** \u003cbr /\u003e\n(_or use your browser shortcut to go to the bottom e.g: the **[`End`]** key_)\n\n![add-commit-message-and-branch-name](https://user-images.githubusercontent.com/194400/66869523-8612f400-ef97-11e9-9aa4-e43815a90a1e.png)\n\nWrite a descriptive commit message and\ngive your branch and appropriate/obvious name: \u003cbr /\u003e\ne.g: `add-source-and-tags-to-einstein-quote`\n\nClick the button that says \"**Propose file change**\".\n\nYour browser will navigate to the \"**Open a pull request**\" page:\n\n![create-pull-request](https://user-images.githubusercontent.com/194400/66869856-29fc9f80-ef98-11e9-8b7e-b543de6ba68c.png)\n\nAdd a relevant description\nand click the \"**Create pull request**\" button. \u003cbr /\u003e\n\nExample: https://github.com/dwyl/quotes/pull/7\n\n![pull-request-awaiting-review](https://user-images.githubusercontent.com/194400/66870553-9e840e00-ef99-11e9-88f2-3a84ec4b2199.png)\n\nProvided your changes/improvements pass the automated checks\nand are sensible, \u003cbr /\u003e\nthey will be **approved**\nand **_merged_** by an existing member of the project:\n\n![pull-request-merged](https://user-images.githubusercontent.com/194400/66870725-fde21e00-ef99-11e9-8de1-720ab0ffdeef.png)\n\nOnce you've contributed an improvement,\nyou'll be invited to be a maintainer\nand will be able to approve other people's additions.\n\n\u003c!-- Let's add this in once we have received a few quote submissions\n### 1.b _Review_ Pull Requests for New Additions\n\nOnce you have successfully added a quote to the project,\nyou will be added as a maintainer.\nAt that point you will be able to review\nother people's additions.\n--\u003e\n\n## 2. Add Quotes!\n\nIf there is a quote\nyou find inspiring/motivating\nthat is _not_ already in the\n[**`quotes.json`**](https://github.com/nelsonic/quotes/blob/master/quotes.json)\nfile, please add it!\n\n## Guidelines for Good Quotes\n\n### Keep the length of quotes below 200 characters.\n\nAvoid adding quotes that are essays; the shorter the quote the better. \u003cbr /\u003e\nFor example:\n\n\u003e \"_Here's to the crazy ones. The misfits. The rebels.\n\u003e The troublemakers. The round pegs in the square holes.\n\u003e The ones who see things differently.\n\u003e They're not fond of rules.\n\u003e And they have no respect for the status quo.\n\u003e You can quote them, disagree with them, glorify or vilify them.\n\u003e About the only thing you can't do is ignore them.\n\u003e Because they change things.\n\u003e They push the human race forward.\n\u003e And while some may see them as the crazy ones, we see genius.\n\u003e Because the people who are crazy enough to think they can change the world,\n\u003e are the ones who do._\"\n\u003e ~ Rob Siltanen\n\nThat quote is 101 words (547 characters); it's an essay.\nIt was the **script** written by Siltanen\nfor the Apple \"Think Different\" commercial.\nWe prefer the short version (18 words | 85 characters):\n\n\u003e \"_The people who are crazy enough\n\u003e to think they can change the world\n\u003e are the ones who do._\"\n\u003e ~ [Rob Siltanen](https://www.goodreads.com/author/quotes/14907567.Rob_Siltanen)\n\nThere is definitely a place for longer quotes\ne.g: the [\"Think Different\"](https://en.wikipedia.org/wiki/Think_different)\nApple ad campaign.\n\n[![apple-think-different-advert](https://user-images.githubusercontent.com/194400/66713966-784b4c00-eda8-11e9-9dac-caa134b35eed.png)](https://www.google.com/search?q=apple+think+different+campaign\u0026tbm=vid)\n\nOur purpose with _this_ bank of quotes is to have _brief_ quotes\nthat take less than 10 seconds to read and are inspiring/motivating\nnot distracting.\n\nIn this case the addition would be:\n\n```json\n{\n  \"text\": \"The people who are crazy enough to think they can change the world are the ones who do.\",\n  \"author\": \"Rob Siltanen\",\n  \"source\": \"https://www.goodreads.com/quotes/597615\",\n  \"tags\": \"change, world, apple, think, different\"\n}\n```\n\nNote: This is also a good example of a quote that has been _misattributed_.\nGiven that Steve Jobs _read_ the script in the Apple \"Think Different\"\ncommercial, people often _misattribute_ the quote to Steve.\nA minute of research and we are better informed:\nhttps://www.forbes.com/sites/onmarketing/2011/12/14/the-real-story-behind-apples-think-different-campaign \u003cbr /\u003e\nJobs initially called the script “sh\\*t” ...\nRead the article, it's a _fascinating_ insight into the creative process!\n\n### Avoid Quotes That Don't Inspire _Action_\n\n![Karl-Pilkington-quote-glass-houses](https://user-images.githubusercontent.com/194400/66721019-511d6a80-edfa-11e9-8a0a-907aea0f0c3e.png)\n\n[Karl Pilkington](https://en.wikipedia.org/wiki/Karl_Pilkington)\nis often _hilarious_ and even insightful,\nbut this quote while amusing,\ndoes not _inspire_ any _action_ in the reader.\n\n### Film Quotes\n\nMovies can _often_ be thought provoking, insightful and positive. e.g:\n\n![do-or-do-not-yoda](https://user-images.githubusercontent.com/194400/66716967-bd34aa00-edcb-11e9-9f04-db549a770707.gif \"Do or do not, there is no try! ~ Yoda\")\n\nWhere a quote from a movie is relevant, add it like this:\n\n```json\n{\n  \"text\": \"Do. Or do not. There is no try\",\n  \"author\": \"Yoda\",\n  \"source\": \"https://www.starwars.com/news/the-starwars-com-10-best-yoda-quotes\",\n  \"tags\": \"fictional, movie, do, try, star wars\"\n},\n```\n\n## 3. Share!\n\n- Let others know about this bank of quotes\n  by \"starring\" the project on GitHub! ⭐️\n- If you have an interesting use case for quotes,\n  please share!\n\n\u003cbr /\u003e\n\n\u003c!--\n\n#### `Utils.clean()` Removes Quotes Where `author` is `null`, `unknown` or `anonymous`\n\nWe aren't interested in having quotes from anonymous authors. \u003cbr /\u003e\nAnonymous quotes might as well have been said\nby your mate Steve said at the pub;\nthey have their place, but it's not here.\n\nSo we need to _remove_ them from any bulk quote files.\nsee: `Utils.clean` in\n[/lib/utils.ex#L17](https://github.com/dwyl/quotes/blob/cff02564691b512e66a2d39701fcd0d6b19d98f3/lib/utils.ex#L17)\n\n--\u003e\n\n### Disclaimer for contributions\n\nIf you are thinking of _contributing_ to this repository (hooray! 🎉),\nplease make sure you\n[read the `Contributing` section](https://github.com/dwyl/quotes#contributing)\nof this repo.\n\nThere are many websites that already contain quotes\nand this repository is\nintended as a _subset_ of uniquely _inspiring_ quotes.\nSee [`Avoid Quotes That Don't Inspire Action`](https://github.com/dwyl/quotes#avoid-quotes-that-dont-inspire-action).\n\nAs such, **_we remind you that we will only be able to accept PRs that conform\nto the following key criteria_**:\n\n1. An issue has been opened to _propose_ the quote, including why _you_ find it\n   particularly inspiring 💡\n2. That issue has received _at least_ 2 'thumbs up' (:+1:) from people in the\n   dwyl community.\n3. Your PR refers to the issue itself and has a clear title and description. Not \"Updates Quotes\".\n\n\u003e Thank you again for your contributions to this and [other dwyl repos](https://github.com/dwyl/?q=learn),\n\u003e we very much appreciate it! ❤️\n\n\u003cbr /\u003e\n\n### Pull Request \"_Rejection_\"?\n\nAs noted above,\nthis repo focusses on quotes\nthat **_unequivocally_ inspire action**.\n\nIf a quote just makes people think,\nbut doesn't inspire action we may not merge your Pull Request ... 😞\n\nPlease don't be personally offended.\nYou're very welcome to **_fork_** the project\nand use it as the basis for your own list of quotes.\n_Many_ people have forked:\n[dwyl/quotes/network/members](https://github.com/dwyl/quotes/network/members)\nthat is the beauty of Open Source. 🌻\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwyl%2Fquotes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdwyl%2Fquotes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwyl%2Fquotes/lists"}