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-09T22:01:26.650Z GitHub updated at: 2026-10-09T22:01:27.133Z 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
937,962 Sep 09 930,986 Sep 10 840,699 Sep 11 362,161 Sep 12 337,896 Sep 13 901,198 Sep 14 0 Sep 15 929,965 Sep 16 944,284 Sep 17 848,377 Sep 18 356,586 Sep 19 357,408 Sep 20 848,450 Sep 21 979,072 Sep 22 1,021,934 Sep 23 1,039,197 Sep 24 970,094 Sep 25 449,423 Sep 26 422,088 Sep 27 1,012,279 Sep 28 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 0 Oct 08 21,976,251 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-09T22:01:26.650Z GitHub updated at: 2026-10-09T22:01:27.412Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
0 Sep 09 1 Sep 10 1 Sep 11 4 Sep 12 29 Sep 13 3 Sep 14 0 Sep 15 7 Sep 16 6 Sep 17 7 Sep 18 3 Sep 19 2 Sep 20 3 Sep 21 1 Sep 22 4 Sep 23 3 Sep 24 7 Sep 25 23 Sep 26 8 Sep 27 16 Sep 28 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 0 Oct 08 258 Last 30 days NPM updated at: 2026-10-09T22:01:26.650Z GitHub updated at: 2026-10-09T22:01:27.321Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
2,241 Sep 09 1,747 Sep 10 2,275 Sep 11 555 Sep 12 295 Sep 13 2,235 Sep 14 0 Sep 15 3,031 Sep 16 1,909 Sep 17 2,285 Sep 18 255 Sep 19 328 Sep 20 2,768 Sep 21 2,331 Sep 22 2,763 Sep 23 2,914 Sep 24 1,941 Sep 25 218 Sep 26 299 Sep 27 1,954 Sep 28 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 0 Oct 08 49,499 Last 30 days GitHub Action to deploy to Clever Cloud
Security & Encryption NPM updated at: 2026-10-09T22:01:26.650Z GitHub updated at: 2026-10-09T22:01:27.349Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
18 Sep 09 18 Sep 10 6 Sep 11 2 Sep 12 13 Sep 13 7 Sep 14 0 Sep 15 9 Sep 16 14 Sep 17 12 Sep 18 2 Sep 19 4 Sep 20 12 Sep 21 4 Sep 22 23 Sep 23 13 Sep 24 22 Sep 25 9 Sep 26 4 Sep 27 5 Sep 28 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 0 Oct 08 276 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-09T22:01:26.650Z GitHub updated at: 2026-10-09T22:01:27.347Z 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,271 Sep 09 30,790 Sep 10 23,441 Sep 11 8,119 Sep 12 4,832 Sep 13 15,352 Sep 14 0 Sep 15 20,762 Sep 16 29,560 Sep 17 16,964 Sep 18 5,077 Sep 19 3,388 Sep 20 17,070 Sep 21 22,132 Sep 22 21,426 Sep 23 25,330 Sep 24 23,957 Sep 25 7,345 Sep 26 5,958 Sep 27 23,086 Sep 28 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 0 Oct 08 500,731 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-09T22:01:26.650Z GitHub updated at: 2026-10-09T22:01:27.249Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
117 Sep 09 276 Sep 10 111 Sep 11 68 Sep 12 161 Sep 13 397 Sep 14 0 Sep 15 251 Sep 16 167 Sep 17 167 Sep 18 213 Sep 19 231 Sep 20 83 Sep 21 146 Sep 22 344 Sep 23 292 Sep 24 172 Sep 25 782 Sep 26 491 Sep 27 630 Sep 28 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 0 Oct 08 7,428 Last 30 days NPM updated at: 2026-10-09T22:01:26.650Z GitHub updated at: 2026-10-09T22:01:27.486Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
0 Sep 09 1 Sep 10 0 Sep 11 2 Sep 12 11 Sep 13 0 Sep 14 0 Sep 15 3 Sep 16 3 Sep 17 2 Sep 18 0 Sep 19 3 Sep 20 1 Sep 21 4 Sep 22 1 Sep 23 2 Sep 24 3 Sep 25 2 Sep 26 4 Sep 27 0 Sep 28 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 0 Oct 08 97 Last 30 days NPM updated at: 2026-10-09T22:01:26.650Z GitHub updated at: 2026-10-09T22:01:27.253Z 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
11 Sep 09 67 Sep 10 22 Sep 11 31 Sep 12 11 Sep 13 25 Sep 14 0 Sep 15 9 Sep 16 52 Sep 17 75 Sep 18 49 Sep 19 204 Sep 20 127 Sep 21 21 Sep 22 11 Sep 23 17 Sep 24 16 Sep 25 7 Sep 26 8 Sep 27 17 Sep 28 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 0 Oct 08 984 Last 30 days Miscellaneous NPM updated at: 2026-10-09T22:01:26.650Z GitHub updated at: 2026-10-09T22:01:27.323Z 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,349 Sep 09 29,467 Sep 10 22,569 Sep 11 8,041 Sep 12 4,890 Sep 13 15,322 Sep 14 0 Sep 15 20,769 Sep 16 29,572 Sep 17 16,964 Sep 18 5,169 Sep 19 3,400 Sep 20 16,490 Sep 21 21,411 Sep 22 20,562 Sep 23 23,433 Sep 24 21,772 Sep 25 7,090 Sep 26 5,912 Sep 27 22,252 Sep 28 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 0 Oct 08 482,465 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