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-11-19T03:22:00.010Z GitHub updated at: 2025-11-19T03:22:00.049Z 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
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 6,578 29 Oct 7,028 30 Oct 5,264 31 Oct 1,471 01 Nov 1,513 02 Nov 5,599 03 Nov 6,421 04 Nov 7,102 05 Nov 6,753 06 Nov 6,577 07 Nov 2,135 08 Nov 1,567 09 Nov 7,207 10 Nov 6,956 11 Nov 6,646 12 Nov 7,184 13 Nov 5,969 14 Nov 1,509 15 Nov 1,312 16 Nov 6,192 17 Nov 0 18 Nov 141,830 Last 30 days
NPM updated at: 2025-11-19T03:22:00.022Z GitHub updated at: 2025-11-19T03:22:00.044Z 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
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 184,874 29 Oct 186,072 30 Oct 154,215 31 Oct 44,661 01 Nov 43,558 02 Nov 180,194 03 Nov 187,813 04 Nov 181,776 05 Nov 179,055 06 Nov 168,688 07 Nov 49,294 08 Nov 51,283 09 Nov 181,927 10 Nov 169,365 11 Nov 187,719 12 Nov 186,551 13 Nov 170,434 14 Nov 44,713 15 Nov 49,636 16 Nov 186,193 17 Nov 0 18 Nov 4,158,816 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-11-19T03:22:00.024Z GitHub updated at: 2025-11-19T03:22:00.321Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
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 5 29 Oct 0 30 Oct 5 31 Oct 1 01 Nov 5 02 Nov 0 03 Nov 0 04 Nov 4 05 Nov 12 06 Nov 3 07 Nov 7 08 Nov 2 09 Nov 8 10 Nov 2 11 Nov 2 12 Nov 5 13 Nov 2 14 Nov 1 15 Nov 0 16 Nov 16 17 Nov 0 18 Nov 157 Last 30 days
NPM updated at: 2025-11-19T03:22:00.026Z GitHub updated at: 2025-11-19T03:22:00.047Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
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 985 29 Oct 1,138 30 Oct 973 31 Oct 116 01 Nov 151 02 Nov 1,067 03 Nov 1,256 04 Nov 1,302 05 Nov 1,084 06 Nov 863 07 Nov 207 08 Nov 173 09 Nov 1,237 10 Nov 1,135 11 Nov 1,244 12 Nov 1,022 13 Nov 1,023 14 Nov 147 15 Nov 99 16 Nov 928 17 Nov 0 18 Nov 23,517 Last 30 days
GitHub Action to deploy to Clever Cloud
Security & Encryption
NPM updated at: 2025-11-19T03:22:00.040Z GitHub updated at: 2025-11-19T03:22:00.064Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
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 68 29 Oct 33 30 Oct 16 31 Oct 1 01 Nov 2 02 Nov 11 03 Nov 23 04 Nov 18 05 Nov 15 06 Nov 42 07 Nov 1 08 Nov 8 09 Nov 4 10 Nov 13 11 Nov 27 12 Nov 8 13 Nov 11 14 Nov 5 15 Nov 7 16 Nov 14 17 Nov 0 18 Nov 762 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-11-19T03:22:00.144Z GitHub updated at: 2025-11-19T03:22:00.061Z 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,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 5,592 29 Oct 5,593 30 Oct 4,608 31 Oct 1,453 01 Nov 963 02 Nov 4,394 03 Nov 5,823 04 Nov 5,871 05 Nov 5,758 06 Nov 6,230 07 Nov 1,120 08 Nov 1,419 09 Nov 4,658 10 Nov 5,090 11 Nov 5,621 12 Nov 5,972 13 Nov 5,514 14 Nov 1,423 15 Nov 1,424 16 Nov 4,824 17 Nov 0 18 Nov 120,109 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-11-19T03:22:00.146Z GitHub updated at: 2025-11-19T03:22:00.066Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
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 132 29 Oct 159 30 Oct 75 31 Oct 51 01 Nov 43 02 Nov 82 03 Nov 124 04 Nov 113 05 Nov 130 06 Nov 119 07 Nov 126 08 Nov 171 09 Nov 217 10 Nov 199 11 Nov 178 12 Nov 143 13 Nov 213 14 Nov 35 15 Nov 154 16 Nov 264 17 Nov 0 18 Nov 6,632 Last 30 days
NPM updated at: 2025-11-19T03:22:00.148Z GitHub updated at: 2025-11-19T03:22:00.268Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
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 0 29 Oct 0 30 Oct 2 31 Oct 0 01 Nov 1 02 Nov 0 03 Nov 0 04 Nov 1 05 Nov 1 06 Nov 1 07 Nov 1 08 Nov 0 09 Nov 0 10 Nov 2 11 Nov 1 12 Nov 0 13 Nov 0 14 Nov 0 15 Nov 0 16 Nov 0 17 Nov 0 18 Nov 23 Last 30 days
NPM updated at: 2025-11-19T03:22:00.150Z GitHub updated at: 2025-11-19T03:22:00.051Z 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
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 26 29 Oct 26 30 Oct 25 31 Oct 8 01 Nov 7 02 Nov 16 03 Nov 37 04 Nov 42 05 Nov 67 06 Nov 39 07 Nov 113 08 Nov 14 09 Nov 57 10 Nov 87 11 Nov 11 12 Nov 12 13 Nov 13 14 Nov 4 15 Nov 0 16 Nov 13 17 Nov 0 18 Nov 754 Last 30 days
Miscellaneous
NPM updated at: 2025-11-19T03:22:00.160Z GitHub updated at: 2025-11-19T03:22:00.280Z 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,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 5,553 29 Oct 5,574 30 Oct 4,567 31 Oct 1,452 01 Nov 966 02 Nov 4,313 03 Nov 5,760 04 Nov 5,897 05 Nov 5,694 06 Nov 6,237 07 Nov 1,097 08 Nov 1,441 09 Nov 4,663 10 Nov 5,085 11 Nov 5,542 12 Nov 5,923 13 Nov 5,491 14 Nov 1,423 15 Nov 1,419 16 Nov 4,809 17 Nov 0 18 Nov 114,960 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