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-10-29T16:08:04.600Z GitHub updated at: 2025-10-29T16:08:04.517Z 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,264 29 Sep 7,702 30 Sep 7,410 01 Oct 6,452 02 Oct 4,560 03 Oct 1,191 04 Oct 950 05 Oct 4,442 06 Oct 6,245 07 Oct 5,980 08 Oct 7,038 09 Oct 5,631 10 Oct 839 11 Oct 670 12 Oct 4,526 13 Oct 5,511 14 Oct 6,374 15 Oct 7,644 16 Oct 6,488 17 Oct 1,565 18 Oct 1,687 19 Oct 6,215 20 Oct 0 21 Oct 7,456 22 Oct 5,257 23 Oct 5,560 24 Oct 1,498 25 Oct 741 26 Oct 6,963 27 Oct 7,157 28 Oct 141,016 Last 30 days
NPM updated at: 2025-10-29T16:08:04.602Z GitHub updated at: 2025-10-29T16:08:04.662Z 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
165,821 29 Sep 178,392 30 Sep 171,748 01 Oct 158,350 02 Oct 137,147 03 Oct 43,977 04 Oct 45,943 05 Oct 167,469 06 Oct 175,708 07 Oct 174,230 08 Oct 167,182 09 Oct 154,057 10 Oct 48,161 11 Oct 46,191 12 Oct 152,300 13 Oct 187,142 14 Oct 176,400 15 Oct 182,740 16 Oct 160,382 17 Oct 45,055 18 Oct 0 19 Oct 170,092 20 Oct 195,932 21 Oct 196,042 22 Oct 182,844 23 Oct 156,723 24 Oct 42,392 25 Oct 47,329 26 Oct 186,305 27 Oct 193,136 28 Oct 4,109,190 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-10-29T16:08:04.496Z GitHub updated at: 2025-10-29T16:08:04.536Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
0 29 Sep 0 30 Sep 0 01 Oct 1 02 Oct 53 03 Oct 177 04 Oct 62 05 Oct 0 06 Oct 7 07 Oct 8 08 Oct 5 09 Oct 1 10 Oct 0 11 Oct 0 12 Oct 0 13 Oct 0 14 Oct 1 15 Oct 562 16 Oct 0 17 Oct 109 18 Oct 0 19 Oct 5 20 Oct 40 21 Oct 5 22 Oct 5 23 Oct 7 24 Oct 9 25 Oct 5 26 Oct 0 27 Oct 1 28 Oct 1,063 Last 30 days
NPM updated at: 2025-10-29T16:08:04.498Z GitHub updated at: 2025-10-29T16:08:04.660Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
1,053 29 Sep 1,304 30 Sep 1,230 01 Oct 1,025 02 Oct 868 03 Oct 114 04 Oct 101 05 Oct 995 06 Oct 1,296 07 Oct 1,312 08 Oct 1,009 09 Oct 1,202 10 Oct 166 11 Oct 132 12 Oct 962 13 Oct 1,449 14 Oct 1,125 15 Oct 0 16 Oct 1,123 17 Oct 225 18 Oct 205 19 Oct 1,138 20 Oct 998 21 Oct 1,062 22 Oct 938 23 Oct 923 24 Oct 94 25 Oct 151 26 Oct 1,054 27 Oct 1,009 28 Oct 24,263 Last 30 days
GitHub Action to deploy to Clever Cloud
Security & Encryption
NPM updated at: 2025-10-29T16:08:04.500Z GitHub updated at: 2025-10-29T16:08:04.696Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
28 29 Sep 6 30 Sep 21 01 Oct 26 02 Oct 34 03 Oct 50 04 Oct 34 05 Oct 15 06 Oct 14 07 Oct 6 08 Oct 4 09 Oct 9 10 Oct 40 11 Oct 10 12 Oct 5 13 Oct 36 14 Oct 24 15 Oct 68 16 Oct 71 17 Oct 25 18 Oct 2 19 Oct 9 20 Oct 19 21 Oct 4 22 Oct 10 23 Oct 15 24 Oct 262 25 Oct 31 26 Oct 56 27 Oct 29 28 Oct 963 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-10-29T16:08:04.501Z GitHub updated at: 2025-10-29T16:08:04.679Z 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,503 29 Sep 5,185 30 Sep 4,402 01 Oct 5,471 02 Oct 4,564 03 Oct 1,165 04 Oct 1,075 05 Oct 5,276 06 Oct 5,927 07 Oct 5,133 08 Oct 4,331 09 Oct 4,075 10 Oct 1,194 11 Oct 808 12 Oct 4,798 13 Oct 5,758 14 Oct 5,535 15 Oct 5,051 16 Oct 5,039 17 Oct 1,186 18 Oct 0 19 Oct 4,759 20 Oct 4,745 21 Oct 4,722 22 Oct 4,655 23 Oct 4,443 24 Oct 1,196 25 Oct 1,021 26 Oct 5,691 27 Oct 5,527 28 Oct 117,235 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-10-29T16:08:04.578Z GitHub updated at: 2025-10-29T16:08:04.678Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
252 29 Sep 193 30 Sep 113 01 Oct 249 02 Oct 71 03 Oct 55 04 Oct 65 05 Oct 138 06 Oct 119 07 Oct 221 08 Oct 212 09 Oct 131 10 Oct 27 11 Oct 116 12 Oct 128 13 Oct 144 14 Oct 309 15 Oct 0 16 Oct 359 17 Oct 309 18 Oct 272 19 Oct 374 20 Oct 480 21 Oct 486 22 Oct 412 23 Oct 948 24 Oct 697 25 Oct 163 26 Oct 167 27 Oct 177 28 Oct 7,387 Last 30 days
NPM updated at: 2025-10-29T16:08:04.597Z GitHub updated at: 2025-10-29T16:08:04.800Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
0 29 Sep 0 30 Sep 0 01 Oct 0 02 Oct 0 03 Oct 0 04 Oct 0 05 Oct 2 06 Oct 0 07 Oct 1 08 Oct 0 09 Oct 0 10 Oct 0 11 Oct 0 12 Oct 1 13 Oct 0 14 Oct 4 15 Oct 0 16 Oct 0 17 Oct 11 18 Oct 1 19 Oct 0 20 Oct 11 21 Oct 0 22 Oct 0 23 Oct 1 24 Oct 0 25 Oct 1 26 Oct 0 27 Oct 0 28 Oct 33 Last 30 days
NPM updated at: 2025-10-29T16:08:04.598Z GitHub updated at: 2025-10-29T16:08:04.680Z 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
19 29 Sep 32 30 Sep 56 01 Oct 41 02 Oct 27 03 Oct 16 04 Oct 1 05 Oct 9 06 Oct 28 07 Oct 13 08 Oct 7 09 Oct 17 10 Oct 3 11 Oct 13 12 Oct 29 13 Oct 7 14 Oct 53 15 Oct 23 16 Oct 16 17 Oct 37 18 Oct 22 19 Oct 24 20 Oct 0 21 Oct 24 22 Oct 16 23 Oct 19 24 Oct 18 25 Oct 11 26 Oct 16 27 Oct 9 28 Oct 606 Last 30 days
Miscellaneous
NPM updated at: 2025-10-29T16:08:04.603Z GitHub updated at: 2025-10-29T16:08:04.802Z 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,511 29 Sep 5,203 30 Sep 4,421 01 Oct 5,456 02 Oct 4,501 03 Oct 1,193 04 Oct 1,051 05 Oct 5,236 06 Oct 5,891 07 Oct 5,094 08 Oct 4,335 09 Oct 4,066 10 Oct 1,229 11 Oct 818 12 Oct 4,748 13 Oct 5,776 14 Oct 5,498 15 Oct 5,106 16 Oct 5,080 17 Oct 0 18 Oct 1,388 19 Oct 4,656 20 Oct 0 21 Oct 4,606 22 Oct 4,611 23 Oct 4,419 24 Oct 1,471 25 Oct 1,056 26 Oct 5,739 27 Oct 5,496 28 Oct 112,655 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