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: 2026-03-21T03:24:41.563Z GitHub updated at: 2026-03-21T03:24:40.300Z 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
7,306 19 Feb 7,024 20 Feb 2,110 21 Feb 971 22 Feb 6,963 23 Feb 6,748 24 Feb 6,989 25 Feb 7,634 26 Feb 6,425 27 Feb 1,406 28 Feb 1,369 01 Mar 7,116 02 Mar 8,940 03 Mar 7,724 04 Mar 7,314 05 Mar 9,835 06 Mar 2,666 07 Mar 1,655 08 Mar 7,564 09 Mar 0 10 Mar 7,587 11 Mar 6,739 12 Mar 6,843 13 Mar 2,064 14 Mar 1,673 15 Mar 7,498 16 Mar 0 17 Mar 0 18 Mar 0 19 Mar 0 20 Mar 140,163 Last 30 days
NPM updated at: 2026-03-21T03:24:42.396Z GitHub updated at: 2026-03-21T03:24:41.399Z 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
293,012 19 Feb 267,439 20 Feb 95,610 21 Feb 91,406 22 Feb 290,562 23 Feb 333,008 24 Feb 340,975 25 Feb 326,550 26 Feb 301,034 27 Feb 101,870 28 Feb 112,476 01 Mar 324,003 02 Mar 340,532 03 Mar 350,199 04 Mar 332,452 05 Mar 313,424 06 Mar 135,147 07 Mar 124,999 08 Mar 356,046 09 Mar 0 10 Mar 382,972 11 Mar 370,509 12 Mar 332,726 13 Mar 115,911 14 Mar 116,864 15 Mar 373,302 16 Mar 0 17 Mar 0 18 Mar 0 19 Mar 0 20 Mar 6,523,028 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
NPM updated at: 2026-03-21T03:24:43.079Z GitHub updated at: 2026-03-21T03:24:41.480Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
5 19 Feb 4 20 Feb 1 21 Feb 2 22 Feb 28 23 Feb 0 24 Feb 0 25 Feb 1 26 Feb 2 27 Feb 0 28 Feb 0 01 Mar 0 02 Mar 0 03 Mar 0 04 Mar 1 05 Mar 0 06 Mar 1 07 Mar 4 08 Mar 1 09 Mar 0 10 Mar 0 11 Mar 1 12 Mar 1 13 Mar 0 14 Mar 1 15 Mar 0 16 Mar 0 17 Mar 0 18 Mar 0 19 Mar 0 20 Mar 53 Last 30 days
NPM updated at: 2026-03-21T03:24:42.715Z GitHub updated at: 2026-03-21T03:24:41.497Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
1,289 19 Feb 980 20 Feb 285 21 Feb 295 22 Feb 1,296 23 Feb 1,137 24 Feb 1,306 25 Feb 1,463 26 Feb 1,551 27 Feb 712 28 Feb 962 01 Mar 1,264 02 Mar 1,343 03 Mar 1,256 04 Mar 1,086 05 Mar 1,350 06 Mar 192 07 Mar 353 08 Mar 859 09 Mar 0 10 Mar 1,171 11 Mar 1,379 12 Mar 1,168 13 Mar 251 14 Mar 182 15 Mar 1,254 16 Mar 0 17 Mar 0 18 Mar 0 19 Mar 0 20 Mar 24,384 Last 30 days
GitHub Action to deploy to Clever Cloud
Security & Encryption
NPM updated at: 2026-03-21T03:24:41.415Z GitHub updated at: 2026-03-21T03:24:40.475Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
40 19 Feb 20 20 Feb 2 21 Feb 43 22 Feb 98 23 Feb 29 24 Feb 55 25 Feb 48 26 Feb 12 27 Feb 5 28 Feb 5 01 Mar 11 02 Mar 37 03 Mar 39 04 Mar 36 05 Mar 29 06 Mar 0 07 Mar 1 08 Mar 16 09 Mar 0 10 Mar 43 11 Mar 19 12 Mar 19 13 Mar 19 14 Mar 15 15 Mar 40 16 Mar 0 17 Mar 0 18 Mar 0 19 Mar 0 20 Mar 681 Last 30 days
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 ?
NPM updated at: 2026-03-21T03:24:42.050Z GitHub updated at: 2026-03-21T03:24:41.494Z 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
7,506 19 Feb 6,556 20 Feb 1,733 21 Feb 1,820 22 Feb 5,105 23 Feb 9,183 24 Feb 8,008 25 Feb 7,499 26 Feb 6,264 27 Feb 1,802 28 Feb 2,859 01 Mar 7,516 02 Mar 8,747 03 Mar 10,753 04 Mar 8,004 05 Mar 7,487 06 Mar 3,144 07 Mar 3,084 08 Mar 6,748 09 Mar 0 10 Mar 9,510 11 Mar 7,430 12 Mar 6,494 13 Mar 1,816 14 Mar 2,072 15 Mar 6,713 16 Mar 0 17 Mar 0 18 Mar 0 19 Mar 0 20 Mar 147,853 Last 30 days
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:
NPM updated at: 2026-03-21T03:24:44.158Z GitHub updated at: 2026-03-21T03:24:41.502Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
309 19 Feb 189 20 Feb 90 21 Feb 125 22 Feb 271 23 Feb 215 24 Feb 323 25 Feb 168 26 Feb 126 27 Feb 25 28 Feb 141 01 Mar 147 02 Mar 252 03 Mar 319 04 Mar 193 05 Mar 183 06 Mar 324 07 Mar 285 08 Mar 606 09 Mar 0 10 Mar 233 11 Mar 399 12 Mar 147 13 Mar 38 14 Mar 192 15 Mar 233 16 Mar 0 17 Mar 0 18 Mar 0 19 Mar 0 20 Mar 5,533 Last 30 days
NPM updated at: 2026-03-21T03:24:42.531Z GitHub updated at: 2026-03-21T03:24:41.496Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
1 19 Feb 1 20 Feb 0 21 Feb 1 22 Feb 0 23 Feb 2 24 Feb 1 25 Feb 0 26 Feb 2 27 Feb 0 28 Feb 0 01 Mar 0 02 Mar 1 03 Mar 0 04 Mar 0 05 Mar 0 06 Mar 0 07 Mar 0 08 Mar 0 09 Mar 0 10 Mar 1 11 Mar 0 12 Mar 1 13 Mar 1 14 Mar 0 15 Mar 7 16 Mar 0 17 Mar 0 18 Mar 0 19 Mar 0 20 Mar 19 Last 30 days
NPM updated at: 2026-03-21T03:24:43.762Z GitHub updated at: 2026-03-21T03:24:41.495Z 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
124 19 Feb 122 20 Feb 8 21 Feb 6 22 Feb 171 23 Feb 97 24 Feb 162 25 Feb 115 26 Feb 46 27 Feb 0 28 Feb 0 01 Mar 73 02 Mar 179 03 Mar 100 04 Mar 126 05 Mar 155 06 Mar 0 07 Mar 22 08 Mar 309 09 Mar 0 10 Mar 232 11 Mar 255 12 Mar 213 13 Mar 2 14 Mar 4 15 Mar 56 16 Mar 0 17 Mar 0 18 Mar 0 19 Mar 0 20 Mar 2,577 Last 30 days
Miscellaneous
NPM updated at: 2026-03-21T03:24:41.641Z GitHub updated at: 2026-03-21T03:24:41.635Z 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
7,572 19 Feb 6,579 20 Feb 1,726 21 Feb 1,869 22 Feb 5,205 23 Feb 9,296 24 Feb 8,017 25 Feb 7,605 26 Feb 6,279 27 Feb 1,812 28 Feb 2,869 01 Mar 7,541 02 Mar 8,824 03 Mar 10,794 04 Mar 8,100 05 Mar 7,557 06 Mar 3,136 07 Mar 3,086 08 Mar 6,789 09 Mar 0 10 Mar 9,531 11 Mar 7,444 12 Mar 6,492 13 Mar 1,819 14 Mar 2,095 15 Mar 6,764 16 Mar 0 17 Mar 0 18 Mar 0 19 Mar 0 20 Mar 148,801 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