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 batemanOnce 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.jsonfile must return a 200 OK HTTP response.- tl;dr you can't mask your
card.jsonwith an HTTP redirect.
- tl;dr you can't mask your
Here's the structure of a card.json file:
nameString (required) - Your namehandleString (required) - Your preferred online handlewebsiteString (required) - Your websitepronounsString (required) - Your pronounsworkObject (optional) - An object that holds some metadata about your worktitleString (optional) - Your title at your workcompanyString (optional) - The company you work at
codeObject (optional) - Some links that specifically refer to code-focused websitesnpmString (optional) - Link to your account on npmgithubString (optional) - Link to your account on GitHub
socialObject (optional) - Links to your social MediatwitterString (optional) - Link to your Twitter accountinstagramString (optional) - Link to your Instagram accountsnapchatString (optional) - Link to your Snapchat accountfacebookString (optional) - Link to your Facebook accounttwitchString (optional) - Link to your Twitch accounttiktokString (optional) - Link to your TikTok accounttumblrString (optional) - Link to your Tumblr accountspotifyString (optional) - Link to your Sptofiy accountyoutubeString (optional) - Link to your YouTube accountvimeoString (optional) - Link to your Vimeo accountlinkedinString (optional) - Link to your LinkedIn account
proofsObject (optional) - Things that prove you're youkeybaseString (optional) - Link to your Keybase account
supportObject (optional)patreonString (option) - Link to your PatreongithubSponsorsString (option) - Link to your GitHub Sponsors pageopenCollectiveString (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.jswith the appropriate changes - update
helpers/output.jswith the appropriate changes - update
README.md- update
Publishing a card.json filesection - 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.jsongenerator tool, similar tonpm init. Perhapsbateman create.card.jsonvalidator tool to ensure that a card is valid. This should both accept local paths and remote files. Perhaps it could bebateman validate.
