Credits
Kitten is authored by Aral Balkan with the contributions of the people featured below as well as the 382 people, organisations, and teams that helped create the 534 packages that make Kitten possible.
Special thanks to
This list is loosely based on the All Contributors idea and curated by hand to say a personal thank-you to the people who have contributed to Kitten in substantial ways. 🐱💕
| Name | 🔑 | Details | |
|---|---|---|---|
| Aral Balkan | 😻 | Chief meow. |
|
|
|
Dmitry Ivanov | 💻 |
Kitten’s template renderer inlines and extends Dmitry’s xhtm library. Dmitry worked with me (Aral) over several days through more than a dozen issues to improve xhtm and thus also Kitten’s HTML rendering. His help has been invaluable in ensuring one of Kitten’s core components works reliably. |
|
|
Jason Miller | 💻 |
Jason’s htm is what Dmitry’s xhtm is based on and Jason’s vhtml, like xhtm, is now inlined into Kitten’s template renderer and extended with functionality like Kitten’s Markdown support. For eight months or so of its development, Kitten was using htm and vhtml verbatim as dependencies and could not have gotten to where it is today without them. |
|
|
Denis Palashevskii | 💻 |
Denis was hugely helpful in tracking down and fixing a regression in HTMX 2 that was affecting the WebSocket extension that Kitten uses for its Streaming HTML workflow, thereby helping us adopt HTMX 2 while still in pre-release. |
|
|
Jeff Turcotte | 💻 |
Jeff contributed the Swap API normalisation code to the HTMX 2 codebase, which we’re using in our fork of HTMX 2 in Kitten. This enables us to use |
|
|
Andrew Chou | 🤔 |
Thanks to Andrew’s idea, Kitten files have compound extensions (so what used to be .page is now .page.js, etc.) This means Kitten no longer needs any specialised tooling and Kitten files automatically get syntax highlighted in source code repositories. We were also able to remove the ES Module Loader, simplifying Kitten further. |
|
|
Martijn de boer | 🐛 | Martijn’s bug report led to the implementation of cross-platform support for Kitten. |
|
|
mabu | 🐛 | mabu’s bug report led to an eventual rewrite of Auto Encrypt Localhost in 100% JavaScript. |
|
|
sorenmat | 📖 | Kitten’s first pull request 😽 |
Contribution Key
♿️ accessibility | 💬 answering questions | 🐛 bug reports | 💻 code | 📖 documentation | 💡 examples | 📋 event organisation | 🔍 finding funding | 🤔 ideas | 🚇 infrastructure (hosting, etc.) | 🚧 maintenance | 🧑🏫mentoring | 📣 promotion | 👀 review | 🛡️ security | 🌍 translation | ⚠️ testing | ✅ tutorials | 📢 talks | 📹 videos
Package contributors
- Adam Baldwin
- Adam Kirkton – 2 packages
- Alan Plum
- Alberto Schiabel
- Aleksey V Zapparov
- Alex Bell
- Alex Indigo
- Alexander Savin
- Alexander Shtuchkin
- Alexander Solovyov – 2 packages
- Alexei – 2 packages
- Alexey – 2 packages
- Alexey Raspopov
- Alvis HT Tang
- Amila Welihinda
- Amir Mikhak
- André Cruz
- Andre Polykanine
- Andrea Giammarchi – 3 packages
- Andrew – 2 packages
- Andrew Eisenberg
- Andrew Makarov
- Andrew Rhyne
- Andrew Waterman
- Andrey Sitnik – 2 packages
- Anna Henningsen
- Antonio Laguna
- Apostrophe Technologies, Inc.
- Appium Contributors
- Aral Balkan – 10 packages
- Aranđel Šarenac
- Ari Porad
- Arve Seljebu
- Aseem Kishore
- Aurélio A. Heckert
- azu – 2 packages
- Ben Coe – 7 packages
- Ben Noordhuis
- Benjamin E. Coe
- Benjamin Thomas
- Benjamin Toueg
- Blaine Bublitz
- Blake Miner
- Bogdan Chadkin – 3 packages
- bradleymeck
- Brian Donovan
- Brian White – 3 packages
- Brian Woodward – 3 packages
- Caleb Porzio
- Caolan McMahon
- Capriza Inc. – defunct; domain down –
- Chad Walker
- Charles Samborski – 2 packages
- Chase Douglas – 2 packages
- Chigozirim C.
- Chris J. Shull
- Chris Montgomery – 2 packages
- Chris Truter – 2 packages
- Christoph Dorn
- Clint Ruoho
- Colin Casey
- Conrad Irwin – 2 packages
- Corey Farrell – 2 packages
- Dan MacTough
- Daniel Espeset – 2 packages
- Daniel Fischer
- Daniel Perez
- Daniel Stockman
- Daniele Belardi
- Danilo Sampaio
- Dav Glass
- Dave Longley
- David Björklund
- David Clark
- David Glasser – 4 packages
- David I. Lehn
- David Junger
- David Sveningsson – 2 packages
- Deividas Bakanas
- Denis Malinochkin
- Devon Govett
- Diego Perini
- Digital Bazaar, Inc. – 2 packages
- djchie – 2 packages
- Dmitry Semigradsky
- Domenic Denicola – 6 packages
- Dominic Tarr – 4 packages
- Douglas Christopher Wilson – 29 packages
- Duncan Beevers – 2 packages
- Dustin Diaz
- DY
- Eddy Bruël – 2 packages
- EditorConfig Team
- Edmond Meinfelder
- Edo Rivai
- Eemeli Aro
- Egor Rogov
- Einar Lielmanis
- Einar Otto Stangvik
- Elan Shankar
- Elan Shanker – 3 packages
- Elijah Insua
- Enrico Marino
- Ethan Arrowood
- Eugene Sharygin
- Eugene Y. Q. Shen
- Evan Hahn
- Evan Wallace – 2 packages
- Evan You – 2 packages
- Evgeny Poberezkin – 3 packages
- ExE Boss
- Fabio Zendhi Nagao
- Fabrício Matté – 2 packages
- Fede Ramirez
- Federico Romero
- Fedor Indutny – 4 packages
- Felix Becker
- Felix Boehm – 6 packages
- Felix Geisendörfer – 3 packages
- Felix Gnass – 2 packages
- Felix Hanley
- Feross Aboukhadijeh – 6 packages
- Filip Skokan
- Flow Team – 2 packages
- Gabriel Eisbruch
- Gary Court
- Gary Katsevman
- Gary Ye – 2 packages
- George Stagas
- George Zahariev – 4 packages
- Gian Marco Gherardi
- Gidi Meir Morris
- Gilad Peleg – 2 packages
- GitHub Inc. – 3 packages
- Gulp Team
- Guy Ellis
- Hannes Magnusson
- Harutyun Amirjanyan
- Hawken Rives – 2 packages
- Heather Arthur – 3 packages
- Helena Zhang
- hemanth.hm
- Hong Xu
- Huáng Jùnliàng
- Hugh Kennedy – 3 packages
- Huw
- Ian Livingstone
- Ilia Baryshnikov
- Ilya Shaisultanov
- Isaac Cambron
- Isaac Z. Schlueter – 17 packages
- Iskren Ivov Chernev
- ITW Creative Works
- Ivan Nikulin – 3 packages
- Ivan Sagalaev
- Ivan Starkov
- J. Ryan Stinnett – 2 packages
- Jack Herrington – 2 packages
- Jake Verbaten – 4 packages
- James Halliday – 13 packages
- James Talmage – 2 packages
- James Wyatt Cready – 2 packages
- Jamie Wong – 2 packages
- Jan T. Sott
- Jared Wray – 2 packages
- Javier Blanco
- Jed Mao
- Jed Watson
- Jens Taylor
- Jeremiah Senkpiel
- Jeremy Hull
- Jeremy Stashewsky
- Jérôme Desboeufs – 2 packages
- Jesús Leganés Combarro
- Jmeas Smith – 2 packages
- Joe Hildebrand – 2 packages
- Joel Feenstra
- Johannes Ewald – 2 packages
- John Gozde – 2 packages
- John-David Dalton – 4 packages
- Jon Schlinkert – 18 packages
- Jonas Liljegren
- Jonathan Ong – 18 packages
- Jonathan Stewmon
- Jordan Harband – 92 packages
- Jordan Tucker
- Joris van der Wel – 2 packages
- Josh Goebel – 2 packages
- JoshuaKGoldberg
- Julian Gruber – 3 packages
- Junxiao Shi
- Justin Ridgewell – 2 packages
- kael
- Kat Marchán
- Kelly Campbell – 2 packages
- Kelvin Jin
- Kevin Beaty
- Kevin Mårtensson – 2 packages
- Khaled Al-Ansari – 2 packages
- Kiko Beats – 2 packages
- Klaus Hartl
- Klaus Meinhardt
- Kognise
- Kris Reeves – 2 packages
- Krishnan Anantheswaran – 3 packages
- Krzysztof Jan Modras – 2 packages
- Kuba Juszczyk
- Kyle E. Mitchell – 3 packages
- Kyle Uehlein
- Lalit Kapoor
- Lauri Rooden
- Lea Verou
- Lee Byron
- Li Xuanji
- Liam Newman
- linsir
- Linus Unnebäck
- Lishude
- Louis-Dominique Dubeau – 2 packages
- Luke Edwards – 8 packages
- Marcin Kopacz
- Marcos Cáceres
- Mariusz Wiktorczyk
- Mark Stacey
- Martin Grenfell
- Martin Kolárik
- Masaki Komagata
- Mathias Bynens – 8 packages
- Matt Davies
- Matt DesLauriers
- Matt Johnson
- Matt Searle
- Matt-Esch – 2 packages
- Matteo Collina – 4 packages
- Matthew Aitken
- Matthew Dunsdon
- Mauro Bieg
- Max Nanasy
- Megan Holmes
- Meryn Stol
- Michael de Libero
- Michael Ficarra – 2 packages
- Michael Mclaughlin
- Michael Z Goddard – 2 packages
- Microsoft Corp.
- Microsoft Corporation – 3 packages
- Microsoft TypeScript
- Miguel Roncancio
- Mihai Bazon – 2 packages
- Mike Atkins
- Mikeal Rogers – 3 packages
- Miles Elam – 2 packages
- Miroslav Bajtoš
- Mohsen Azimi
- Nadav Fischer – domain non-functional –
- Nagao, Fabio Zendhi
- Nathan MacInnes
- Nathan Rajlich – 6 packages
- Nathan Zadoks
- Nicholas C. Zakas – 5 packages
- Nicholas C. Zaks
- Nick Baugh
- Nick Fitzgerald – 2 packages
- Nicolas Lalevée – 2 packages
- Nikita Galkin
- Nikita Skovoroda
- Nikita Vasilyev
- Nochum Sossonko
- NodeJS Contributors
- Oleg Efimov
- Olivier Melcher – 2 packages
- Olsten Larck – 2 packages
- Orlin Georgiev
- Osman Nuri Okumuş
- Parambir Singh
- Paul Miller – 9 packages
- Paul Vorbach
- Pavel Lang
- Peter Bright
- Peteris Krumins
- Petka Antonov
- Philipp Dunkel
- Piotr Błażejewicz
- Qix
- Ram Damera
- Ramesh Nair
- Randolf J
- Raynos – 13 packages
- Rebecca Turner
- Rémi Berson – 4 packages
- Rich Harris – 2 packages
- Richie Bendall
- Rifat Nabi
- Robert Kieffer – 2 packages
- Robert Nagy
- Róbert Oroszi
- Rocky Meza
- Romain Beauxis – 2 packages
- Roman Shtylman
- Rouven Weßling – 3 packages
- Roy Riojas
- Ruy Adorno
- Ryan Seddon – 2 packages
- Saad Rashid – 2 packages
- Sam Thompson
- Samuel Ainsworth
- Sang Dang
- Scott Corgan
- Sebastian Hildebrandt
- Sebastian Landwehr
- Sebastian Mayr – 3 packages
- Sebastian Silbermann
- shinnn
- Shinnosuke Watanabe
- Shivan Kaul Sahib
- Simon Lydell – 3 packages
- Sindre Sorhus – 63 packages
- Stan
- Stefan Penner
- Stefan Siegl
- Stephan Meijer
- Stephen Crane – 2 packages
- Stephen Hess
- Steve King – 6 packages
- Steven Vachon
- Suhas Karanth
- Szymon Marczak
- T. Jameson Little
- Terkel Gjervig – 2 packages
- Thanik Bhongbhibhat
- The Babel Team – 3 packages
- The Linux Foundation
- Théo FIDRY
- thisconnect
- Thomas den Hollander
- Thomas Parisot – 2 packages
- Thorsten Lorenz – 2 packages
- Tian You
- Tim Channell
- Tim Oxley
- Tim Wood
- Timo Tijhof – 2 packages
- Timothy Gu
- TJ Holowaychuk – 6 packages
- Tobias Fried
- Tobias Koppers – 2 packages
- Tobiasz Cudnik
- Todd Kennedy
- Todd Wolfson – 3 packages
- Tom Byrer
- Tomas Della Vedova
- Toru Nagashima – 3 packages
- Trey Hunner
- Trivikram Kamat
- Troy Goode – 3 packages
- Tyler Akins
- usrbincc – 2 packages
- v1rtl
- Val – 2 packages
- Valentin 7rulnik Semirulnik
- Victor Perin
- Vital Batmanov
- Vitaly Puzrin
- Vittorio Gambaletta
- Vladimir Jimenez
- Vladimir Zapparov
- Vsevolod Strukchinsky
- w1nk
- wafuwafu13
- Waldemar Reusch
- Wes Todd
- Wilco Bakker
- Will Harney
- William Hilton
- Wolfgang Faust
- Woong Jun
- wwwy3y3
- Xavier Damman – 2 packages
- Yargs Contributors
- Yehezkiel Syamsuhadi – 2 packages
- Yongsheng Zhang
- Zach Hale
Packages
- abbrev: Like ruby’s abbrev module, but in js (ISC license)
- accepts: Higher-level content negotiation (MIT license)
- acorn: ECMAScript parser (MIT license)
- acorn-jsx: Modern, fast React.js JSX parser (MIT license)
- acorn-walk: ECMAScript (ESTree) AST walker (MIT license)
- agent-base: Turn a function into an
http.Agentinstance (MIT license) - ajv: Another JSON Schema Validator (MIT license)
- alpinejs: The rugged, minimal JavaScript framework (MIT license)
- ansi-regex: Regular expression for matching ANSI escape codes (MIT license)
- ansi-styles: ANSI escape codes for styling strings in the terminal (MIT license)
- any-promise: Resolve any installed ES6 compatible promise (MIT license)
- argparse: CLI arguments parser. Native port of python’s argparse. (Python-2.0 license)
- array-buffer-byte-length: Get the byte length of an ArrayBuffer, even in engines without a
.byteLengthmethod. (MIT license) - array-union: Create an array of unique values, in order, from the input arrays (MIT license)
- array.prototype.every: An ES5 spec-compliant
Array.prototype.everyshim/polyfill/replacement that works as far down as ES3. (MIT license) - arraybuffer.prototype.slice: ES spec-compliant shim for ArrayBuffer.prototype.slice (MIT license)
- asn1.js: ASN.1 encoder and decoder (MIT license)
- asn1.js-rfc2560: RFC2560 structures for asn1.js (MIT license)
- asn1.js-rfc5280: RFC5280 extension structures for asn1.js (MIT license)
- async: Higher-order functions and common patterns for asynchronous code (MIT license)
- asynckit: Minimal async jobs utility library, with streams support (MIT license)
- @small-tech/attribute-parser: Parses the attributes in a string containing a single tag. (AGPL-3.0-or-later license)
- @small-tech/auto-encrypt: Automatically provisions and renews Let’s Encrypt TLS certificates on Node.js https servers (including Kitten, Polka, Express.js, etc.) (AGPL-3.0-or-later license)
- @small-tech/auto-encrypt-localhost: Automatically provisions and installs locally-trusted TLS certificates for Node.js https servers in 100% JavaScript. (AGPL-3.0 license)
- available-typed-arrays: Returns an array of Typed Array names that are available in the current environment (MIT license)
- balanced-match: Match balanced character pairs, like “{” and “}” (MIT license)
- @scure/base: Secure, audited & 0-dep implementation of bech32, base64, base58, base32 & base16 (MIT license)
- base64-js: Base64 encoding/decoding in pure JS (MIT license)
- bent: Functional HTTP client for Node.js w/ async/await. (Apache-2.0 license)
- @sidvind/better-ajv-errors: JSON Schema validation for Human (Apache-2.0 license)
- bl: Buffer List: collect buffers and access with a standard readable Buffer interface, streamable too! (MIT license)
- bluebird: Full featured Promises/A+ implementation with exceptionally good performance (MIT license)
- bn.js: Big number implementation in pure javascript (MIT license)
- body: Body parsing
- body-parser: Node.js body parsing middleware (MIT license)
- brace-expansion: Brace expansion as known from sh/bash (MIT license)
- braces: Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed. (MIT license)
- undefined
- buffer: Node.js Buffer API, for the browser (MIT license)
- buffer-from (MIT license)
- bundle-name: Get bundle name from a bundle identifier (macOS):
com.apple.Safari→Safari(MIT license) - busboy: A streaming parser for HTML form data for node.js
- bytes: Utility to parse a string bytes to bytes and vice-versa (MIT license)
- bytesish: Cross-Platform Binary API ((Apache-2.0 AND MIT) license)
- c8: output coverage reports using Node.js’ built in coverage (ISC license)
- call-bind: Robustly
.call.bind()a function (MIT license) - callsites: Get callsites from the V8 stack trace API (MIT license)
- caseless: Caseless object set/get/has, very useful when working with HTTP headers. (Apache-2.0 license)
- chalk: Terminal string styling done right (MIT license)
- char-regex: A regex to match any full character, considering weird character ranges. (MIT license)
- undefined
- cli-cursor: Toggle the CLI cursor (MIT license)
- cli-highlight: Syntax highlighting in your terminal (ISC license)
- cli-spinners: Spinners for use in the terminal (MIT license)
- cliui: easily create complex multi-column command-line-interfaces (ISC license)
- clone: deep cloning of objects and arrays (MIT license)
- @babel/code-frame: Generate errors that contain a code frame that point to source locations. (MIT license)
- color-convert: Plain color conversion functions (MIT license)
- color-name: A list of color names and its values (MIT license)
- combined-stream: A stream that emits multiple other streams one after another. (MIT license)
- commander: the complete solution for node.js command-line programs (MIT license)
- undefined
- concat-map: concatenative mapdashery (MIT license)
- @humanwhocodes/config-array: Glob-based configuration matching. (Apache-2.0 license)
- config-chain: HANDLE CONFIGURATION ONCE AND FOR ALL
- connect-busboy: Connect middleware for busboy
- connect-static-file: connect and express middleware to serve a single static file (MIT license)
- content-type: Create and parse HTTP Content-Type header (MIT license)
- continuable-cache: Cache a continuable
- convert-source-map: Converts a source-map from/to different formats and allows adding/changing properties. (MIT license)
- cookie: HTTP server cookie parsing and serialization (MIT license)
- cors: Node.js CORS middleware (MIT license)
- cosmiconfig: Find and load configuration from a package.json property, rc file, TypeScript module, and more! (MIT license)
- cross-spawn: Cross platform child_process#spawn and child_process#spawnSync (MIT license)
- cssstyle: CSSStyleDeclaration Object Model implementation (MIT license)
- @esbuild/darwin-arm64: The macOS ARM 64-bit binary for esbuild, a JavaScript bundler. (MIT license)
- data-urls: Parses data: URLs (MIT license)
- data-view-buffer: Get the ArrayBuffer out of a DataView, robustly. (MIT license)
- data-view-byte-length: Get the byteLength out of a DataView, robustly. (MIT license)
- data-view-byte-offset: Get the byteOffset out of a DataView, robustly. (MIT license)
- debug: small debugging utility (MIT license)
- decimal.js: An arbitrary-precision Decimal type for JavaScript. (MIT license)
- deep-equal: node’s assert.deepEqual algorithm (MIT license)
- deep-is: node’s assert.deepEqual algorithm except for NaN being equal to NaN (MIT license)
- deepmerge: A library for deep (recursive) merging of Javascript objects (MIT license)
- default-browser: Get the default browser (MIT license)
- default-browser-id: Get the bundle identifier of the default browser (macOS). Example: com.apple.Safari (MIT license)
- defaults: merge single level defaults over a config object (MIT license)
- define-data-property: Define a data property on an object. Will fall back to assignment in an engine without descriptors. (MIT license)
- define-lazy-prop: Define a lazily evaluated property on an object (MIT license)
- define-properties: Define multiple non-enumerable properties at once. Uses
Object.definePropertywhen available; falls back to standard assignment in older engines. (MIT license) - defined: return the first argument that is
!== undefined(MIT license) - delayed-stream: Buffers events from a stream until you are ready to handle them. (MIT license)
- depd: Deprecate all the things (MIT license)
- destroy: destroy a stream if possible (MIT license)
- dettle: A tiny fully-featured debounce and throttle implementation.
- dir-glob: Convert directories to glob compatible strings (MIT license)
- doctrine: JSDoc parser (Apache-2.0 license)
- dom-serializer: render domhandler DOM nodes to a string (MIT license)