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-02-08T21:39:34.489Z GitHub updated at: 2026-02-08T21:39:33.064Z 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
4,557 09 Jan 1,003 10 Jan 897 11 Jan 5,116 12 Jan 6,527 13 Jan 6,743 14 Jan 6,379 15 Jan 6,704 16 Jan 1,422 17 Jan 1,372 18 Jan 4,064 19 Jan 6,498 20 Jan 5,681 21 Jan 6,363 22 Jan 5,286 23 Jan 1,421 24 Jan 925 25 Jan 6,703 26 Jan 6,992 27 Jan 6,855 28 Jan 5,891 29 Jan 5,655 30 Jan 985 31 Jan 1,543 01 Feb 5,093 02 Feb 7,230 03 Feb 6,562 04 Feb 7,729 05 Feb 7,266 06 Feb 0 07 Feb 139,462 Last 30 days
NPM updated at: 2026-02-08T21:39:34.502Z GitHub updated at: 2026-02-08T21:39:34.363Z 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
226,722 09 Jan 76,319 10 Jan 69,775 11 Jan 241,476 12 Jan 273,189 13 Jan 274,971 14 Jan 274,530 15 Jan 247,372 16 Jan 76,766 17 Jan 73,466 18 Jan 231,642 19 Jan 277,329 20 Jan 285,491 21 Jan 282,469 22 Jan 260,946 23 Jan 90,759 24 Jan 84,617 25 Jan 285,340 26 Jan 323,105 27 Jan 323,617 28 Jan 308,050 29 Jan 280,350 30 Jan 89,353 31 Jan 87,795 01 Feb 272,959 02 Feb 326,359 03 Feb 312,934 04 Feb 314,962 05 Feb 291,046 06 Feb 0 07 Feb 6,563,709 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-02-08T21:39:34.504Z GitHub updated at: 2026-02-08T21:39:34.447Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
0 09 Jan 0 10 Jan 0 11 Jan 0 12 Jan 0 13 Jan 1 14 Jan 0 15 Jan 1 16 Jan 0 17 Jan 0 18 Jan 1 19 Jan 1 20 Jan 2 21 Jan 0 22 Jan 0 23 Jan 2 24 Jan 1 25 Jan 2 26 Jan 4 27 Jan 3 28 Jan 2 29 Jan 2 30 Jan 0 31 Jan 2 01 Feb 12 02 Feb 7 03 Feb 5 04 Feb 4 05 Feb 0 06 Feb 0 07 Feb 52 Last 30 days
NPM updated at: 2026-02-08T21:39:34.505Z GitHub updated at: 2026-02-08T21:39:34.463Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
1,002 09 Jan 276 10 Jan 193 11 Jan 1,082 12 Jan 1,274 13 Jan 1,392 14 Jan 1,181 15 Jan 1,243 16 Jan 191 17 Jan 377 18 Jan 1,126 19 Jan 1,320 20 Jan 1,486 21 Jan 1,642 22 Jan 1,049 23 Jan 230 24 Jan 202 25 Jan 1,219 26 Jan 1,209 27 Jan 1,180 28 Jan 1,162 29 Jan 1,070 30 Jan 143 31 Jan 219 01 Feb 1,240 02 Feb 1,258 03 Feb 1,346 04 Feb 985 05 Feb 926 06 Feb 0 07 Feb 27,223 Last 30 days
GitHub Action to deploy to Clever Cloud
Security & Encryption
NPM updated at: 2026-02-08T21:39:34.507Z GitHub updated at: 2026-02-08T21:39:34.449Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
2 09 Jan 0 10 Jan 0 11 Jan 5 12 Jan 2 13 Jan 7 14 Jan 5 15 Jan 8 16 Jan 0 17 Jan 0 18 Jan 9 19 Jan 11 20 Jan 4 21 Jan 4 22 Jan 39 23 Jan 0 24 Jan 0 25 Jan 10 26 Jan 17 27 Jan 4 28 Jan 18 29 Jan 4 30 Jan 0 31 Jan 3 01 Feb 36 02 Feb 25 03 Feb 31 04 Feb 14 05 Feb 8 06 Feb 0 07 Feb 266 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-02-08T21:39:34.530Z GitHub updated at: 2026-02-08T21:39:34.448Z 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
5,624 09 Jan 1,403 10 Jan 1,564 11 Jan 5,256 12 Jan 7,276 13 Jan 7,674 14 Jan 7,599 15 Jan 6,031 16 Jan 1,916 17 Jan 1,470 18 Jan 6,193 19 Jan 6,643 20 Jan 7,121 21 Jan 7,841 22 Jan 7,159 23 Jan 1,563 24 Jan 2,141 25 Jan 6,635 26 Jan 7,312 27 Jan 7,168 28 Jan 8,603 29 Jan 7,889 30 Jan 1,981 31 Jan 1,789 01 Feb 6,059 02 Feb 7,654 03 Feb 7,019 04 Feb 7,788 05 Feb 6,964 06 Feb 0 07 Feb 161,335 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-02-08T21:39:34.563Z GitHub updated at: 2026-02-08T21:39:34.465Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
97 09 Jan 69 10 Jan 74 11 Jan 212 12 Jan 190 13 Jan 126 14 Jan 156 15 Jan 92 16 Jan 58 17 Jan 120 18 Jan 158 19 Jan 221 20 Jan 196 21 Jan 184 22 Jan 98 23 Jan 58 24 Jan 95 25 Jan 109 26 Jan 2,974 27 Jan 7,319 28 Jan 181 29 Jan 96 30 Jan 49 31 Jan 121 01 Feb 277 02 Feb 178 03 Feb 239 04 Feb 245 05 Feb 109 06 Feb 0 07 Feb 14,101 Last 30 days
NPM updated at: 2026-02-08T21:39:34.565Z GitHub updated at: 2026-02-08T21:39:34.466Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
0 09 Jan 0 10 Jan 0 11 Jan 1 12 Jan 0 13 Jan 0 14 Jan 0 15 Jan 0 16 Jan 0 17 Jan 0 18 Jan 1 19 Jan 0 20 Jan 0 21 Jan 0 22 Jan 0 23 Jan 1 24 Jan 0 25 Jan 0 26 Jan 0 27 Jan 0 28 Jan 0 29 Jan 1 30 Jan 0 31 Jan 0 01 Feb 0 02 Feb 1 03 Feb 2 04 Feb 2 05 Feb 0 06 Feb 0 07 Feb 9 Last 30 days
NPM updated at: 2026-02-08T21:39:34.564Z GitHub updated at: 2026-02-08T21:39:34.528Z 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
6 09 Jan 7 10 Jan 2 11 Jan 13 12 Jan 14 13 Jan 23 14 Jan 30 15 Jan 20 16 Jan 3 17 Jan 2 18 Jan 12 19 Jan 27 20 Jan 62 21 Jan 68 22 Jan 46 23 Jan 16 24 Jan 11 25 Jan 61 26 Jan 118 27 Jan 66 28 Jan 76 29 Jan 80 30 Jan 14 31 Jan 10 01 Feb 91 02 Feb 57 03 Feb 99 04 Feb 31 05 Feb 130 06 Feb 0 07 Feb 1,195 Last 30 days
Miscellaneous
NPM updated at: 2026-02-08T21:39:34.567Z GitHub updated at: 2026-02-08T21:39:34.528Z 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
5,613 09 Jan 1,445 10 Jan 1,583 11 Jan 5,199 12 Jan 7,261 13 Jan 7,642 14 Jan 7,605 15 Jan 6,065 16 Jan 1,923 17 Jan 1,473 18 Jan 6,180 19 Jan 6,604 20 Jan 7,048 21 Jan 7,810 22 Jan 7,138 23 Jan 1,509 24 Jan 2,123 25 Jan 6,596 26 Jan 7,311 27 Jan 7,157 28 Jan 8,600 29 Jan 7,843 30 Jan 1,968 31 Jan 1,790 01 Feb 6,091 02 Feb 7,640 03 Feb 7,031 04 Feb 7,804 05 Feb 6,968 06 Feb 0 07 Feb 161,020 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