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: 2025-09-17T00:13:33.016Z GitHub updated at: 2025-09-17T00:13:32.136Z 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
5,579 18 Aug 6,761 19 Aug 6,398 20 Aug 6,042 21 Aug 4,824 22 Aug 1,152 23 Aug 1,152 24 Aug 5,078 25 Aug 5,601 26 Aug 5,996 27 Aug 6,022 28 Aug 4,558 29 Aug 1,341 30 Aug 1,202 31 Aug 4,046 01 Sep 4,977 02 Sep 6,520 03 Sep 6,555 04 Sep 5,593 05 Sep 1,576 06 Sep 1,156 07 Sep 5,556 08 Sep 6,259 09 Sep 5,802 10 Sep 6,184 11 Sep 5,487 12 Sep 1,222 13 Sep 939 14 Sep 6,302 15 Sep 0 16 Sep 129,880 Last 30 days
NPM updated at: 2025-09-17T00:13:34.528Z GitHub updated at: 2025-09-17T00:13:32.093Z 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
122,797 18 Aug 136,042 19 Aug 135,546 20 Aug 135,239 21 Aug 123,943 22 Aug 29,972 23 Aug 32,350 24 Aug 133,212 25 Aug 146,477 26 Aug 158,315 27 Aug 147,839 28 Aug 126,221 29 Aug 41,438 30 Aug 38,145 31 Aug 110,317 01 Sep 139,460 02 Sep 143,041 03 Sep 151,182 04 Sep 129,056 05 Sep 41,061 06 Sep 34,801 07 Sep 147,616 08 Sep 150,478 09 Sep 148,018 10 Sep 153,216 11 Sep 141,921 12 Sep 38,560 13 Sep 41,739 14 Sep 151,413 15 Sep 0 16 Sep 3,229,415 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: 2025-09-17T00:13:34.303Z GitHub updated at: 2025-09-17T00:13:32.286Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
0 18 Aug 7 19 Aug 0 20 Aug 2 21 Aug 0 22 Aug 2 23 Aug 0 24 Aug 0 25 Aug 0 26 Aug 0 27 Aug 0 28 Aug 2 29 Aug 0 30 Aug 10 31 Aug 0 01 Sep 0 02 Sep 0 03 Sep 3 04 Sep 0 05 Sep 0 06 Sep 2 07 Sep 2 08 Sep 2 09 Sep 5 10 Sep 2 11 Sep 0 12 Sep 0 13 Sep 0 14 Sep 16 15 Sep 0 16 Sep 55 Last 30 days
NPM updated at: 2025-09-17T00:13:34.504Z GitHub updated at: 2025-09-17T00:13:32.191Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
906 18 Aug 1,146 19 Aug 927 20 Aug 1,129 21 Aug 915 22 Aug 89 23 Aug 85 24 Aug 968 25 Aug 1,132 26 Aug 938 27 Aug 876 28 Aug 828 29 Aug 143 30 Aug 126 31 Aug 711 01 Sep 1,175 02 Sep 1,004 03 Sep 1,119 04 Sep 941 05 Sep 236 06 Sep 104 07 Sep 1,300 08 Sep 1,118 09 Sep 1,140 10 Sep 1,104 11 Sep 989 12 Sep 97 13 Sep 121 14 Sep 1,193 15 Sep 0 16 Sep 22,560 Last 30 days
GitHub Action to deploy to Clever Cloud
Security & Encryption
NPM updated at: 2025-09-17T00:13:36.353Z GitHub updated at: 2025-09-17T00:13:32.333Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
17 18 Aug 10 19 Aug 26 20 Aug 6 21 Aug 33 22 Aug 0 23 Aug 4 24 Aug 12 25 Aug 18 26 Aug 14 27 Aug 23 28 Aug 16 29 Aug 94 30 Aug 52 31 Aug 21 01 Sep 7 02 Sep 2 03 Sep 7 04 Sep 28 05 Sep 3 06 Sep 3 07 Sep 9 08 Sep 41 09 Sep 40 10 Sep 25 11 Sep 7 12 Sep 3 13 Sep 3 14 Sep 18 15 Sep 0 16 Sep 542 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: 2025-09-17T00:13:35.148Z GitHub updated at: 2025-09-17T00:13:32.209Z 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
4,739 18 Aug 5,545 19 Aug 5,155 20 Aug 4,849 21 Aug 4,143 22 Aug 1,182 23 Aug 1,304 24 Aug 4,566 25 Aug 4,336 26 Aug 4,087 27 Aug 4,363 28 Aug 3,355 29 Aug 656 30 Aug 1,796 31 Aug 3,044 01 Sep 4,337 02 Sep 4,028 03 Sep 3,708 04 Sep 3,620 05 Sep 972 06 Sep 1,023 07 Sep 4,230 08 Sep 3,535 09 Sep 4,354 10 Sep 4,432 11 Sep 3,607 12 Sep 1,003 13 Sep 878 14 Sep 3,713 15 Sep 0 16 Sep 96,560 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: 2025-09-17T00:13:32.747Z GitHub updated at: 2025-09-17T00:13:32.287Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
217 18 Aug 169 19 Aug 310 20 Aug 296 21 Aug 215 22 Aug 144 23 Aug 70 24 Aug 132 25 Aug 222 26 Aug 139 27 Aug 161 28 Aug 332 29 Aug 53 30 Aug 68 31 Aug 242 01 Sep 200 02 Sep 218 03 Sep 189 04 Sep 114 05 Sep 27 06 Sep 176 07 Sep 177 08 Sep 444 09 Sep 316 10 Sep 278 11 Sep 192 12 Sep 56 13 Sep 100 14 Sep 272 15 Sep 0 16 Sep 5,529 Last 30 days
NPM updated at: 2025-09-17T00:13:35.383Z GitHub updated at: 2025-09-17T00:13:32.276Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
0 18 Aug 0 19 Aug 0 20 Aug 0 21 Aug 0 22 Aug 0 23 Aug 0 24 Aug 0 25 Aug 1 26 Aug 11 27 Aug 0 28 Aug 0 29 Aug 0 30 Aug 0 31 Aug 0 01 Sep 0 02 Sep 0 03 Sep 1 04 Sep 0 05 Sep 0 06 Sep 0 07 Sep 1 08 Sep 3 09 Sep 8 10 Sep 3 11 Sep 0 12 Sep 0 13 Sep 2 14 Sep 1 15 Sep 0 16 Sep 31 Last 30 days
NPM updated at: 2025-09-17T00:13:32.310Z GitHub updated at: 2025-09-17T00:13:32.370Z 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
47 18 Aug 29 19 Aug 62 20 Aug 20 21 Aug 31 22 Aug 1 23 Aug 2 24 Aug 14 25 Aug 34 26 Aug 18 27 Aug 32 28 Aug 15 29 Aug 5 30 Aug 11 31 Aug 32 01 Sep 14 02 Sep 22 03 Sep 17 04 Sep 31 05 Sep 0 06 Sep 17 07 Sep 32 08 Sep 30 09 Sep 23 10 Sep 18 11 Sep 18 12 Sep 3 13 Sep 4 14 Sep 32 15 Sep 0 16 Sep 614 Last 30 days
Miscellaneous
NPM updated at: 2025-09-17T00:13:33.429Z GitHub updated at: 2025-09-17T00:13:32.392Z 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
4,748 18 Aug 5,517 19 Aug 5,150 20 Aug 4,820 21 Aug 4,136 22 Aug 1,154 23 Aug 1,299 24 Aug 4,546 25 Aug 4,316 26 Aug 4,089 27 Aug 4,364 28 Aug 3,319 29 Aug 751 30 Aug 1,855 31 Aug 3,067 01 Sep 4,316 02 Sep 3,949 03 Sep 3,678 04 Sep 3,614 05 Sep 972 06 Sep 1,023 07 Sep 4,209 08 Sep 3,559 09 Sep 4,386 10 Sep 4,418 11 Sep 3,564 12 Sep 1,005 13 Sep 882 14 Sep 3,671 15 Sep 0 16 Sep 96,377 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.
Note: my earliest availability is September 2025 .
Contact meEdit this page on GitHub