bateman v1.1.1
bateman
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.
Usage
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>Publishing a card.json
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"
}
}Contributing
Adding New Properties
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/
Contributing Enhancements
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.