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-03-01T01:32:41.451Z GitHub updated at: 2026-03-01T01:32:41.289Z 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,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 1,579 07 Feb 918 08 Feb 5,797 09 Feb 7,811 10 Feb 8,220 11 Feb 7,475 12 Feb 7,948 13 Feb 1,781 14 Feb 840 15 Feb 4,788 16 Feb 5,889 17 Feb 6,758 18 Feb 7,306 19 Feb 7,024 20 Feb 2,110 21 Feb 971 22 Feb 6,963 23 Feb 6,748 24 Feb 6,989 25 Feb 7,634 26 Feb 6,425 27 Feb 0 28 Feb 154,037 Last 30 days
NPM updated at: 2026-03-01T01:32:41.467Z GitHub updated at: 2026-03-01T01:32:41.291Z 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
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 102,519 07 Feb 96,209 08 Feb 278,457 09 Feb 319,036 10 Feb 304,173 11 Feb 303,975 12 Feb 258,064 13 Feb 80,317 14 Feb 80,113 15 Feb 221,528 16 Feb 270,252 17 Feb 296,695 18 Feb 293,012 19 Feb 267,439 20 Feb 95,610 21 Feb 91,406 22 Feb 290,562 23 Feb 333,008 24 Feb 340,975 25 Feb 326,550 26 Feb 301,034 27 Feb 0 28 Feb 6,926,692 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-03-01T01:32:41.468Z GitHub updated at: 2026-03-01T01:32:41.292Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
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 2 08 Feb 3 09 Feb 3 10 Feb 2 11 Feb 0 12 Feb 0 13 Feb 0 14 Feb 5 15 Feb 35 16 Feb 4 17 Feb 3 18 Feb 5 19 Feb 4 20 Feb 1 21 Feb 2 22 Feb 28 23 Feb 0 24 Feb 0 25 Feb 1 26 Feb 2 27 Feb 0 28 Feb 132 Last 30 days
NPM updated at: 2026-03-01T01:32:41.470Z GitHub updated at: 2026-03-01T01:32:41.290Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
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 169 07 Feb 191 08 Feb 1,216 09 Feb 1,233 10 Feb 1,277 11 Feb 1,310 12 Feb 933 13 Feb 197 14 Feb 150 15 Feb 1,100 16 Feb 867 17 Feb 1,171 18 Feb 1,289 19 Feb 980 20 Feb 285 21 Feb 295 22 Feb 1,296 23 Feb 1,137 24 Feb 1,306 25 Feb 1,463 26 Feb 1,551 27 Feb 0 28 Feb 26,603 Last 30 days
GitHub Action to deploy to Clever Cloud
Security & Encryption
NPM updated at: 2026-03-01T01:32:41.472Z GitHub updated at: 2026-03-01T01:32:40.126Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
4 30 Jan 0 31 Jan 3 01 Feb 36 02 Feb 25 03 Feb 31 04 Feb 14 05 Feb 8 06 Feb 1 07 Feb 0 08 Feb 40 09 Feb 6 10 Feb 37 11 Feb 15 12 Feb 25 13 Feb 1 14 Feb 1 15 Feb 5 16 Feb 13 17 Feb 23 18 Feb 40 19 Feb 20 20 Feb 2 21 Feb 43 22 Feb 98 23 Feb 29 24 Feb 55 25 Feb 48 26 Feb 12 27 Feb 0 28 Feb 635 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-03-01T01:32:41.486Z GitHub updated at: 2026-03-01T01:32:41.291Z 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
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 1,406 07 Feb 2,987 08 Feb 5,540 09 Feb 7,726 10 Feb 6,632 11 Feb 8,407 12 Feb 6,576 13 Feb 3,448 14 Feb 2,020 15 Feb 5,691 16 Feb 7,852 17 Feb 7,189 18 Feb 7,506 19 Feb 6,556 20 Feb 1,733 21 Feb 1,820 22 Feb 5,105 23 Feb 9,183 24 Feb 8,008 25 Feb 7,499 26 Feb 6,264 27 Feb 0 28 Feb 166,291 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-03-01T01:32:41.526Z GitHub updated at: 2026-03-01T01:32:41.306Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
96 30 Jan 49 31 Jan 121 01 Feb 277 02 Feb 178 03 Feb 239 04 Feb 245 05 Feb 109 06 Feb 124 07 Feb 157 08 Feb 251 09 Feb 235 10 Feb 208 11 Feb 204 12 Feb 144 13 Feb 92 14 Feb 182 15 Feb 261 16 Feb 173 17 Feb 235 18 Feb 309 19 Feb 189 20 Feb 90 21 Feb 125 22 Feb 271 23 Feb 215 24 Feb 323 25 Feb 168 26 Feb 126 27 Feb 0 28 Feb 5,396 Last 30 days
NPM updated at: 2026-03-01T01:32:41.547Z GitHub updated at: 2026-03-01T01:32:41.390Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
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 0 08 Feb 1 09 Feb 0 10 Feb 0 11 Feb 0 12 Feb 0 13 Feb 0 14 Feb 0 15 Feb 12 16 Feb 1 17 Feb 0 18 Feb 1 19 Feb 1 20 Feb 0 21 Feb 1 22 Feb 0 23 Feb 2 24 Feb 1 25 Feb 0 26 Feb 2 27 Feb 0 28 Feb 28 Last 30 days
NPM updated at: 2026-03-01T01:32:41.549Z GitHub updated at: 2026-03-01T01:32:41.391Z 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
80 30 Jan 14 31 Jan 10 01 Feb 91 02 Feb 57 03 Feb 99 04 Feb 31 05 Feb 130 06 Feb 24 07 Feb 13 08 Feb 119 09 Feb 60 10 Feb 160 11 Feb 146 12 Feb 242 13 Feb 3 14 Feb 18 15 Feb 192 16 Feb 156 17 Feb 120 18 Feb 124 19 Feb 122 20 Feb 8 21 Feb 6 22 Feb 171 23 Feb 97 24 Feb 162 25 Feb 115 26 Feb 46 27 Feb 0 28 Feb 2,616 Last 30 days
Miscellaneous
NPM updated at: 2026-03-01T01:32:41.550Z GitHub updated at: 2026-03-01T01:32:41.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
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 1,400 07 Feb 2,981 08 Feb 5,565 09 Feb 7,704 10 Feb 6,655 11 Feb 8,477 12 Feb 6,642 13 Feb 3,458 14 Feb 2,013 15 Feb 5,695 16 Feb 7,789 17 Feb 7,198 18 Feb 7,572 19 Feb 6,579 20 Feb 1,726 21 Feb 1,869 22 Feb 5,205 23 Feb 9,296 24 Feb 8,017 25 Feb 7,605 26 Feb 6,279 27 Feb 0 28 Feb 166,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