// connection established
host: purpleconnect.cloud  [200 OK]
role: software engineer

Joshua Hamm_

I build full-stack web apps, backend APIs, and games — across Java, C#, TypeScript, and Python. Comfortable everywhere from database schemas to render loops.

available for new work · based in the US
$cat about.md

About.

I'm Joshua Hamm, a software engineer who works across the entire stack. I write production web applications, design and ship REST/GraphQL APIs, build desktop and game experiences, and enjoy the kind of problems that span multiple layers at once.

My day-to-day spans Java, C#, TypeScript, and Python. I care about clean architecture, reliable systems, and interfaces that feel fast and intentional.

When I'm off the clock I build small games and creative experiments — you can play three of them right here in the browser.

$ls ~/skills/

Stack.

// languages
Core Languages
Java C# TypeScript Python JavaScript SQL
// frontend
Web & UI
React Next.js HTML/CSS Tailwind Canvas/WebGL
// backend
APIs & Services
Spring Boot .NET Node.js REST GraphQL PostgreSQL
// apps & games
Applications & Games
WPF JavaFX Unity Game loops Canvas
// infra
Infra & Tooling
Docker Git Linux Caddy CI/CD
// practice
Engineering
Clean architecture Testing Performance DX
$cat rates.md

Rates.

Honest, project-based pricing. Most work is fixed-scope; the price covers discovery + design + build + testing + deployment. Expenses (domain, hosting, paid APIs) are passed through at cost — you see every dollar. Hit me up for a discovery call before committing — that's always free.

Starter
$500 – 1,000
~5–15 hrs 1–2 weeks
  • One-page site or landing page
  • Custom design, responsive
  • Contact form + simple integrations
  • Domain + hosting setup
  • Source code in your repo
best for: personal portfolio, event page, single-product promo
Web App
$4,000 – 12,000
~60–140 hrs 4–10 weeks
  • Full-stack web app (React + API)
  • Auth, dashboard, database
  • Stripe / payment integration
  • Admin panel + role-based access
  • Docker + CI/CD pipeline
  • 30 days post-launch bugfix
best for: internal tools, dashboards, B2B SaaS MVPs
Mobile / Full-Stack
$8,000 – 25,000+
~100–300+ hrs 8–16+ weeks
  • Native Android app (Kotlin / Compose)
  • Or complex full-stack platform
  • Real-time features (WS / SSE)
  • Offline-first sync
  • Performance + a11y audit
  • Play Store deploy + signing
best for: production-grade mobile apps, multi-user platforms
Custom / Enterprise
Quote
scoped per-project
  • Multi-month engagements
  • Existing-codebase rescues
  • QA automation suites (Playwright)
  • Self-hosted infra builds
  • Architecture reviews
best for: anything that doesn't fit a tier — let's talk

What every project includes

  • Free discovery call (60 min)
  • Wireframes + design before code
  • Cross-browser + mobile testing
  • Source code in your Git repo
  • Deployment + DNS handover
  • Project documentation (README + setup)
  • 2 rounds of revisions during build
  • 30 days post-launch bugfix window
  • No vendor lock-in — you own everything

Where the time goes — typical breakdown

Discovery & research ~10%
Design & wireframes ~15%
Build & code ~55%
Testing & QA ~12%
Deploy & handoff ~8%
Hourly — for custom or smaller work
$85/hr
Use for ad-hoc fixes, consulting calls, code reviews, or anything that doesn't fit a fixed-scope tier. Minimum billable: 1 hour. Tracked & reported per session — you only pay for work done.

Add-ons (priced per project)

  • Rush delivery (50% faster timeline) — +30%
  • Extra revision rounds — $85/hr
  • Logo / brand mark — $300–800
  • Playwright / QA test suite — $800–3,000
  • Performance / a11y audit — $400–1,200
  • Monthly maintenance retainer — $150–500/mo
  • Migration to self-hosted infra — $500–2,500

Pass-through expenses (at cost, no markup)

  • Domain registration — ~$15/yr
  • Hosting (Vercel/Render/etc) — $0–50/mo
  • Paid APIs (Stripe, Twilio, OpenAI, …)
  • Email service (Postmark, Resend)
  • Stock imagery / icon licenses
  • Premium fonts
  • App-store fees (Play / App Store)
  • SSL beyond Let's Encrypt

// All quotes are in USD. 50% deposit to start, 50% on delivery. Net 15 invoicing.
// Estimates above are typical — final price depends on actual scope after the discovery call.
// Open to equity / revenue share for the right project.

$cat LICENSE

License.

MIT Copyright © 2026 Joshua Hamm
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the “Software”), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
$ls ~/projects/

Selected Work.

# Live Demos

# Playgrounds

interactive
Sign On
System: PURPLE01
User . . . . . . . . . [JOSHUA__]
Password . . . . . . . [********]
===> WRKLIBPDM_
IBM i Terminal
Emulated 5250 green-screen session: sign-on, command line, library/file/member hierarchy (WRKLIBPDM · WRKOBJPDM · WRKMBRPDM), and an SEU-style editor for real RPG IV / SQLRPGLE / DDS / CL source. Scanlines, CRT glow, function keys, the works.
IBM i RPGLE SQLRPGLE 5250
interactive
SELECT a.name, COUNT(p.id)
FROM plays p
JOIN songs s ON...
GROUP BY a.id
→ 600 rows · 4ms
Database Playground
A full SQLite database running in your browser via WebAssembly. Seeded with a music-streaming schema — tables, views, indexes, triggers, foreign keys. Run any SQL: joins, window functions, recursive CTEs, time-series rollups, CREATE, INSERT, DROP — sandboxed per visitor.
SQLite WebAssembly Window Funcs CTEs
interactive
$ curl risk.purpleconnect.cloud
  /api/portfolios
200 OK 127ms
[
  "Tech Growth Fund",
  "Dividend Income"...
API Playground
Live, in-browser API explorer for the Risk Portfolio service. Pick an endpoint, edit the JSON body, fire a real request, see the response with status code, latency, and syntax-highlighted JSON. Built to make the engineering legible.
Vanilla JS fetch() CORS OpenAPI
interactive
await page.getByRole('button',
  { name: 'Pay $313' }).click();
await expect(page)
  .toHaveURL(/\/confirm/);
1 passed (1.5s)
Playwright Playground
A full Playwright tutorial — install, locators, assertions, fixtures, page objects, mocking, CI. Includes a live locator playground that runs your getByRole(...) against a real DOM, an animated test-runner simulator, and a CLI-flag builder.
Playwright E2E TypeScript CI/CD

# Games

playable Dragon's Hoard — a green dragon coiled around a treasure chest of gold coins
Dragon's Hoard
Match-3 fantasy puzzler. Swap elemental runes — fire, water, nature, storm, arcane, frost — to forge matches of three or more. Match 4 → Rune of the Cross, L/T → Arcane Bomb, Match 5 → Dragon Orb. Fill the Dragon Fury bar, then tap any rune on the board to incinerate every tile of that colour at once. Moves & timed quests, board-clear cascades, chained specials.
Canvas Match-3 Particle FX Mobile
playable 3 C PULSAR
PULSAR
Galaga-style arcade shooter. Ship locked to the bottom, waves of alien ships stream down from the top in formation curves and diving patterns — wasps, crabs, hunters, kamikazes, bombers, manta squadrons, and a green star-shaped mothership boss every fifth wave. Kills drop falling powerup capsules that morph your ammo type: triple, rapid, homing, pierce, charged, shield, bomb, +1 ship. Mobile drag-to-aim with auto-fire. Every sprite and sound generated in code (pre-rendered canvas + Web Audio).
Canvas Sprites Web Audio Galaga Mobile Procgen
playable Dungeon Crawl title screen
Dungeon Crawl
Procedurally generated roguelike — grid-based movement, fog of war, inventory, and turn-based combat. Built from scratch on HTML5 Canvas.
Canvas JavaScript Procgen
playable Neon Run title screen
Neon Run
Endless runner with a synthwave aesthetic. Procedural obstacles, parallax scrolling, and an escalating difficulty curve. Mobile touch controls.
Canvas Game Loop Mobile
playable Flappy title screen
Flappy
A polished take on the tap-to-fly arcade loop. Physics tuned for the near-miss feel, with high-score tracking and a custom palette.
Canvas Physics Arcade

# Android APKs

android · 20.2 MB Inkwell app icon — a quill in an inkwell
Inkwell
Android client for Komga — the self-hosted comic, manga, and ebook server. Browse your library, sync read progress, and read offline. Tap to download the signed APK; you'll need to allow install from unknown sources.
Android Kotlin Komga Self-hosted
android · 19.9 MB Calibre Pocket app icon — books in a leather pocket
Calibre Pocket
Android EPUB reader for the Calibre Content Server — the native calibre-server built into Calibre, not Calibre-Web. Browse your library over OPDS, read EPUBs offline, sync progress back. Tap to download the signed APK; you'll need to allow install from unknown sources.
Android Kotlin EPUB Calibre OPDS
android · 0.3 MB Flappy app icon — a pixel-art yellow bird in a blue sky over a city skyline
Flappy Bird
The classic one-tap pixel-art arcade game, native Android edition. Tap to flap, dodge the pipes, chase a high score. Built from scratch — sprites and sounds generated in code, no third-party game engine. Offline, no ads, no tracking. Tap to download the signed APK; you'll need to allow install from unknown sources.
Android Kotlin Arcade Pixel Art Offline

# Source on GitHub

React
import { Button, Card }
  from '@yourorg/ui';
<Card>
  <Button variant="primary"/>
</Card>
Design System
Turborepo monorepo: a React component library (@yourorg/ui) published to Nexus, Storybook visual docs, and a Next.js DevKit scaffold so new projects consume the design system from the first commit.
React Storybook Turborepo Tailwind
Infra
// self-hosted dev stack
$ docker compose up
gitea
plane (PM)
open-webui + ollama
MyWorkPlace — Self-Hosted Dev Stack
Production Docker Compose stack replacing Jira/Confluence/Bitbucket: Gitea, Plane, Woodpecker CI, Zammad, Keycloak, Nexus, plus a local AI stack (Ollama + Open WebUI). Wired together with Caddy, PostgreSQL, Redis, and Elasticsearch.
Docker Compose Caddy PostgreSQL Multi-Service
WPF
// Modern Win11 fluent UI
var media = await _vault
  .QueryAsync(filter)
  .WithTags(tags)
  .SortBy(rating);
Windows Vault
Windows 11-styled media manager with tagging, deduplication, thumbnail caching, and AND/OR tag filtering. Built on .NET 8, WPF, SQLite via EF Core, and CommunityToolkit MVVM.
C# / .NET 8 WPF MVVM SQLite
Java
$ gaia new spring-boot
resolving deps...
generating structure
wiring repositories
→ project ready in 0.8s
Gaia — Project Scaffolder
JavaFX desktop tool that scaffolds production-ready project trees for Spring Boot, React, Node/Express, Django, and Flask. Live dependency resolution against Maven Central, npm, and PyPI. Ships as a native Windows installer.
Java JavaFX Maven/NPM/PyPI
Java
// peer discovery + relay
var peer = P2PNode.listen(
  8888);
peer.onMessage(msg ->
  broadcast(msg));
P2P Messenger
Cross-platform peer-to-peer messaging with direct TCP transport and an embedded mobile web client so phones connect with zero install. Maven-built, JSON wire protocol.
Java Networking Maven
Android
// Apache MINA SSHD on Android
val server = SshServer.setUp()
  .port(2222)
  .withSftp()
  .start()
Hades — Android SSH Server
SSH/SFTP server that runs on Android, paired with a native Material 3 file browser. Built on Apache MINA SSHD, Jetpack Compose, and the Storage Access Framework.
Kotlin Jetpack Compose MINA SSHD
Android
// 4-tap secret vault
val vault = EncryptedFile
  .aes256(masterKey)
  .store(media)
// + private tor browser
PurplePad — Privacy Notes
Privacy-focused Android note app with an AES-256 vault, anti-fingerprinting Tor browser, and a DoD-grade emergency wipe (3-pass overwrite). Hidden behind multi-tap gestures.
Kotlin AES-256 Tor
Python
$ Snippy.exe
capture region
record screen
annotate & copy
// single-file portable
Snippy
Lightweight Windows snipping & screen-recording tool built in PyQt5. Bundled with PyInstaller into a single portable executable — no Python install required.
Python PyQt5 PyInstaller
Python
$ python main.py
16, 32, 48, 64
128, 256, 512
// PNG / JPG / WebP / GIF
Universal Icon Resizer
Tkinter + Pillow utility that batch-resizes any image to the full set of icon sizes for browser extensions, apps, and favicons.
Python Pillow Tkinter
$contact --send

Get in touch.

Let's build something.

Open to freelance work, full-time roles, and interesting collaborations. The fastest way to reach me is email — expect a reply within a day or so.