A Modern Feathers.js Stack on IBM i: Real-Time APIs on DB2

Preface
This project demonstrates a modern full-stack application on IBM i, featuring a Feathers.js backend and a Vite-powered SPA frontend. I also used it to test my custom Knex adapter for DB2 on i, knex-ibmi. The frontend and backend communicate via WebSockets for real-time updates.
Technical Decisions
Backend
The backend uses TypeScript and Feathers.js, a toolkit for creating applications with authentication, WebSockets (Socket.io), and REST APIs (Koa). It interacts with the DB2 database using Knex, a powerful SQL query builder that works well with TypeScript.
To connect Knex with DB2 for i, I developed the knex-ibmi package. This configuration lets us scaffold services and hooks via the CLI, enabling modern real-time applications directly on IBM i.
Frontend
The frontend is a Single Page Application (SPA) built with TypeScript, Vite, and React. Since Server-Side Rendering (SSR) wasn’t required, I chose Vite for bundling. The UI uses shadcn/ui, combining Tailwind CSS for styling and Radix UI for accessible components.
Development
The frontend and backend reside in separate directories for easier management. During development, I run their respective dev servers in separate terminal windows.
A Feathers.js Prototype for Customer Demographics and Automated Emails
A proof-of-concept full-stack app using Feathers.js, React, Vite, and shadcn/ui to manage customer demographics and trigger anniversary and birthday emails.
Building Compass: A Life Assistant That Still Works When the AI Does Not
I wanted a more customizable workout tracker, a budget my wife and I could share, and AI help on both. So I built Compass on TanStack Start and Cloudflare, and made sure it still works when the AI does not.
Bringing AI to IBM i: An MCP Server with 31 System Tools
A BYOK MCP server that exposes 31 facade tools for IBM i observability, job management, and security. Built to train new users and accelerate expert workflows.