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-10T10:36:38.650Z GitHub updated at: 2026-04-10T10:36:38.605Z 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,587 11 Mar 6,739 12 Mar 6,843 13 Mar 2,064 14 Mar 1,673 15 Mar 7,498 16 Mar 7,958 17 Mar 8,821 18 Mar 7,794 19 Mar 6,208 20 Mar 1,675 21 Mar 1,132 22 Mar 6,616 23 Mar 6,683 24 Mar 6,510 25 Mar 6,933 26 Mar 8,211 27 Mar 2,026 28 Mar 1,518 29 Mar 9,838 30 Mar 8,698 31 Mar 8,088 01 Apr 7,742 02 Apr 5,014 03 Apr 1,676 04 Apr 2,113 05 Apr 7,528 06 Apr 10,697 07 Apr 9,332 08 Apr 0 09 Apr 175,215 Last 30 days
NPM updated at: 2026-04-10T10:36:38.652Z GitHub updated at: 2026-04-10T10:36:38.602Z 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
382,972 11 Mar 370,509 12 Mar 332,726 13 Mar 115,911 14 Mar 116,864 15 Mar 373,302 16 Mar 389,880 17 Mar 394,126 18 Mar 383,598 19 Mar 332,380 20 Mar 123,848 21 Mar 112,816 22 Mar 364,439 23 Mar 385,714 24 Mar 380,241 25 Mar 376,947 26 Mar 344,367 27 Mar 127,543 28 Mar 120,883 29 Mar 370,101 30 Mar 392,279 31 Mar 402,176 01 Apr 389,318 02 Apr 287,613 03 Apr 128,657 04 Apr 118,063 05 Apr 309,665 06 Apr 432,341 07 Apr 426,002 08 Apr 0 09 Apr 8,785,281 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-10T10:36:38.663Z GitHub updated at: 2026-04-10T10:36:38.682Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
0 11 Mar 1 12 Mar 1 13 Mar 0 14 Mar 1 15 Mar 0 16 Mar 1 17 Mar 0 18 Mar 3 19 Mar 0 20 Mar 5 21 Mar 0 22 Mar 1 23 Mar 6 24 Mar 0 25 Mar 0 26 Mar 2 27 Mar 10 28 Mar 16 29 Mar 41 30 Mar 0 31 Mar 0 01 Apr 0 02 Apr 0 03 Apr 18 04 Apr 0 05 Apr 5 06 Apr 2 07 Apr 3 08 Apr 0 09 Apr 116 Last 30 days
NPM updated at: 2026-04-10T10:36:38.707Z GitHub updated at: 2026-04-10T10:36:38.604Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
1,171 11 Mar 1,379 12 Mar 1,168 13 Mar 251 14 Mar 182 15 Mar 1,254 16 Mar 1,021 17 Mar 1,153 18 Mar 1,182 19 Mar 944 20 Mar 181 21 Mar 182 22 Mar 1,057 23 Mar 1,258 24 Mar 1,138 25 Mar 1,012 26 Mar 974 27 Mar 118 28 Mar 196 29 Mar 1,002 30 Mar 1,393 31 Mar 1,452 01 Apr 1,201 02 Apr 630 03 Apr 374 04 Apr 205 05 Apr 820 06 Apr 1,304 07 Apr 1,275 08 Apr 0 09 Apr 25,477 Last 30 days
GitHub Action to deploy to Clever Cloud
Security & Encryption
NPM updated at: 2026-04-10T10:36:38.688Z GitHub updated at: 2026-04-10T10:36:38.685Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
43 11 Mar 19 12 Mar 19 13 Mar 19 14 Mar 15 15 Mar 40 16 Mar 52 17 Mar 36 18 Mar 16 19 Mar 16 20 Mar 0 21 Mar 11 22 Mar 9 23 Mar 7 24 Mar 46 25 Mar 31 26 Mar 26 27 Mar 24 28 Mar 5 29 Mar 19 30 Mar 22 31 Mar 21 01 Apr 34 02 Apr 30 03 Apr 1 04 Apr 14 05 Apr 61 06 Apr 26 07 Apr 34 08 Apr 0 09 Apr 696 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-10T10:36:38.704Z GitHub updated at: 2026-04-10T10:36:38.668Z 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,510 11 Mar 7,430 12 Mar 6,494 13 Mar 1,816 14 Mar 2,072 15 Mar 6,713 16 Mar 8,317 17 Mar 7,512 18 Mar 7,987 19 Mar 6,624 20 Mar 2,535 21 Mar 2,371 22 Mar 6,651 23 Mar 8,465 24 Mar 7,234 25 Mar 7,423 26 Mar 7,053 27 Mar 2,433 28 Mar 2,791 29 Mar 8,985 30 Mar 10,201 31 Mar 8,382 01 Apr 7,607 02 Apr 5,097 03 Apr 1,793 04 Apr 2,189 05 Apr 6,848 06 Apr 9,288 07 Apr 7,682 08 Apr 0 09 Apr 179,503 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-10T10:36:38.706Z GitHub updated at: 2026-04-10T10:36:38.751Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
233 11 Mar 399 12 Mar 147 13 Mar 38 14 Mar 192 15 Mar 233 16 Mar 261 17 Mar 274 18 Mar 120 19 Mar 93 20 Mar 116 21 Mar 354 22 Mar 642 23 Mar 366 24 Mar 214 25 Mar 136 26 Mar 193 27 Mar 61 28 Mar 187 29 Mar 442 30 Mar 205 31 Mar 178 01 Apr 152 02 Apr 89 03 Apr 83 04 Apr 155 05 Apr 178 06 Apr 145 07 Apr 146 08 Apr 0 09 Apr 6,032 Last 30 days
NPM updated at: 2026-04-10T10:36:38.722Z GitHub updated at: 2026-04-10T10:36:38.846Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
1 11 Mar 0 12 Mar 1 13 Mar 1 14 Mar 0 15 Mar 7 16 Mar 1 17 Mar 0 18 Mar 1 19 Mar 0 20 Mar 0 21 Mar 2 22 Mar 0 23 Mar 0 24 Mar 0 25 Mar 1 26 Mar 0 27 Mar 6 28 Mar 0 29 Mar 1 30 Mar 1 31 Mar 0 01 Apr 0 02 Apr 0 03 Apr 1 04 Apr 0 05 Apr 0 06 Apr 0 07 Apr 1 08 Apr 0 09 Apr 25 Last 30 days
NPM updated at: 2026-04-10T10:36:38.710Z GitHub updated at: 2026-04-10T10:36:38.681Z 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
232 11 Mar 255 12 Mar 213 13 Mar 2 14 Mar 4 15 Mar 56 16 Mar 19 17 Mar 87 18 Mar 41 19 Mar 54 20 Mar 6 21 Mar 5 22 Mar 90 23 Mar 78 24 Mar 155 25 Mar 150 26 Mar 74 27 Mar 18 28 Mar 29 29 Mar 31 30 Mar 11 31 Mar 36 01 Apr 35 02 Apr 32 03 Apr 26 04 Apr 3 05 Apr 11 06 Apr 108 07 Apr 247 08 Apr 0 09 Apr 2,108 Last 30 days
Miscellaneous
NPM updated at: 2026-04-10T10:36:38.712Z GitHub updated at: 2026-04-10T10:36:38.763Z 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,531 11 Mar 7,444 12 Mar 6,492 13 Mar 1,819 14 Mar 2,095 15 Mar 6,764 16 Mar 8,447 17 Mar 7,715 18 Mar 8,019 19 Mar 6,661 20 Mar 2,562 21 Mar 2,378 22 Mar 6,755 23 Mar 8,464 24 Mar 7,367 25 Mar 7,502 26 Mar 7,150 27 Mar 2,473 28 Mar 2,795 29 Mar 9,025 30 Mar 10,257 31 Mar 8,438 01 Apr 7,744 02 Apr 5,089 03 Apr 1,789 04 Apr 2,206 05 Apr 6,931 06 Apr 9,410 07 Apr 7,693 08 Apr 0 09 Apr 181,015 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