Open Source
This page lists some of the open source packages and repositories I have published or contribute to.
Most of them are published under my company 47ng .
Frontend
My tech stack of choice for server-rendered React apps is Next.js
and TailwindCSS .
For client-heavy apps, I like to use Chakra-UI to
quickly build beautiful and accessible interfaces.
Because of its CSS-in-JS approach, it’s a bit awkward to use with the
new Next.js app router and server components, so I’m now letting Tailwind deal
with styling. ChatGPT makes a perfect companion for refactoring one into the other
anyway. 😄
NPM updated at: 2025-12-30T08:07:48.400Z GitHub updated at: 2025-12-30T08:07:47.393Z Type-safe search params state manager for React frameworks - Like useState, but stored in the URL query string.
$ pnpm add next-usequerystate $ yarn add next-usequerystate
$ npm install next-usequerystate
1,090 30 Nov 5,029 01 Dec 8,353 02 Dec 7,964 03 Dec 9,715 04 Dec 7,555 05 Dec 1,466 06 Dec 1,174 07 Dec 6,313 08 Dec 7,095 09 Dec 6,899 10 Dec 7,896 11 Dec 7,192 12 Dec 1,456 13 Dec 1,149 14 Dec 6,832 15 Dec 8,785 16 Dec 7,403 17 Dec 6,403 18 Dec 5,311 19 Dec 1,280 20 Dec 986 21 Dec 4,943 22 Dec 4,183 23 Dec 2,330 24 Dec 1,189 25 Dec 1,608 26 Dec 904 27 Dec 1,121 28 Dec 2,892 29 Dec 136,516 Last 30 days
NPM updated at: 2025-12-30T08:07:50.091Z GitHub updated at: 2025-12-30T08:07:47.453Z Type-safe search params state manager for React frameworks - Like useState, but stored in the URL query string.
$ pnpm add nuqs $ yarn add nuqs
$ npm install nuqs
50,301 30 Nov 199,166 01 Dec 218,767 02 Dec 227,943 03 Dec 245,838 04 Dec 209,850 05 Dec 67,145 06 Dec 68,681 07 Dec 233,895 08 Dec 253,460 09 Dec 233,335 10 Dec 237,243 11 Dec 237,542 12 Dec 62,418 13 Dec 56,549 14 Dec 228,649 15 Dec 259,178 16 Dec 239,757 17 Dec 228,529 18 Dec 184,148 19 Dec 64,001 20 Dec 52,769 21 Dec 172,814 22 Dec 174,373 23 Dec 116,930 24 Dec 59,422 25 Dec 81,946 26 Dec 49,572 27 Dec 49,159 28 Dec 131,654 29 Dec 4,695,034 Last 30 days
Backend
I like to use Fastify to build backend services in Node.js.
What I like about it:
More opinionated and structured than Express.js
Damn fast
Easy to write plugins
Good defaults out of the box
GitHub updated at: 2025-12-30T08:07:47.494Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
NPM package data is currently unavailable.
NPM updated at: 2025-12-30T08:07:50.549Z GitHub updated at: 2025-12-30T08:07:48.440Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
168 30 Nov 1,304 01 Dec 1,338 02 Dec 1,253 03 Dec 1,468 04 Dec 1,148 05 Dec 173 06 Dec 168 07 Dec 1,074 08 Dec 1,357 09 Dec 1,079 10 Dec 1,052 11 Dec 1,010 12 Dec 106 13 Dec 96 14 Dec 986 15 Dec 1,076 16 Dec 1,046 17 Dec 1,028 18 Dec 859 19 Dec 171 20 Dec 62 21 Dec 830 22 Dec 800 23 Dec 482 24 Dec 175 25 Dec 280 26 Dec 211 27 Dec 198 28 Dec 786 29 Dec 21,784 Last 30 days
GitHub Action to deploy to Clever Cloud
Security & Encryption
GitHub updated at: 2025-12-30T08:07:47.594Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
NPM package data is currently unavailable.
I wrote an article about how I came to build session-keystore:
13 December 2019 • 4 min read e2ee security End-to-end encrypted applications use cryptographic keys that don't leave the client, so how do we store them securely in the browser ?
GitHub updated at: 2025-12-30T08:07:47.617Z Serialized AES-GCM 256 encryption, decryption and key management in the browser & Node.js
$ pnpm add @47ng/cloak $ yarn add @47ng/cloak
$ npm install @47ng/cloak
NPM package data is currently unavailable.
SDK to build end-to-end encrypted web applications
Environment Variables
The Twelve Factor App model uses environment
variables extensively for configuration and passing runtime data to a web app.
However, there are things to look out for when working with environment
variables, so I built a few packages to make their management easier and more
secure:
GitHub updated at: 2025-12-30T08:07:48.518Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
NPM package data is currently unavailable.
GitHub updated at: 2025-12-30T08:07:47.697Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
NPM package data is currently unavailable.
GitHub updated at: 2025-12-30T08:07:47.718Z Check that required environment variables are set for your app
$ pnpm add @47ng/check-env $ yarn add @47ng/check-env
$ npm install @47ng/check-env
NPM package data is currently unavailable.
Miscellaneous
NPM updated at: 2025-12-30T08:07:50.408Z GitHub updated at: 2025-12-30T08:07:47.735Z Universal conversion of Uint8Array from/into UTF-8, base64url and hex in the browser and Node.js
$ pnpm add @47ng/codec $ yarn add @47ng/codec
$ npm install @47ng/codec
1,222 30 Nov 6,478 01 Dec 6,936 02 Dec 7,120 03 Dec 7,217 04 Dec 5,652 05 Dec 1,699 06 Dec 2,443 07 Dec 7,256 08 Dec 7,039 09 Dec 6,568 10 Dec 7,088 11 Dec 6,394 12 Dec 1,587 13 Dec 2,053 14 Dec 7,009 15 Dec 7,572 16 Dec 6,713 17 Dec 7,505 18 Dec 6,100 19 Dec 1,089 20 Dec 924 21 Dec 4,127 22 Dec 4,185 23 Dec 2,560 24 Dec 1,384 25 Dec 1,562 26 Dec 935 27 Dec 1,173 28 Dec 2,652 29 Dec 132,242 Last 30 days
My longest-running open-source project is the Arduino MIDI Library. I learned programming in C++ in 2008 with this project and discovered my passion for open-source software.
The source code for this website! Made with Next.js , TailwindCSS and MDX .
🤝 Hire me!
I build web apps for startups, businesses and public institutions as a freelance web developer and designer. Let's discuss your needs and see how I can help.
Contact meEdit this page on GitHub