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-08-14T13:13:04.615Z GitHub updated at: 2026-08-14T13:13:04.967Z 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
672,533 Jul 15 656,056 Jul 16 576,417 Jul 17 242,405 Jul 18 260,067 Jul 19 646,202 Jul 20 733,611 Jul 21 738,861 Jul 22 705,240 Jul 23 604,360 Jul 24 250,170 Jul 25 277,223 Jul 26 703,478 Jul 27 727,913 Jul 28 708,109 Jul 29 718,832 Jul 30 597,964 Jul 31 275,580 Aug 01 277,075 Aug 02 695,923 Aug 03 741,427 Aug 04 745,118 Aug 05 573,046 Aug 06 652,980 Aug 07 263,600 Aug 08 287,798 Aug 09 704,780 Aug 10 753,265 Aug 11 754,117 Aug 12 780,984 Aug 13 17,325,134 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-08-14T13:13:04.615Z GitHub updated at: 2026-08-14T13:13:05.029Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
0 Jul 15 1 Jul 16 0 Jul 17 1 Jul 18 2 Jul 19 0 Jul 20 3 Jul 21 0 Jul 22 1 Jul 23 1 Jul 24 28 Jul 25 1 Jul 26 2 Jul 27 4 Jul 28 1 Jul 29 2 Jul 30 0 Jul 31 0 Aug 01 3 Aug 02 0 Aug 03 0 Aug 04 2 Aug 05 20 Aug 06 51 Aug 07 4 Aug 08 1 Aug 09 0 Aug 10 0 Aug 11 0 Aug 12 1 Aug 13 129 Last 30 days NPM updated at: 2026-08-14T13:13:04.615Z GitHub updated at: 2026-08-14T13:13:04.928Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
1,362 Jul 15 1,428 Jul 16 1,356 Jul 17 254 Jul 18 350 Jul 19 1,376 Jul 20 1,309 Jul 21 1,276 Jul 22 1,198 Jul 23 1,154 Jul 24 403 Jul 25 413 Jul 26 1,528 Jul 27 1,338 Jul 28 1,508 Jul 29 1,385 Jul 30 1,054 Jul 31 349 Aug 01 240 Aug 02 1,444 Aug 03 1,757 Aug 04 1,490 Aug 05 1,167 Aug 06 1,113 Aug 07 249 Aug 08 215 Aug 09 1,489 Aug 10 1,974 Aug 11 2,772 Aug 12 2,663 Aug 13 35,614 Last 30 days GitHub Action to deploy to Clever Cloud
Security & Encryption NPM updated at: 2026-08-14T13:13:04.615Z GitHub updated at: 2026-08-14T13:13:05.242Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
10 Jul 15 6 Jul 16 12 Jul 17 2 Jul 18 7 Jul 19 13 Jul 20 17 Jul 21 33 Jul 22 6 Jul 23 25 Jul 24 0 Jul 25 12 Jul 26 26 Jul 27 9 Jul 28 25 Jul 29 5 Jul 30 5 Jul 31 4 Aug 01 1 Aug 02 6 Aug 03 10 Aug 04 4 Aug 05 16 Aug 06 30 Aug 07 0 Aug 08 4 Aug 09 28 Aug 10 19 Aug 11 24 Aug 12 92 Aug 13 451 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-08-14T13:13:04.615Z GitHub updated at: 2026-08-14T13:13:04.953Z 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
20,465 Jul 15 21,280 Jul 16 16,931 Jul 17 5,994 Jul 18 3,719 Jul 19 17,525 Jul 20 24,115 Jul 21 24,405 Jul 22 23,154 Jul 23 19,155 Jul 24 5,320 Jul 25 3,951 Jul 26 17,713 Jul 27 20,629 Jul 28 19,959 Jul 29 20,809 Jul 30 16,712 Jul 31 3,281 Aug 01 3,469 Aug 02 14,844 Aug 03 20,280 Aug 04 21,125 Aug 05 14,089 Aug 06 22,509 Aug 07 4,696 Aug 08 4,491 Aug 09 22,023 Aug 10 24,046 Aug 11 0 Aug 12 21,579 Aug 13 458,268 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-08-14T13:13:04.615Z GitHub updated at: 2026-08-14T13:13:04.910Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
298 Jul 15 386 Jul 16 303 Jul 17 222 Jul 18 358 Jul 19 224 Jul 20 235 Jul 21 228 Jul 22 115 Jul 23 54 Jul 24 0 Jul 25 195 Jul 26 222 Jul 27 824 Jul 28 421 Jul 29 150 Jul 30 133 Jul 31 71 Aug 01 110 Aug 02 193 Aug 03 268 Aug 04 319 Aug 05 134 Aug 06 0 Aug 07 104 Aug 08 168 Aug 09 158 Aug 10 246 Aug 11 323 Aug 12 241 Aug 13 6,703 Last 30 days NPM updated at: 2026-08-14T13:13:04.615Z GitHub updated at: 2026-08-14T13:13:04.967Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
0 Jul 15 0 Jul 16 0 Jul 17 2 Jul 18 4 Jul 19 5 Jul 20 4 Jul 21 3 Jul 22 0 Jul 23 0 Jul 24 11 Jul 25 1 Jul 26 0 Jul 27 1 Jul 28 1 Jul 29 0 Jul 30 0 Jul 31 0 Aug 01 0 Aug 02 0 Aug 03 2 Aug 04 0 Aug 05 0 Aug 06 14 Aug 07 2 Aug 08 1 Aug 09 0 Aug 10 0 Aug 11 9 Aug 12 2 Aug 13 62 Last 30 days NPM updated at: 2026-08-14T13:13:04.615Z GitHub updated at: 2026-08-14T13:13:05.004Z 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
10 Jul 15 23 Jul 16 23 Jul 17 40 Jul 18 20 Jul 19 25 Jul 20 43 Jul 21 25 Jul 22 7 Jul 23 28 Jul 24 26 Jul 25 16 Jul 26 11 Jul 27 67 Jul 28 25 Jul 29 22 Jul 30 114 Jul 31 149 Aug 01 105 Aug 02 96 Aug 03 109 Aug 04 43 Aug 05 13 Aug 06 22 Aug 07 16 Aug 08 14 Aug 09 30 Aug 10 28 Aug 11 8 Aug 12 14 Aug 13 1,172 Last 30 days Miscellaneous NPM updated at: 2026-08-14T13:13:04.615Z GitHub updated at: 2026-08-14T13:13:05.125Z 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
19,171 Jul 15 19,171 Jul 16 15,501 Jul 17 5,824 Jul 18 3,718 Jul 19 16,680 Jul 20 22,782 Jul 21 23,131 Jul 22 21,637 Jul 23 17,871 Jul 24 4,809 Jul 25 3,910 Jul 26 17,095 Jul 27 19,180 Jul 28 18,349 Jul 29 19,129 Jul 30 15,717 Jul 31 3,119 Aug 01 3,523 Aug 02 14,263 Aug 03 19,260 Aug 04 19,669 Aug 05 13,228 Aug 06 20,685 Aug 07 4,523 Aug 08 4,478 Aug 09 20,695 Aug 10 22,523 Aug 11 0 Aug 12 20,637 Aug 13 430,278 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