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-05-20T23:52:28.914Z GitHub updated at: 2026-05-20T23:52:29.689Z 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
410,476 Apr 20 447,935 Apr 21 459,311 Apr 22 446,240 Apr 23 445,664 Apr 24 168,668 Apr 25 183,062 Apr 26 487,677 Apr 27 472,108 Apr 28 476,701 Apr 29 448,246 Apr 30 316,615 May 01 140,382 May 02 134,874 May 03 403,259 May 04 452,967 May 05 475,329 May 06 498,609 May 07 434,480 May 08 0 May 09 159,779 May 10 497,161 May 11 519,375 May 12 521,497 May 13 478,451 May 14 453,724 May 15 173,619 May 16 173,810 May 17 509,392 May 18 532,300 May 19 11,321,711 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-05-20T23:52:28.914Z GitHub updated at: 2026-05-20T23:52:29.894Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
0 Apr 20 0 Apr 21 0 Apr 22 6 Apr 23 15 Apr 24 0 Apr 25 3 Apr 26 3 Apr 27 20 Apr 28 59 Apr 29 12 Apr 30 3 May 01 0 May 02 0 May 03 0 May 04 38 May 05 1 May 06 0 May 07 0 May 08 0 May 09 6 May 10 1 May 11 3 May 12 0 May 13 3 May 14 1 May 15 6 May 16 0 May 17 1 May 18 0 May 19 181 Last 30 days NPM updated at: 2026-05-20T23:52:28.915Z GitHub updated at: 2026-05-20T23:52:29.827Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
1,214 Apr 20 1,358 Apr 21 1,322 Apr 22 1,225 Apr 23 922 Apr 24 247 Apr 25 193 Apr 26 1,192 Apr 27 1,081 Apr 28 1,052 Apr 29 1,555 Apr 30 682 May 01 316 May 02 362 May 03 838 May 04 1,350 May 05 1,487 May 06 1,126 May 07 920 May 08 271 May 09 275 May 10 1,214 May 11 1,434 May 12 0 May 13 1,000 May 14 1,267 May 15 290 May 16 287 May 17 1,266 May 18 1,419 May 19 27,165 Last 30 days GitHub Action to deploy to Clever Cloud
Security & Encryption NPM updated at: 2026-05-20T23:52:28.915Z GitHub updated at: 2026-05-20T23:52:29.028Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
35 Apr 20 54 Apr 21 50 Apr 22 31 Apr 23 0 Apr 24 77 Apr 25 16 Apr 26 98 Apr 27 42 Apr 28 82 Apr 29 14 Apr 30 24 May 01 20 May 02 13 May 03 27 May 04 45 May 05 7 May 06 46 May 07 20 May 08 21 May 09 14 May 10 39 May 11 21 May 12 0 May 13 56 May 14 52 May 15 27 May 16 19 May 17 92 May 18 19 May 19 1,061 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-05-20T23:52:28.915Z GitHub updated at: 2026-05-20T23:52:29.624Z 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
9,015 Apr 20 9,302 Apr 21 8,208 Apr 22 9,810 Apr 23 0 Apr 24 3,004 Apr 25 2,748 Apr 26 9,887 Apr 27 9,354 Apr 28 10,832 Apr 29 10,563 Apr 30 8,206 May 01 2,439 May 02 3,219 May 03 8,599 May 04 12,519 May 05 10,174 May 06 12,840 May 07 9,905 May 08 0 May 09 2,997 May 10 11,241 May 11 14,321 May 12 12,912 May 13 11,690 May 14 13,805 May 15 4,039 May 16 3,031 May 17 10,402 May 18 12,604 May 19 247,666 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-05-20T23:52:28.915Z GitHub updated at: 2026-05-20T23:52:29.632Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
217 Apr 20 161 Apr 21 138 Apr 22 134 Apr 23 76 Apr 24 40 Apr 25 110 Apr 26 239 Apr 27 310 Apr 28 397 Apr 29 439 Apr 30 413 May 01 232 May 02 283 May 03 414 May 04 410 May 05 484 May 06 218 May 07 138 May 08 194 May 09 257 May 10 348 May 11 274 May 12 404 May 13 419 May 14 254 May 15 131 May 16 250 May 17 297 May 18 237 May 19 7,918 Last 30 days NPM updated at: 2026-05-20T23:52:28.915Z GitHub updated at: 2026-05-20T23:52:29.892Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
0 Apr 20 0 Apr 21 5 Apr 22 2 Apr 23 2 Apr 24 0 Apr 25 0 Apr 26 12 Apr 27 9 Apr 28 23 Apr 29 2 Apr 30 11 May 01 0 May 02 1 May 03 3 May 04 0 May 05 2 May 06 1 May 07 0 May 08 8 May 09 4 May 10 4 May 11 1 May 12 14 May 13 2 May 14 19 May 15 8 May 16 0 May 17 0 May 18 0 May 19 133 Last 30 days NPM updated at: 2026-05-20T23:52:28.915Z GitHub updated at: 2026-05-20T23:52:29.629Z 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
139 Apr 20 178 Apr 21 166 Apr 22 122 Apr 23 116 Apr 24 83 Apr 25 18 Apr 26 90 Apr 27 191 Apr 28 95 Apr 29 182 Apr 30 38 May 01 17 May 02 73 May 03 49 May 04 151 May 05 82 May 06 94 May 07 166 May 08 16 May 09 22 May 10 413 May 11 155 May 12 183 May 13 28 May 14 107 May 15 4 May 16 13 May 17 172 May 18 51 May 19 3,214 Last 30 days Miscellaneous NPM updated at: 2026-05-20T23:52:28.915Z GitHub updated at: 2026-05-20T23:52:29.777Z 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
9,146 Apr 20 9,181 Apr 21 8,245 Apr 22 9,749 Apr 23 8,487 Apr 24 3,038 Apr 25 2,670 Apr 26 9,679 Apr 27 9,235 Apr 28 10,179 Apr 29 9,682 Apr 30 7,661 May 01 2,342 May 02 3,188 May 03 8,393 May 04 11,621 May 05 9,372 May 06 11,550 May 07 9,331 May 08 3,806 May 09 2,988 May 10 10,622 May 11 13,328 May 12 11,935 May 13 11,147 May 14 13,461 May 15 4,006 May 16 3,056 May 17 10,380 May 18 12,382 May 19 249,860 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