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-12-10T03:48:16.636Z GitHub updated at: 2025-12-10T03:48:16.711Z 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,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 6,672 18 Nov 7,246 19 Nov 7,657 20 Nov 6,660 21 Nov 1,663 22 Nov 973 23 Nov 6,842 24 Nov 6,732 25 Nov 7,646 26 Nov 4,683 27 Nov 4,462 28 Nov 1,196 29 Nov 1,090 30 Nov 5,029 01 Dec 8,353 02 Dec 7,964 03 Dec 9,715 04 Dec 7,555 05 Dec 1,466 06 Dec 1,174 07 Dec 6,313 08 Dec 0 09 Dec 154,066 Last 30 days
NPM updated at: 2025-12-10T03:48:16.637Z GitHub updated at: 2025-12-10T03:48:16.916Z 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
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 197,963 18 Nov 216,400 19 Nov 201,355 20 Nov 177,546 21 Nov 49,288 22 Nov 46,693 23 Nov 188,465 24 Nov 206,821 25 Nov 201,000 26 Nov 156,492 27 Nov 131,052 28 Nov 42,060 29 Nov 50,301 30 Nov 199,166 01 Dec 218,767 02 Dec 227,943 03 Dec 245,838 04 Dec 209,850 05 Dec 67,145 06 Dec 68,681 07 Dec 233,895 08 Dec 0 09 Dec 4,513,259 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-12-10T03:48:16.650Z GitHub updated at: 2025-12-10T03:48:16.895Z Opinionated Node.js microservices framework built on Fastify ⚡️
$ pnpm add fastify-micro $ yarn add fastify-micro
$ npm install fastify-micro
8 10 Nov 2 11 Nov 2 12 Nov 5 13 Nov 2 14 Nov 1 15 Nov 0 16 Nov 16 17 Nov 34 18 Nov 5 19 Nov 3 20 Nov 0 21 Nov 5 22 Nov 7 23 Nov 6 24 Nov 1 25 Nov 4 26 Nov 3 27 Nov 9 28 Nov 0 29 Nov 0 30 Nov 0 01 Dec 0 02 Dec 0 03 Dec 1 04 Dec 1 05 Dec 1 06 Dec 1 07 Dec 0 08 Dec 0 09 Dec 117 Last 30 days
NPM updated at: 2025-12-10T03:48:16.654Z GitHub updated at: 2025-12-10T03:48:16.715Z Run cron jobs alongside your Fastify server 👷
$ pnpm add fastify-cron $ yarn add fastify-cron
$ npm install fastify-cron
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 1,128 18 Nov 1,227 19 Nov 1,350 20 Nov 1,205 21 Nov 151 22 Nov 146 23 Nov 1,035 24 Nov 1,032 25 Nov 1,118 26 Nov 835 27 Nov 768 28 Nov 118 29 Nov 168 30 Nov 1,304 01 Dec 1,338 02 Dec 1,253 03 Dec 1,468 04 Dec 1,148 05 Dec 173 06 Dec 168 07 Dec 1,074 08 Dec 0 09 Dec 25,042 Last 30 days
GitHub Action to deploy to Clever Cloud
Security & Encryption
NPM updated at: 2025-12-10T03:48:16.657Z GitHub updated at: 2025-12-10T03:48:16.752Z Secure cryptographic key storage in the browser and Node.js
$ pnpm add session-keystore $ yarn add session-keystore
$ npm install session-keystore
4 10 Nov 13 11 Nov 27 12 Nov 8 13 Nov 11 14 Nov 5 15 Nov 7 16 Nov 14 17 Nov 16 18 Nov 24 19 Nov 14 20 Nov 12 21 Nov 6 22 Nov 9 23 Nov 14 24 Nov 8 25 Nov 36 26 Nov 6 27 Nov 3 28 Nov 1 29 Nov 2 30 Nov 14 01 Dec 22 02 Dec 29 03 Dec 16 04 Dec 4 05 Dec 1 06 Dec 1 07 Dec 10 08 Dec 0 09 Dec 337 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-12-10T03:48:16.671Z GitHub updated at: 2025-12-10T03:48:16.717Z 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,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 5,756 18 Nov 6,023 19 Nov 5,781 20 Nov 5,365 21 Nov 1,302 22 Nov 1,409 23 Nov 5,729 24 Nov 6,596 25 Nov 5,595 26 Nov 4,054 27 Nov 3,233 28 Nov 1,156 29 Nov 1,226 30 Nov 6,482 01 Dec 6,887 02 Dec 7,202 03 Dec 7,389 04 Dec 5,703 05 Dec 1,701 06 Dec 2,439 07 Dec 7,282 08 Dec 0 09 Dec 132,836 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-12-10T03:48:16.674Z GitHub updated at: 2025-12-10T03:48:16.720Z Redact values of critical environment variables in a string
$ pnpm add redact-env $ yarn add redact-env
$ npm install redact-env
217 10 Nov 199 11 Nov 178 12 Nov 143 13 Nov 213 14 Nov 35 15 Nov 154 16 Nov 264 17 Nov 352 18 Nov 198 19 Nov 138 20 Nov 148 21 Nov 49 22 Nov 120 23 Nov 157 24 Nov 587 25 Nov 266 26 Nov 318 27 Nov 269 28 Nov 170 29 Nov 153 30 Nov 551 01 Dec 179 02 Dec 205 03 Dec 189 04 Dec 235 05 Dec 135 06 Dec 142 07 Dec 248 08 Dec 0 09 Dec 6,212 Last 30 days
NPM updated at: 2025-12-10T03:48:16.676Z GitHub updated at: 2025-12-10T03:48:16.718Z Define aliases for environment variables and bind them at runtime
$ pnpm add env-alias $ yarn add env-alias
$ npm install env-alias
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 0 19 Nov 0 20 Nov 1 21 Nov 0 22 Nov 1 23 Nov 2 24 Nov 1 25 Nov 3 26 Nov 5 27 Nov 2 28 Nov 0 29 Nov 1 30 Nov 0 01 Dec 0 02 Dec 1 03 Dec 0 04 Dec 1 05 Dec 0 06 Dec 0 07 Dec 0 08 Dec 0 09 Dec 21 Last 30 days
NPM updated at: 2025-12-10T03:48:16.691Z GitHub updated at: 2025-12-10T03:48:16.754Z 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
57 10 Nov 87 11 Nov 11 12 Nov 12 13 Nov 13 14 Nov 4 15 Nov 0 16 Nov 13 17 Nov 24 18 Nov 81 19 Nov 32 20 Nov 38 21 Nov 8 22 Nov 12 23 Nov 20 24 Nov 41 25 Nov 132 26 Nov 53 27 Nov 27 28 Nov 38 29 Nov 2 30 Nov 35 01 Dec 17 02 Dec 15 03 Dec 67 04 Dec 45 05 Dec 27 06 Dec 7 07 Dec 63 08 Dec 0 09 Dec 981 Last 30 days
Miscellaneous
NPM updated at: 2025-12-10T03:48:16.692Z GitHub updated at: 2025-12-10T03:48:16.852Z 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,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 5,774 18 Nov 5,957 19 Nov 5,808 20 Nov 5,325 21 Nov 1,286 22 Nov 1,416 23 Nov 5,780 24 Nov 6,529 25 Nov 5,579 26 Nov 4,062 27 Nov 3,257 28 Nov 1,249 29 Nov 1,222 30 Nov 6,478 01 Dec 6,936 02 Dec 7,120 03 Dec 7,217 04 Dec 5,652 05 Dec 1,699 06 Dec 2,443 07 Dec 7,256 08 Dec 0 09 Dec 132,400 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