Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dwyl/quotes
💬 a curated list of quotes that inspire action + code that returns quotes by tag/author/etc. 💡
https://github.com/dwyl/quotes
elixir json quotes
Last synced: about 2 months ago
JSON representation
💬 a curated list of quotes that inspire action + code that returns quotes by tag/author/etc. 💡
- Host: GitHub
- URL: https://github.com/dwyl/quotes
- Owner: dwyl
- License: gpl-2.0
- Created: 2019-09-30T22:22:45.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2024-07-30T06:11:49.000Z (5 months ago)
- Last Synced: 2024-10-02T06:43:44.235Z (3 months ago)
- Topics: elixir, json, quotes
- Language: Elixir
- Homepage: https://phoenix-content-negotiation.herokuapp.com/.json
- Size: 347 KB
- Stars: 161
- Watchers: 8
- Forks: 64
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# `quotes` 💬
![When-you-want-something-all-the-universe](https://user-images.githubusercontent.com/194400/162908874-6d1d74cd-a4fd-4dd2-8339-4450c8b4939b.jpeg)
### 1. A collection of inspiring quotations.
The quotes are contained
in a _single_ file:
[**`quotes.json`**](https://github.com/nelsonic/quotes/blob/master/quotes.json)
so they
can _easily_ be used
in _any_ project.### 2. A module that returns a quote when invoked.
[![Hex pm](http://img.shields.io/hexpm/v/quotes.svg?style=flat-square)](https://hex.pm/packages/quotes)
[![npm package version](https://img.shields.io/npm/v/quotesy.svg?style=flat-square)](https://www.npmjs.com/package/quotesy)
[![pub package](https://img.shields.io/pub/v/quotesy.svg?style=flat-square)](https://pub.dev/packages/quotesy)
![Elixir Build Status](https://img.shields.io/github/actions/workflow/status/dwyl/quotes/elixir.yml?label=Elixir&style=flat-square)
![Dart Build Status](https://img.shields.io/github/actions/workflow/status/dwyl/quotes/dart.yml?label=Dart&style=flat-square)
[![codecov.io](https://img.shields.io/codecov/c/github/dwyl/quotes/main.svg?style=flat-square)](http://codecov.io/github/dwyl/quotes?branch=main)
[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat-square)](https://github.com/dwyl/quotes#contributing)
[![HitCount](http://hits.dwyl.com/dwyl/quotes.svg)](http://hits.dwyl.com/dwyl/quotes)## Why?
We needed a reliable and _fast_ source of quotes.
There are _many_ ways of getting quotes
including several APIs
but we wanted something
that had _zero_ latency
and could (_optionally_) work _offline_
so we collated a database from various sources.![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")
## What?
1. A file containing thousands of inspiring quotes.
2. A module for returning a random quote.The
[**`quotes.json`**](https://github.com/nelsonic/quotes/blob/master/quotes.json)
file
can be used in _any_ project or programming language.The module can be used from `Elixir` and `JavaScript` (`Node.js`, `TypeScript`, etc.)
(_if you want to use it in a different language
[**please tell us**](https://github.com/dwyl/quotes/issues/6)_)## _How_?
There are two ways you can use this project:
**A.** Use the
[**`quotes.json`**](https://github.com/nelsonic/quotes/blob/master/quotes.json)
list of quotes _directly_ (_for any purpose_).
**B.** Use the module to return a random quote; sample code below.
## `Elixir`
Our original reason
for creating the `quotes` project
was to show a practical
code reuse example in `Elixir`.
If you are learning `Elixir`
(_and we think you
[should](https://github.com/dwyl/learn-elixir/issues/102)
be_),
follow along with the
[code reuse tutorial](https://github.com/dwyl/learn-elixir/blob/master/code-reuse-hexpm.md)
to see this module in action!### Install from Hex.pm
The `quotes` Elixir module is available on hex.pm:
[hex.pm/packages/**quotes**](https://hex.pm/packages/quotes)
Add `quotes` to your list of `deps` (dependencies) in `mix.exs`:```elixir
def deps do
[
{:quotes, "~> 1.0.7"}
]
end
```In your terminal run the command:
```sh
mix deps.get
```That will download the module
into your project's `deps` directory.### Usage in `Elixir`
To get a random quote from the list invoke:
```elixir
iex> Quotes.random()
```You will receive a `Map`
with an `"author"` and `"text"` fields. e.g:```elixir
%{
"author" => "Peter Drucker",
"text" => "The best way to predict your future is to create it."
}
```_Some_ of the quotes have been augmented with a `"source"` and `"tags"`:
```elixir
%{
"author" => "Peter Drucker",
"source" => "https://www.goodreads.com/quotes/784267",
"tags" => "time, management",
"text" => "Until we can manage time, we can manage nothing else."
}
````random_by_tag` - get a _random_ quote by a _specific_ tag e.g: `Quotes.random_by_tag("time")`
```elixir
iex> Quotes.random_by_tag("time")
%{
"author" => "Leo Tolstoy",
"text" => "The two most powerful warriors are patience and time."
}iex> Quotes.random_by_tag("curious")
%{
"author" => "Albert Einstein",
"source" => "https://www.goodreads.com/quotes/11458",
"tags" => "talent, curious, curiosity, passion",
"text" => "I have no special talent. I am only passionately curious."
}
```
## `Dart`
### Install from `Dart` packages
```sh
dart pub get quotesy
```### `Dart` sample code
- Get the whole `list` of quotes.
```dart
import 'package:quotesy/quotesy.dart';final quotesArray = await Quotes.list();
[
{
"author": "Peter Drucker",
"text": "The best way to predict your future is to create it."
}
]
```- Get the list of quotes from a specific author.
```dart
import 'package:quotesy/quotesy.dart';final authorQuotesArray = await Quotes.byAuthor("Peter Drucker");
[
{
"author": "Peter Drucker",
"text": "The best way to predict your future is to create it."
}
]
```- Get a `random` quote.
```dart
import 'package:quotesy/quotesy.dart';final randomQuote = await Quotes.random();
{
"author": "Zig Ziglar",
"text": "Positive thinking will let you do everything better than negative thinking will."
}
```- Get a `random` quote from an author.
```dart
import 'package:quotesy/quotesy.dart';final randomQuote = await Quotes.singleRandomByAuthor("William Shakespeare");
{
"author": "William Shakespeare",
"text": "Speak low, if you speak love."
}
```
## `JavaScript` / `Node.js`
### Install from NPM
```sh
npm install quotesy --save
```### Node.js Sample Code:
```js
// Get Random Quote:
const quotes = require("quotesy");
quotes.random(); // expect an object of the following form:
{
"author": "Peter Drucker",
"text": "The best way to predict your future is to create it."
}// get a random quote featuring a desired tag e.g: "time"
quotes.random_by_tag("time");
{
"author": "Leo Tolstoy",
"text": "The two most powerful warriors are patience and time."
}
```You can always filter the `json` based on your own custom function:
```js
// Array of quotes with 12 words
const json = require("quotesy").parse_json();
const buddha_quotes = json.filter(function (item) {
return item.text.split(" ").length <= 12;
});// Array of quotes for author Buddha
const json = require("quotesy").parse_json;
const buddha_quotes = json.filter(function (item) {
return item.author === "Buddha";
});
```### React.js Sample Code:
```jsx
// Get Random Quote:
import quotes from 'quotesy'class RandomQuote extends Component {
state = {
quote: quotes.random()
}render(){
const { author, text } = this.state.quote
return(
{text}
-{author}/cite>
)
}
}```
## Need a _Different_ Programming Language ...?
Want to add an example in your preferred programming language?
Please comment on this issue:
[quotes/issues/6](https://github.com/dwyl/quotes/issues/6)
## Contributing
As with all [@dwyl](https://github.com/dwyl) projects,
contributions are _very much_ welcome!
There are 3 ways of contributing to the quotes project:1. Curate
2. Add
3. Share### 1. Curate the _Existing_ Quotes
Read through the _existing_ quotes
and check they are accurate,
insightful and inspires _positive action_.
Accuracy means no misquotes or _misattributions_
(_attributing a quote to an author when in fact they never said/wrote it_).
Insightful means it gives us some insight that we can apply to our own lives.
Inspires _positive action_ is vital,
we aren't interested in quotes with a negative tone.For example, consider the following quote which is _not_ included in our list:
> "_Happiness in intelligent people is the rarest thing I know_.”
> ~ [Ernest Hemingway](https://en.wikipedia.org/wiki/Ernest_Hemingway)This quote is certainly _interesting_
and it may even be **`true`** in certain cases;
some of the most intelligent people
in history have been utterly miserable for whatever reason.
While the quote is insightful
it's _definitely_ not _positive_
and does not inspire any _action_.### _Improve_ Existing Quotes with Sources & Tags
Open the `quotes.json` file and scroll through the quotes.
If you find a quote that you like
(_that doesn't already have "source" or "tags")
you can \_enhance_ it with a source and tags.For example, consider the following quote
(_before the addition of a source or tags_):```js
{
"author": "Albert Einstein",
"text": "I have no special talent. I am only passionately curious."
},
```To find a reputable source, simply copy paste the quote
into your favourite search engine:https://duckduckgo.com/?q=I+have+no+special+talent.+I+am+only+passionately+curious
![duck-duck-go-search-for-einstein-quote](https://user-images.githubusercontent.com/194400/66868307-01bf7180-ef95-11e9-93f3-4cba28512b87.png)
Click the link to visit the source and confirm that it's good.
https://www.goodreads.com/quotes/11458-i-have-no-special-talents-i-am-only-passionately-curious
![goodreads-einstein-quote](https://user-images.githubusercontent.com/194400/66868413-2ca9c580-ef95-11e9-94f7-79f62e7424b2.png)
We only need the part of the URL up to the end of the digits:
https://www.goodreads.com/quotes/11458
(_the rest is added to the URL for SEO purposes
and is not required to find the resource_)Add the source and any relevant tags:
```js
{
"author": "Albert Einstein",
"text": "I have no special talent. I am only passionately curious.",
"source": "https://www.goodreads.com/quotes/11458",
"tags": "talent, curious, curiosity, passion"
},
```Open the
[`quotes.json`](https://github.com/dwyl/quotes/blob/master/quotes.json)
file in your web browser (_while logged-in to GitHub_):![github-click-pencil-icon-to-edit](https://user-images.githubusercontent.com/194400/66868718-c40f1880-ef95-11e9-9d84-979a847af875.png)
Click the **pencil icon** to edit the file.
Once in edit mode, locate the quote by searching for it:![locate-the-quote](https://user-images.githubusercontent.com/194400/66869250-df2e5800-ef96-11e9-8235-0cd7a79d22f9.png)
Make the edit to add the `"source"` and `"tags"`:
![update-the-quote](https://user-images.githubusercontent.com/194400/66869516-83180380-ef97-11e9-82c6-59600b58b9bb.png)Scroll down to the bottom of the page till you see **Commit changes**
(_or use your browser shortcut to go to the bottom e.g: the **[`End`]** key_)![add-commit-message-and-branch-name](https://user-images.githubusercontent.com/194400/66869523-8612f400-ef97-11e9-9aa4-e43815a90a1e.png)
Write a descriptive commit message and
give your branch and appropriate/obvious name:
e.g: `add-source-and-tags-to-einstein-quote`Click the button that says "**Propose file change**".
Your browser will navigate to the "**Open a pull request**" page:
![create-pull-request](https://user-images.githubusercontent.com/194400/66869856-29fc9f80-ef98-11e9-8b7e-b543de6ba68c.png)
Add a relevant description
and click the "**Create pull request**" button.Example: https://github.com/dwyl/quotes/pull/7
![pull-request-awaiting-review](https://user-images.githubusercontent.com/194400/66870553-9e840e00-ef99-11e9-88f2-3a84ec4b2199.png)
Provided your changes/improvements pass the automated checks
and are sensible,
they will be **approved**
and **_merged_** by an existing member of the project:![pull-request-merged](https://user-images.githubusercontent.com/194400/66870725-fde21e00-ef99-11e9-8de1-720ab0ffdeef.png)
Once you've contributed an improvement,
you'll be invited to be a maintainer
and will be able to approve other people's additions.## 2. Add Quotes!
If there is a quote
you find inspiring/motivating
that is _not_ already in the
[**`quotes.json`**](https://github.com/nelsonic/quotes/blob/master/quotes.json)
file, please add it!## Guidelines for Good Quotes
### Keep the length of quotes below 200 characters.
Avoid adding quotes that are essays; the shorter the quote the better.
For example:> "_Here's to the crazy ones. The misfits. The rebels.
> The troublemakers. The round pegs in the square holes.
> The ones who see things differently.
> They're not fond of rules.
> And they have no respect for the status quo.
> You can quote them, disagree with them, glorify or vilify them.
> About the only thing you can't do is ignore them.
> Because they change things.
> They push the human race forward.
> And while some may see them as the crazy ones, we see genius.
> Because the people who are crazy enough to think they can change the world,
> are the ones who do._"
> ~ Rob SiltanenThat quote is 101 words (547 characters); it's an essay.
It was the **script** written by Siltanen
for the Apple "Think Different" commercial.
We prefer the short version (18 words | 85 characters):> "_The people who are crazy enough
> to think they can change the world
> are the ones who do._"
> ~ [Rob Siltanen](https://www.goodreads.com/author/quotes/14907567.Rob_Siltanen)There is definitely a place for longer quotes
e.g: the ["Think Different"](https://en.wikipedia.org/wiki/Think_different)
Apple ad campaign.[![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&tbm=vid)
Our purpose with _this_ bank of quotes is to have _brief_ quotes
that take less than 10 seconds to read and are inspiring/motivating
not distracting.In this case the addition would be:
```json
{
"text": "The people who are crazy enough to think they can change the world are the ones who do.",
"author": "Rob Siltanen",
"source": "https://www.goodreads.com/quotes/597615",
"tags": "change, world, apple, think, different"
}
```Note: This is also a good example of a quote that has been _misattributed_.
Given that Steve Jobs _read_ the script in the Apple "Think Different"
commercial, people often _misattribute_ the quote to Steve.
A minute of research and we are better informed:
https://www.forbes.com/sites/onmarketing/2011/12/14/the-real-story-behind-apples-think-different-campaign
Jobs initially called the script “sh\*t” ...
Read the article, it's a _fascinating_ insight into the creative process!### Avoid Quotes That Don't Inspire _Action_
![Karl-Pilkington-quote-glass-houses](https://user-images.githubusercontent.com/194400/66721019-511d6a80-edfa-11e9-8a0a-907aea0f0c3e.png)
[Karl Pilkington](https://en.wikipedia.org/wiki/Karl_Pilkington)
is often _hilarious_ and even insightful,
but this quote while amusing,
does not _inspire_ any _action_ in the reader.### Film Quotes
Movies can _often_ be thought provoking, insightful and positive. e.g:
![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")
Where a quote from a movie is relevant, add it like this:
```json
{
"text": "Do. Or do not. There is no try",
"author": "Yoda",
"source": "https://www.starwars.com/news/the-starwars-com-10-best-yoda-quotes",
"tags": "fictional, movie, do, try, star wars"
},
```## 3. Share!
- Let others know about this bank of quotes
by "starring" the project on GitHub! ⭐️
- If you have an interesting use case for quotes,
please share!
### Disclaimer for contributions
If you are thinking of _contributing_ to this repository (hooray! 🎉),
please make sure you
[read the `Contributing` section](https://github.com/dwyl/quotes#contributing)
of this repo.There are many websites that already contain quotes
and this repository is
intended as a _subset_ of uniquely _inspiring_ quotes.
See [`Avoid Quotes That Don't Inspire Action`](https://github.com/dwyl/quotes#avoid-quotes-that-dont-inspire-action).As such, **_we remind you that we will only be able to accept PRs that conform
to the following key criteria_**:1. An issue has been opened to _propose_ the quote, including why _you_ find it
particularly inspiring 💡
2. That issue has received _at least_ 2 'thumbs up' (:+1:) from people in the
dwyl community.
3. Your PR refers to the issue itself and has a clear title and description. Not "Updates Quotes".> Thank you again for your contributions to this and [other dwyl repos](https://github.com/dwyl/?q=learn),
> we very much appreciate it! ❤️
### Pull Request "_Rejection_"?
As noted above,
this repo focusses on quotes
that **_unequivocally_ inspire action**.If a quote just makes people think,
but doesn't inspire action we may not merge your Pull Request ... 😞Please don't be personally offended.
You're very welcome to **_fork_** the project
and use it as the basis for your own list of quotes.
_Many_ people have forked:
[dwyl/quotes/network/members](https://github.com/dwyl/quotes/network/members)
that is the beauty of Open Source. 🌻