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-10-29T22:53:55.449Z GitHub updated at: 2026-10-29T22:53:55.961Z 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
1,145,150 Sep 29 1,107,547 Sep 30 1,109,126 Oct 01 907,654 Oct 02 432,188 Oct 03 515,581 Oct 04 1,045,570 Oct 05 0 Oct 06 1,223,376 Oct 07 1,219,143 Oct 08 1,073,522 Oct 09 553,986 Oct 10 573,447 Oct 11 1,101,343 Oct 12 0 Oct 13 0 Oct 14 0 Oct 15 1,157,048 Oct 16 485,394 Oct 17 543,120 Oct 18 0 Oct 19 0 Oct 20 0 Oct 21 1,398,587 Oct 22 1,276,703 Oct 23 607,804 Oct 24 529,033 Oct 25 1,344,450 Oct 26 1,365,864 Oct 27 0 Oct 28 20,715,636 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-10-29T22:53:55.449Z GitHub updated at: 2026-10-29T22:53:56.140Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
10 Sep 29 13 Sep 30 18 Oct 01 18 Oct 02 16 Oct 03 7 Oct 04 40 Oct 05 0 Oct 06 8 Oct 07 10 Oct 08 27 Oct 09 82 Oct 10 23 Oct 11 5 Oct 12 0 Oct 13 0 Oct 14 0 Oct 15 10 Oct 16 3 Oct 17 11 Oct 18 0 Oct 19 0 Oct 20 0 Oct 21 9 Oct 22 6 Oct 23 0 Oct 24 34 Oct 25 5 Oct 26 3 Oct 27 0 Oct 28 358 Last 30 days NPM updated at: 2026-10-29T22:53:55.449Z GitHub updated at: 2026-10-29T22:53:56.059Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
2,882 Sep 29 3,088 Sep 30 3,476 Oct 01 2,217 Oct 02 297 Oct 03 220 Oct 04 2,309 Oct 05 0 Oct 06 2,666 Oct 07 2,844 Oct 08 4,372 Oct 09 450 Oct 10 455 Oct 11 3,502 Oct 12 0 Oct 13 0 Oct 14 0 Oct 15 3,192 Oct 16 378 Oct 17 262 Oct 18 0 Oct 19 0 Oct 20 0 Oct 21 3,392 Oct 22 4,068 Oct 23 703 Oct 24 512 Oct 25 4,514 Oct 26 2,495 Oct 27 0 Oct 28 48,294 Last 30 days GitHub Action to deploy to Clever Cloud
Security & Encryption NPM updated at: 2026-10-29T22:53:55.449Z GitHub updated at: 2026-10-29T22:53:56.177Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
10 Sep 29 9 Sep 30 12 Oct 01 7 Oct 02 4 Oct 03 5 Oct 04 26 Oct 05 0 Oct 06 6 Oct 07 13 Oct 08 22 Oct 09 5 Oct 10 9 Oct 11 17 Oct 12 0 Oct 13 0 Oct 14 0 Oct 15 11 Oct 16 11 Oct 17 10 Oct 18 0 Oct 19 0 Oct 20 0 Oct 21 19 Oct 22 23 Oct 23 10 Oct 24 5 Oct 25 11 Oct 26 13 Oct 27 0 Oct 28 258 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-10-29T22:53:55.449Z GitHub updated at: 2026-10-29T22:53:55.955Z 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
27,003 Sep 29 25,358 Sep 30 29,561 Oct 01 24,935 Oct 02 8,441 Oct 03 4,366 Oct 04 21,997 Oct 05 0 Oct 06 27,210 Oct 07 24,074 Oct 08 23,648 Oct 09 7,145 Oct 10 5,473 Oct 11 17,839 Oct 12 0 Oct 13 0 Oct 14 0 Oct 15 26,064 Oct 16 4,907 Oct 17 6,318 Oct 18 0 Oct 19 0 Oct 20 0 Oct 21 26,134 Oct 22 23,543 Oct 23 4,840 Oct 24 5,425 Oct 25 26,488 Oct 26 27,644 Oct 27 0 Oct 28 398,413 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-10-29T22:53:55.449Z GitHub updated at: 2026-10-29T22:53:55.925Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
405 Sep 29 264 Sep 30 336 Oct 01 241 Oct 02 161 Oct 03 290 Oct 04 354 Oct 05 0 Oct 06 278 Oct 07 213 Oct 08 190 Oct 09 214 Oct 10 381 Oct 11 429 Oct 12 0 Oct 13 0 Oct 14 0 Oct 15 145 Oct 16 82 Oct 17 288 Oct 18 0 Oct 19 0 Oct 20 0 Oct 21 305 Oct 22 174 Oct 23 190 Oct 24 255 Oct 25 335 Oct 26 165 Oct 27 0 Oct 28 5,695 Last 30 days NPM updated at: 2026-10-29T22:53:55.449Z GitHub updated at: 2026-10-29T22:53:56.135Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
3 Sep 29 2 Sep 30 3 Oct 01 9 Oct 02 8 Oct 03 9 Oct 04 13 Oct 05 0 Oct 06 8 Oct 07 6 Oct 08 10 Oct 09 4 Oct 10 3 Oct 11 3 Oct 12 0 Oct 13 0 Oct 14 0 Oct 15 3 Oct 16 3 Oct 17 2 Oct 18 0 Oct 19 0 Oct 20 0 Oct 21 0 Oct 22 1 Oct 23 14 Oct 24 4 Oct 25 10 Oct 26 4 Oct 27 0 Oct 28 122 Last 30 days NPM updated at: 2026-10-29T22:53:55.449Z GitHub updated at: 2026-10-29T22:53:56.061Z 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
19 Sep 29 15 Sep 30 26 Oct 01 24 Oct 02 30 Oct 03 49 Oct 04 25 Oct 05 0 Oct 06 16 Oct 07 148 Oct 08 191 Oct 09 91 Oct 10 16 Oct 11 36 Oct 12 0 Oct 13 0 Oct 14 0 Oct 15 10 Oct 16 18 Oct 17 33 Oct 18 0 Oct 19 0 Oct 20 0 Oct 21 17 Oct 22 22 Oct 23 15 Oct 24 16 Oct 25 13 Oct 26 33 Oct 27 0 Oct 28 863 Last 30 days Miscellaneous NPM updated at: 2026-10-29T22:53:55.449Z GitHub updated at: 2026-10-29T22:53:56.138Z 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
26,172 Sep 29 24,255 Sep 30 28,110 Oct 01 23,723 Oct 02 8,344 Oct 03 4,326 Oct 04 20,894 Oct 05 0 Oct 06 25,207 Oct 07 22,977 Oct 08 22,432 Oct 09 6,952 Oct 10 5,389 Oct 11 17,732 Oct 12 0 Oct 13 0 Oct 14 0 Oct 15 23,292 Oct 16 4,812 Oct 17 5,798 Oct 18 0 Oct 19 0 Oct 20 0 Oct 21 24,068 Oct 22 22,168 Oct 23 4,760 Oct 24 5,454 Oct 25 24,744 Oct 26 25,288 Oct 27 0 Oct 28 376,897 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