dev

Web & Software Development

Technology that works for your business — and the people in it.

Also open to software engineering roles, full-time or contract →

I build websites and custom software for small businesses that want practical solutions, not corporate ones — and I ship my own products the same way.

01

Web development

A clean, professional website that represents your business and makes it easy for customers to find and contact you.

02

Custom software

Tools built around how your business runs — not generic software you have to work around.

03

Consultation

Not sure what you need? Let's talk through your business and figure out where technology would help — and where it wouldn't.

Open to work

Also available for full-time and contract roles.

Full-stack web, Android, or product engineering. I work end to end, directing AI coding agents through schema, implementation, tests, CI, and documentation, and owning the decisions and review at every step, and I've shipped products to real users on my own, not just to a demo branch.

Live in production

RidePrint — a full-stack SaaS platform with payments, third-party OAuth, and paid-tier features, running at rideprint.com.

6,500+ automated tests

Across five projects, with CI on every push and emulator-based instrumented tests on Android.

Public code you can read

Postmark, ShaftSchematic, Yearal and the engine visualizer are open on GitHub, with their tests and CI history alongside the source.

Products I've built and shipped myself, and site work for local businesses. Every project below started from an empty repository, and every one is gated by automated tests and CI.

Products

Android · Kotlin · Open Source

Postmark

A privacy-first Android SMS client that fully replaces the default messaging app, keeping its own local database so search, stats and backups work with no cloud account at all. Its MMS layer splits the carrier's byte budget across every attachment in a message — smallest first, with under-budget images donating their surplus to larger ones — so a multi-photo message compresses to fit instead of failing to send. Photo, video and voice-memo messaging; full-text search; conversation stats and calendar heatmaps; scheduled backup and merge-only restore. No cloud, no accounts, no analytics.

View on GitHub
Stack
Kotlin · Jetpack Compose · Room · Media3 · WorkManager
Testing
1,100+ unit tests plus emulator-based instrumented tests, run in CI
Android · Kotlin · Open Source

ShaftSchematic

An Android app for modeling marine propeller-shaft assemblies, built out of my own day job inspecting and repairing shafts at a propeller shop, where the drawings were being made by hand because CAD made the work slower rather than faster. A machinist defines a shaft, watches a live dimensioned preview, and exports the one-page technical PDFs a repair job calls for — without opening CAD at all. Multi-segment shafts with bodies, tapers, threads, liners and bolt slots; schematics, runout sheets, wear documents and undercut drawings, each with a blank write-in variant for marking up on the job.

View on GitHub
Stack
Kotlin · Jetpack Compose · DataStore · Android PDF rendering
Testing
2,200+ unit tests, with CI gating every merge
React · TypeScript · Three.js

Engine Visualizer

An interactive 3D visualizer for piston-engine geometry, built so the motion can be studied rather than just watched. Enter bore, stroke, rod length and compression ratio — or load one of sixteen real engines — and the crank turns on exact slider-crank kinematics rather than the usual sinusoidal approximation, so rod angularity is visible instead of averaged away. Renders inline-3, -4 and -6 layouts at their real crank-throw phasing, plots position, velocity and acceleration from closed-form derivatives, and compares two engines side by side at a shared scale.

Try it live
Stack
React · TypeScript · Three.js (R3F) · Zustand · Vite · Vercel
Testing
1,500+ tests; CI runs lint, tests and a production build on every push
AI · Python · React

DocArchivist

A local-first document archive that turns a drawer of scanned paperwork into something searchable, without a page of it leaving the machine. Drop in a PDF or a photo and it reads the text by OCR, applies AI-generated metadata — title, vendor, date, category — and files it where you can find it again. Covers 22 document types and image-to-PDF ingest, ships as a Windows installer, and is backed by 950+ automated tests and a nine-phase fault-injection test plan.

Stack
FastAPI · React · SQLite FTS5 · Electron · PyInstaller
Status
Private pre-release, demo on request

Small business sites

Small business · Web

Chase Race

A site for a one-man race prep and performance shop in Duvall, WA — 15+ years of experience, 40+ custom cages built, recognized by SCCA, NASA, and LeMons. Showcases services including exhaust, alignment, coilovers, and Miata/MX-5 specialization. Built with the owner and revised to his notes.

View the demo
Stack
HTML · CSS · vanilla JS · Netlify
Small business · Web

Urban City Coffee

A polished marketing site for a café in Mountlake Terrace, WA — est. 1993. Single-page and mobile-responsive, with a tabbed menu, an hours bar, photo sections, Google reviews, and an online-order call to action. Built on spec as a concept for the owner.

View the demo
Stack
HTML · CSS · vanilla JS · Netlify

Also built

Fixes sent back to the tools I use day to day.

Claude Code Usage Monitor

Opened a pull request to an open-source Python terminal monitor published on PyPI — still open as of September 2026 — that adds recognition for the Claude 5 model family, corrected pricing that was billing a new model at a legacy model's rates, labeled auto-estimated limits honestly rather than presenting them as measured, and fixed metric bars that broke in narrow terminals.

View the pull request

Built from real experience.

Chris Mendoza, wearing a gray beanie and hoodie, on the Puget Sound shoreline.

I'm Chris Mendoza, a developer in Bothell, WA, just outside Seattle, working as PlusOrMinusTwo Designs. I have a B.A.S. in Application Development and a background that's taken me through IT support, restaurants, and — still, today — a machine shop floor.

I've worked alongside the kind of small businesses I now build for — and I know that what you need is something practical that actually works, not an overcomplicated solution from someone who's never been in the trenches.

That background shows up in the code. I machine and inspect marine propellers and shafts at Sound Propeller Services, and ShaftSchematic exists because I needed it there — the drawings were being done by hand, since CAD made the job slower rather than faster. RidePrint started as a problem I had as a cyclist and is now a live platform with a marketplace and shop integrations. I build with AI coding agents. My job is deciding what gets built, how it fits together, and whether it's actually right: reviewing the output, setting the test and CI gates, and using the software daily on real devices.

Languages
TypeScript Kotlin Python C# / .NET HTML / CSS / JS SQL
Frontend
React Next.js Tailwind Jetpack Compose React Native
Backend
Supabase / Postgres FastAPI Flask SQLite Room REST APIs
Platform
Android Stripe Anthropic API OAuth & webhooks Git GitHub Actions Vercel / Netlify

Let's build something useful.

Have a project in mind, a role to fill, or just an idea you want to talk through? I'd love to hear from you.

Tell me a bit about what you're working on — a rough idea is enough to go on. If you're hiring, mention the role and I'll send whatever else you need.

Usually back within a business day. Prefer email?