I'm a software engineer working mostly with TypeScript/Node.js, PostgreSQL, and Vue/Nuxt. Most of my open-source libraries and tools grew out of problems I encountered in real projects.
Here's what I've built:
kern-orm— Fully typed relational query builder for PostgreSQL with ambient transactions and single-query relation loading.ripple-di— Next-generation DI for TypeScript with async scopes, transitive overrides, and automatic resource cleanup.
async-dedupe— Deduplicate concurrent calls to an async function.json-mark— Serialize custom types in JSON with tagged strings.intl-formats— Functional wrappers aroundIntl.DateTimeFormatandIntl.NumberFormat.valibotx— Tree-shakeable extensions for Valibot.
Earlier work
node-data-cleaner(data-cleaner,data-cleaner-koa) — Abandoned. Async validation and transformation toolkit, superseded in my projects by Valibot andvalibotx.node-unpickle— Read Python 3 pickle data from Node.js.dayjs-isodate— AddtoISODate()to Day.js.
pg-event-bus— Typed real-time events over PostgreSQLLISTEN/NOTIFYfor cache invalidation and live updates.pg-advisory-lock— Coordinate exclusive work across application instances with PostgreSQL session-level advisory locks.graphile-worker-tasks— Organize, collect, and test Graphile Worker tasks.graphile-worker-orchid— Use Graphile Worker with Orchid ORM.orchid-pagination— Page-number and cursor pagination helpers for Orchid ORM.rake-db-testing— Verify rake-db migration history and data migration scenarios on PostgreSQL.orchid-graphql— Resolve GraphQL queries against Orchid ORM tables and relations.objection-graphql-resolver— Resolve GraphQL queries against Objection.js models and relations.
Earlier work
objection-reorder— Reorder PostgreSQL-backed rows through Objection.js.
image-renditions— On-demand image transformations that persist every result to durable storage and keep app servers stateless.graphql-define-resolvers— Collect strongly typed GraphQL query and mutation resolvers across modules.trpc-multiplex— Run many tRPC subscriptions over one HTTP stream per tab, or per browser through a shared worker.h3-errors— Assertion and error helpers for HTTP 4xx/5xx responses in H3.h3-jwt-auth— Basic JWT authentication helpers for H3 and Nuxt.h3-websocket-request— H3 WebSocket handlers that can request additional client-side data while processing a request.
Earlier work
koa-mount-final— Prevent matched but unhandled Koa sub-routes from falling through to later middleware.
vue-form-submit— Small Vue 3 composables for form submission and optional Standard Schema validation.vue-router-navigation— Navigation helpers for deeply nested Vue Router paths.orpc-vue— oRPC integration for Vue and Nuxt with TanStack Vue Query composables.trpc-vue— tRPC integration for Vue and Nuxt with TanStack Vue Query composables.nuxt-request-context— Provide typed request-specific data to Nuxt before the initial render.nuxt-surface— Serve several sites from one Nuxt app, each with its own pages at the same URLs.nuxt-multi-app— Run several independent Nuxt applications behind one HTTP server.nuxt-hydration-gate— Nuxt hydration marker for CSS, scripts, and E2E tests.nuxt-vitest-shared-app— Run Nuxt component tests in Vitest on one shared app per worker, with per-test cleanup.nuxt3-class-component— Class-component support for Nuxt 3/4 and a migration path fromnuxt-property-decorator.nuxt-update— Detect deployed Nuxt application updates and notify or refresh clients.nuxt-vite-legacy— Legacy-browser support for Nuxt 3 through Vite's legacy plugin.
Earlier work
nuxt-stash— Expose server-generated Nuxt context to Vue components without a full Vuex setup.vue-observable-persist— Persist Vue observable state tolocalStorageor compatible storage.ream-typescript— TypeScript support for Ream.js.
grammy-scenes— Scene-based conversations for grammY.grammy-pseudo-update— Inject manually generatedUpdateobjects into grammY middleware.
h3-websocket-anchor-wallet-request— Request client-side Anchor Wallet transaction signing from an H3 server handler.
top-down-review-skill— Code review that starts from the task, not the diff: purpose, target solution, then implementation.agent-review-skill— Iterative code, diff, and plan reviews through another CLI coding agent.pi-transcript-skill— Extract clean conversational transcripts from pi.dev session files.
webhook-telegram-bot— Forward GitHub, GitLab, and Sentry webhook events to Telegram, including workflows, pipelines, and branch filtering.terneo-ha— Local Home Assistant integration for Terneo thermostats, without a cloud dependency.wikipedia-word-frequency— Generate multilingual word-frequency datasets from Wikipedia dumps.
bunlock-dedupe— Analyze and deduplicate dependencies inbun.lock.bun-nested-workspace— Embed a checkout of another Bun workspace repository and keep the hostpackage.jsonandbun.lockin sync with it.vite-plugin-module-boundaries— Fail Vite builds when imports cross configured filesystem boundaries.oxc-config— Reusable oxlint, oxfmt, and ESLint configurations for projects I develop or oversee.eslint-config— Reusable ESLint configuration for projects I develop or oversee.eslint-plugin-import-remap— Remap imports with ESLint autofixes.stylelint-config— Reusable Stylelint configuration for projects I develop or oversee.tsconfig-vite-node— Opinionated TSConfig for Node applications run withvite-nodeor built with Vite.npm-package-starter— Scaffold and synchronize production TypeScript npm packages from reusable conventions.changesets-local— Release Changesets packages and monorepos from your terminal, without a Version pull request or CI publishing.sops-env— Print the env section of a SOPS-encrypted file asKEY=VALUElines, optionally with base64-encoded values.gitlab-ci-git-push— Push repository changes from GitLab CI.
Earlier work
dokku-static-site— Static-site deployment on Dokku.dokku-refuse-unknown-domains— Reject unknown hostnames in Dokku.dokku-solr— Solr service integration for Dokku.nfs-provisioner-chart— Helm chart for an NFS provisioner.
Earlier work
django-modelsettings— Database-backed, typed application settings editable through Django admin.django-templates-admin— Manage editable templates through Django admin.django-everlasting-sessions— Long-lived Django sessions.django-sequential-pagination— Sequential pagination helpers for Django.django-minimal-abstract-user— Minimal abstract Django user model with admin and permissions support.django-object-utils— Race-safe helpers for reloading, updating, and locking Django model objects.django-uuid-upload— UUID-based upload paths for Django.python-edost— Python integration for the eDost delivery service.aiohttp_session_flash— Flash messages for aiohttp sessions.





