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-04-12T13:22:13.985Z GitHub updated at: 2026-04-12T13:22:14.269Z 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
332,726 Mar 13 115,911 Mar 14 116,864 Mar 15 373,302 Mar 16 389,880 Mar 17 394,126 Mar 18 383,598 Mar 19 332,380 Mar 20 123,848 Mar 21 112,816 Mar 22 364,439 Mar 23 385,714 Mar 24 380,241 Mar 25 376,947 Mar 26 344,367 Mar 27 127,543 Mar 28 120,883 Mar 29 370,101 Mar 30 392,279 Mar 31 402,176 Apr 01 389,318 Apr 02 287,613 Apr 03 128,657 Apr 04 118,063 Apr 05 309,665 Apr 06 432,341 Apr 07 426,002 Apr 08 425,644 Apr 09 392,620 Apr 10 137,595 Apr 11 8,987,659 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-04-12T13:22:13.985Z GitHub updated at: 2026-04-12T13:22:14.364Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
1 Mar 13 0 Mar 14 1 Mar 15 0 Mar 16 1 Mar 17 0 Mar 18 3 Mar 19 0 Mar 20 5 Mar 21 0 Mar 22 1 Mar 23 6 Mar 24 0 Mar 25 0 Mar 26 2 Mar 27 10 Mar 28 16 Mar 29 41 Mar 30 0 Mar 31 0 Apr 01 0 Apr 02 0 Apr 03 18 Apr 04 0 Apr 05 5 Apr 06 2 Apr 07 3 Apr 08 6 Apr 09 5 Apr 10 16 Apr 11 142 Last 30 days NPM updated at: 2026-04-12T13:22:13.985Z GitHub updated at: 2026-04-12T13:22:14.392Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
1,168 Mar 13 251 Mar 14 182 Mar 15 1,254 Mar 16 1,021 Mar 17 1,153 Mar 18 1,182 Mar 19 944 Mar 20 181 Mar 21 182 Mar 22 1,057 Mar 23 1,258 Mar 24 1,138 Mar 25 1,012 Mar 26 974 Mar 27 118 Mar 28 196 Mar 29 1,002 Mar 30 1,393 Mar 31 1,452 Apr 01 1,201 Apr 02 630 Apr 03 374 Apr 04 205 Apr 05 820 Apr 06 1,304 Apr 07 1,275 Apr 08 1,221 Apr 09 1,007 Apr 10 320 Apr 11 25,475 Last 30 days GitHub Action to deploy to Clever Cloud
Security & Encryption NPM updated at: 2026-04-12T13:22:13.985Z GitHub updated at: 2026-04-12T13:22:14.466Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
19 Mar 13 19 Mar 14 15 Mar 15 40 Mar 16 52 Mar 17 36 Mar 18 16 Mar 19 16 Mar 20 0 Mar 21 11 Mar 22 9 Mar 23 7 Mar 24 46 Mar 25 31 Mar 26 26 Mar 27 24 Mar 28 5 Mar 29 19 Mar 30 22 Mar 31 21 Apr 01 34 Apr 02 30 Apr 03 1 Apr 04 14 Apr 05 61 Apr 06 26 Apr 07 34 Apr 08 55 Apr 09 82 Apr 10 7 Apr 11 778 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-04-12T13:22:13.985Z GitHub updated at: 2026-04-12T13:22:14.288Z 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
6,494 Mar 13 1,816 Mar 14 2,072 Mar 15 6,713 Mar 16 8,317 Mar 17 7,512 Mar 18 7,987 Mar 19 6,624 Mar 20 2,535 Mar 21 2,371 Mar 22 6,651 Mar 23 8,465 Mar 24 7,234 Mar 25 7,423 Mar 26 7,053 Mar 27 2,433 Mar 28 2,791 Mar 29 8,985 Mar 30 10,201 Mar 31 8,382 Apr 01 7,607 Apr 02 5,097 Apr 03 1,793 Apr 04 2,189 Apr 05 6,848 Apr 06 9,288 Apr 07 7,682 Apr 08 7,525 Apr 09 7,012 Apr 10 2,959 Apr 11 180,059 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-04-12T13:22:13.985Z GitHub updated at: 2026-04-12T13:22:14.332Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
147 Mar 13 38 Mar 14 192 Mar 15 233 Mar 16 261 Mar 17 274 Mar 18 120 Mar 19 93 Mar 20 116 Mar 21 354 Mar 22 642 Mar 23 366 Mar 24 214 Mar 25 136 Mar 26 193 Mar 27 61 Mar 28 187 Mar 29 442 Mar 30 205 Mar 31 178 Apr 01 152 Apr 02 89 Apr 03 83 Apr 04 155 Apr 05 178 Apr 06 145 Apr 07 146 Apr 08 291 Apr 09 122 Apr 10 66 Apr 11 5,879 Last 30 days NPM updated at: 2026-04-12T13:22:13.985Z GitHub updated at: 2026-04-12T13:22:14.250Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
1 Mar 13 1 Mar 14 0 Mar 15 7 Mar 16 1 Mar 17 0 Mar 18 1 Mar 19 0 Mar 20 0 Mar 21 2 Mar 22 0 Mar 23 0 Mar 24 0 Mar 25 1 Mar 26 0 Mar 27 6 Mar 28 0 Mar 29 1 Mar 30 1 Mar 31 0 Apr 01 0 Apr 02 0 Apr 03 1 Apr 04 0 Apr 05 0 Apr 06 0 Apr 07 1 Apr 08 10 Apr 09 0 Apr 10 11 Apr 11 45 Last 30 days NPM updated at: 2026-04-12T13:22:13.985Z GitHub updated at: 2026-04-12T13:22:14.350Z 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
213 Mar 13 2 Mar 14 4 Mar 15 56 Mar 16 19 Mar 17 87 Mar 18 41 Mar 19 54 Mar 20 6 Mar 21 5 Mar 22 90 Mar 23 78 Mar 24 155 Mar 25 150 Mar 26 74 Mar 27 18 Mar 28 29 Mar 29 31 Mar 30 11 Mar 31 36 Apr 01 35 Apr 02 32 Apr 03 26 Apr 04 3 Apr 05 11 Apr 06 108 Apr 07 247 Apr 08 246 Apr 09 159 Apr 10 18 Apr 11 2,044 Last 30 days Miscellaneous NPM updated at: 2026-04-12T13:22:13.985Z GitHub updated at: 2026-04-12T13:22:14.377Z 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
6,492 Mar 13 1,819 Mar 14 2,095 Mar 15 6,764 Mar 16 8,447 Mar 17 7,715 Mar 18 8,019 Mar 19 6,661 Mar 20 2,562 Mar 21 2,378 Mar 22 6,755 Mar 23 8,464 Mar 24 7,367 Mar 25 7,502 Mar 26 7,150 Mar 27 2,473 Mar 28 2,795 Mar 29 9,025 Mar 30 10,257 Mar 31 8,438 Apr 01 7,744 Apr 02 5,089 Apr 03 1,789 Apr 04 2,206 Apr 05 6,931 Apr 06 9,410 Apr 07 7,693 Apr 08 7,561 Apr 09 7,107 Apr 10 2,906 Apr 11 181,614 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