I'm a software developer in the Pacific Northwest with a hands-on background in marine machining, manufacturing, and IT. That combination shapes how I build software: I think in tolerances, failure modes, repeatable workflows, and tools that have to make sense outside of a demo.
I build Android apps, web applications, developer tooling, and automation systems β often around real-world problems I've encountered myself.
BAS, Mobile & Web App Development β North Seattle College
An Android application for rapidly modeling marine propeller-shaft assemblies and producing clean, dimensioned technical documents. It grew directly out of my work as a marine machinist and is designed around real inspection, repair, and machining workflows.
Highlights:
- Parametric shaft modeling with bodies, tapers, threads, liners, keyways, undercuts, and coupler features
- Live dimensioned Compose drawing with canonical millimeter geometry and inch/mm UI conversion
- Technical PDF generation for shaft schematics, runout, wear inspection, undercuts, and consolidated reports
- Versioned
.shaftdocument format with migrations, autosave, backup, restore, and import/export - Validation and geometry rules modeled around real machining constraints rather than generic drawing primitives
π github.com/chrisjmendoza/ShaftSchematic
π² Rideprint β Next.js Β· TypeScript Β· Supabase (live at rideprint.com)
A mobile-first bike maintenance platform for building a durable service history across the life of a bicycle. Riders can track maintenance and rides, while verified shops can add service records directly to customer bikes.
Highlights:
- Next.js App Router with Supabase Postgres, Auth, Storage, RLS, and SSR sessions
- AI-assisted bike specification lookup and receipt OCR using Claude
- Service intervals, reminders, component tracking, and public QR bike profiles
- Verified-shop workflows with mechanic access controls and customer lookup
- Strava ride import, Stripe freemium payments, Resend email reminders, and installable PWA support
- 184 automated tests across 25 files
π rideprint.com
A privacy-first Android SMS/MMS client built as a full default-messaging-app replacement. Postmark maintains its own local message database so it can provide fast search, rich media handling, backups, statistics, and conversation customization without a cloud dependency.
Highlights:
- Android default-SMS integration with system message synchronization, receivers,
SmsManager, andRoleManager - Room + FTS4 persistence with fast message search and structured repository/domain layers
- Photo, video, and voice-memo messaging with MMS-aware attachment budgeting and media compression
- Scheduled local backups and idempotent restore workflows using WorkManager and the Storage Access Framework
- Apple and Android reaction parsing, per-conversation personalization, statistics, and rich conversation export
- JVM unit tests plus emulator-backed instrumented testing in GitHub Actions
π github.com/chrisjmendoza/postmark
A programming textbook that teaches software architecture backwards by walking through two real Kotlin/Android codebases: ShaftSchematic and Postmark. Rather than starting with isolated syntax exercises, it teaches readers to examine working systems, identify the architecture and constraints already present, trace behavior through the code, and understand why implementation decisions follow from real client requirements.
The body is complete and the project is being prepared for publication and instructor feedback as supplemental programming material.
A tactile corkboard-style note app built around a large pannable and zoomable canvas. Notes behave like physical objects rather than rows in a conventional notes list.
Highlights:
- Reanimated + Gesture Handler canvas with pan, pinch-to-zoom, drag, resize, rotation, and z-order controls
- Sticky notes, index cards, text bubbles, photos, checklists, and link cards
- Multiple named boards with persistent local storage
- Per-note typography, formatting, color customization, and automatic text contrast
- TypeScript-first architecture with a substantial Jest test suite
π github.com/chrisjmendoza/hanna-notes
A local AI software-engineering assistant that accepts a natural-language development task, reasons over an actual repository, generates a structured plan, and executes work through a controlled tool layer.
Highlights:
task β plan β execute β reportlifecycle with structured logging- Semantic repository search across multiple programming languages
- LLM-guided planning and patch generation
- Dry-run previews, file patching, test execution, and Git-aware workflows
- Per-repository memory for continuity across sessions
- GitHub issue-to-PR workflow support
π github.com/chrisjmendoza/Hephaestus
A Windows backup utility that detects a specific USB drive by identity rather than drive letter and automatically runs controlled Robocopy backup jobs in the background.
π github.com/chrisjmendoza/portflow
A local-first document management system for extracting text from PDFs and images, applying structured metadata, and making scanned documents searchable with OCR and SQLite FTS5. Currently in development.
Languages
Kotlin Β· TypeScript Β· Python Β· C# Β· SQL
Application Development
Jetpack Compose Β· Android SDK Β· Next.js Β· React Β· React Native Β· Expo Β· FastAPI Β· .NET
Data & Infrastructure
Supabase Β· PostgreSQL Β· SQLite / FTS5 Β· REST APIs Β· Vercel Β· GitHub
Automation & Applied AI
LLM APIs Β· OCR workflows Β· document processing Β· repository tooling Β· developer automation
- Start with the actual workflow and constraints, not just the UI
- Keep domain logic explicit, testable, and separate from presentation code
- Treat edge cases and failure modes as part of the design
- Prefer maintainable systems over clever one-off solutions
- Use AI tooling to accelerate iteration while still verifying behavior through tests, documentation, and real-world constraints
- Write documentation so someone other than the original author can understand the system later
- Portfolio: chrismendoza-dev.vercel.app
- LinkedIn: linkedin.com/in/chrisjmendoza
- Email: chrisjmendoza@gmail.com




