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:
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 JSON types using 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.graphql-orm(objection-graphql-resolver,orchid-graphql) — Resolve GraphQL queries against Objection.js or Orchid ORM tables and relations.graphql-define-resolvers— Collect strongly typed GraphQL query and mutation resolvers across modules.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
objection-reorder— Reorder PostgreSQL-backed rows through Objection.js.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-nuxt— oRPC integration for Nuxt with TanStack Vue Query composables.nuxt-request-context— Provide typed request-specific data to Nuxt before the initial render.nuxt-hydration-gate— Nuxt hydration marker for CSS, scripts, and E2E tests.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.
git-telegram-bot— Forward GitHub and GitLab 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.vite-plugin-module-boundaries— Fail Vite builds when imports cross configured filesystem boundaries.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.
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.
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.




