Spend time with the people you care about. Introvert-tested. Extrovert-approved.
Friends is both a Ruby library and a command-line interface that allows you to keep track of your relationships with the people you care about.
- Friends gives you:
- More organization around staying in touch with friends and family.
- A way to track the ebbs and flows of your relationships over time.
- Suggestions for who to call or hang out with when you have free time, whether it's fifteen minutes or an entire weekend.
- A low-cost way to record and remember big moments in your life.
- Friends stores its data in a human-readable
friends.md
Markdown file. No proprietary formats here! - Friends is open-source and very open to new ideas. Contribute!
$ gem install friends
*Note that the command-line output is colored, which this README cannot show.
$ friends add friend "Grace Hopper"
Friend added: "Grace Hopper"
$ friends add activity "Got lunch with Grace and George."
Activity added: "2015-01-04: Got lunch with Grace Hopper and George Washington Carver."
friends
will automatically figure out which "Grace" and "George" you're referring to, even if you're friends with lots of different Graces and Georges.
You can of course specify a date for the activity:
$ friends add activity "2014-12-31: Celebrated the new year with Marie."
Activity added: "2014-12-31: Celebrated the new year with Marie Curie."
Or get an interactive prompt by just typing friends add activity
, with or without a date specified:
$ friends add activity 2015-11-01
2015-11-01: <type description here>
You can escape the names of friends you don't want friends
to match with a backslash:
$ friends add activity "2015-11-01: Grace and I went to \Marie's Diner. \George had to cancel at the last minute."
Activity added: "2015-11-01: Grace Hopper and I went to Marie's Diner. George had to cancel at the last minute."
$ friends suggest
Distant friend: Marie Curie
Moderate friend: Grace Hopper
Close friend: George Washington Carver
$ friends list activities
2015-01-04: Got lunch with Grace Hopper and George Washington Carver.
2014-12-31: Celebrated the new year with Marie Curie.
2014-11-15: Talked to George Washington Carver on the phone for an hour.
Or only list the activities you did with a certain friend:
$ friends list activities --with "George"
2015-01-04: Got lunch with Grace Hopper and George Washington Carver.
2014-11-15: Talked to George Washington Carver on the phone for an hour.
$ friends list favorites
Your favorite friends:
1. George Washington Carver (2 activities)
2. Grace Hopper (1)
3. Marie Curie (1)
Or get a specific number of favorites:
$ friends list favorites --limit 2
Your favorite friends:
1. George Washington Carver (2 activities)
2. Grace Hopper (1)
$ friends graph "George"
Nov 2014 |█
Dec 2014 |
Jan 2015 |█████
Feb 2015 |███
$ friends list friends
George Washington Carver
Grace Hopper
Marie Curie
$ friends update
Updated to friends 0.3
Quiet output messages:
$ friends --quiet add activity "Went rollerskating with George."
$ # No output!
Change the location/name of the friends.md
file:
$ friends --filename ./test/tmp/friends.md clean
File cleaned: "./test/tmp/friends.md"
Force cleaning of the friends.md
file, even if the command does not
normally write to the file.
$ friends --clean list friends
George Washington Carver
Grace Hopper
Marie Curie
File cleaned: "./friends.md"
Wouldn't it be nice to be able to use Friends across all of your
devices? Hooray, you can! Just put the friends.md
file in your
Dropbox/Box Sync/Google Drive/whatever folder and use the
--filename
flag. You can even set up a Bash/Zsh/whatever alias to
do this for you, like so:
alias friends="friends --filename '~/Dropbox/friends.md'"
Help menus are available for all levels of commands:
$ friends --help
$ friends list --help
$ friends list activities --help
In case you're really interested, we have documentation.
If you have an idea, make a GitHub Issue! Suggestions are very very welcome, and usually are implemented very quickly. And if you'd like to do the implementing yourself:
- Fork it (https://github.com/JacobEvelyn/friends/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am "Add some feature"
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Make sure your changes have appropriate tests (rake test
) and
conform to the Rubocop style specified. This project uses
overcommit to enforce good
code.
Friends is released under the MIT License.