Software engineering
Most of what I know about software engineering I learned by keeping software running after it shipped. These are the choices I make and where I made them.

Application architecture
I default to a modular monolith. In Rechvix an invoice must change stock, the ledger, tax and numbering in one transaction, so the modules live in one process and talk through application-layer interfaces. Domain packages hold pure rules and import no HTTP or database code. That boundary is what keeps a ten-year codebase testable.
OrderRestro went the other way on framework weight. It has twenty product domains that must be addable independently, so I used NestJS and its module system instead of hand-building the same structure on Express.
Languages and where I use them
- Go for backends where correctness and a single deployable binary matter: Rechvix, KinetiRx and Submify.
- TypeScript for the web layers and for NestJS and Node.js services: OrderRestro and the frontends of every project.
- React and Next.js for interfaces. Next.js App Router also runs this website.
- Python for automation and data work, described on the AI and automation page.
Data modelling
I treat the database as the system of record and the place where invariants should live. Rechvix stores stock as an append-only movement ledger with a rebuildable balance projection, and money as a decimal type, never a float. PostgreSQL is my default. Redis appears where a background queue is needed, as in the construction ERP. SQLite is a reasonable choice for single-user tools, but for OrderRestro I chose one database dialect over two.
Realtime
OrderRestro uses WebSockets through Socket.IO so a kitchen ticket reaches the display when it is created. KinetiRx uses server-sent events for live sync between counters, which is simpler and enough when updates only flow one way.
Desktop and packaging
Business software often has to run on a Windows machine at a shop counter. NodeDR POS ships as a Windows installer and a Debian package, and several products are packaged for the Microsoft Store. Packaging is part of the engineering: an install that fails costs a customer faster than a missing feature.
Testing and maintenance
Rechvix has unit and integration suites that run against a real PostgreSQL, a Playwright and axe-core accessibility suite on every pull request, and security scanning with govulncheck. I keep changelogs that state what is built and what is not. When a test or a review exposes a gap, I write the gap down.