bateman is an extension of npm cards, which allows you to remotely fetch a card.json
file and display it prettily as a npm card.
To use bateman with npx
. The <url>
must be a website HTTPS which has a file located at the path <url>/card.json
.
npx bateman <url>
To install bateman globally, you can use the following command:
npm i -g bateman
Once installed globally, then you can use bateman to call a URL that has published a card.json
. This URL must be HTTPS.
bateman <url>
bateman expects a card.json
file. If you want to have your own card, you'll have to publish such a file on a website. Note that bateman is not particularly strict about where cards are published, but it is opinionated on how they are published. Some details:
- Cards must be published to websites that use HTTPS.
- Card files must be called
card.json
. - The fetched
card.json
file must return a 200 OK HTTP response.- tl;dr you can't mask your
card.json
with an HTTP redirect.
- tl;dr you can't mask your
Here's the structure of a card.json
file:
name
String (required) - Your namehandle
String (required) - Your preferred online handlewebsite
String (required) - Your websitepronouns
String (required) - Your pronounswork
Object (optional) - An object that holds some metadata about your worktitle
String (optional) - Your title at your workcompany
String (optional) - The company you work at
code
Object (optional) - Some links that specifically refer to code-focused websitesnpm
String (optional) - Link to your account on npmgithub
String (optional) - Link to your account on GitHub
social
Object (optional) - Links to your social Mediatwitter
String (optional) - Link to your Twitter accountinstagram
String (optional) - Link to your Instagram accountsnapchat
String (optional) - Link to your Snapchat accountfacebook
String (optional) - Link to your Facebook accounttwitch
String (optional) - Link to your Twitch accounttiktok
String (optional) - Link to your TikTok accounttumblr
String (optional) - Link to your Tumblr accountspotify
String (optional) - Link to your Sptofiy accountyoutube
String (optional) - Link to your YouTube accountvimeo
String (optional) - Link to your Vimeo accountlinkedin
String (optional) - Link to your LinkedIn account
proofs
Object (optional) - Things that prove you're youkeybase
String (optional) - Link to your Keybase account
support
Object (optional)patreon
String (option) - Link to your PatreongithubSponsors
String (option) - Link to your GitHub Sponsors pageopenCollective
String (option) - Link to an Open Collective
Here's a minimal example using only required properties:
{
"name": "Yours Truly",
"handle": "yt",
"website": "https://yt.blog",
"pronouns": "she/her"
}
Here's an example of a completely filled out card.json
:
{
"name": "Hiro Protagonist",
"handle": "protagonist",
"website": "https://hiro.protagonist.org",
"pronouns": "he/him",
"work": {
"title": "Delivery Advocate",
"company": "Mafia"
},
"code": {
"npm": "https://npm.im/~protagonist",
"github": "https://github.com/protagonist"
},
"social": {
"twitter": "https://twitter.com/protagonist",
"instagram": "https://instagram.com/protagonist",
"snapchat": "https://snapchat.com/add/protagonist",
"facebook": "https://facebook.com/protagonist",
"twitch": "https://twitch.tv/protagonist",
"tiktok": "https://tiktok.com/protagonist",
"tumblr": "https://protagonist.tumblr.com",
"spotify": "https://open.spotify.com/user/01101000011100100110100101101111",
"youtube": "https://youtube.com/protagonist",
"vimeo": "https://vimeo.com/protagonist",
"linkedin": "https://linkedin.com/in/protagonist/"
},
"proofs": {
"keybase": "https://keybase.io/protagonist"
},
"support": {
"patreon": "https://patreon.com/protagonist",
"githubSponsors": "https://github.com/sponsors/protagonist",
"openCollective": "https://opencollective.com/protagonist"
}
}
The current schema is by no means "complete". I'm sure there are a bunch of things that could be added that are relevant to folks outside of the spaces I participate in, or tweaks that could be made to imrpove the existing schema.
If you'd like to contribute an addition, by all means please do. Here's a quick list of things you'll need to do:
- update
helpers/fetch.js
with the appropriate changes - update
helpers/output.js
with the appropriate changes - update
README.md
- update
Publishing a card.json file
section - update examples
- update
- update the relevant card.json files in
tests/cards/
Enhancements to the codebase are more than welcome. Adding features would be awesome, as would enhancements to the codebase. If you're looking to add some features, here's some ideas:
card.json
generator tool, similar tonpm init
. Perhapsbateman create
.card.json
validator tool to ensure that a card is valid. This should both accept local paths and remote files. Perhaps it could bebateman validate
.