View isaacrowntree's full-sized avatar

Block or report isaacrowntree

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
isaacrowntree/README.md

Hi, I'm Isaac Rowntree 👋

Head of Tech at CamperMate. Open-source creator. Building typed trading infra in Rust, developer CLIs in Go, native React Native modules, AI-assisted video tooling, and personal finance tools in Python — plus a handful of Claude Code plugins and MCP servers.

Interested in the confluence of electronics and mechanical engineering (drones, eskates, and ebikes). Currently obsessing over Rust + OpenAPI codegen, agentic developer tooling, and shipping SaaS that doesn't feel like a framework.

🚀 Featured Startup

SessionHQ

The modern check-in platform for class-based studios. PIN pad. NFC tap. Real-time attendance. Pass management. Square payments. Multi-tenant with row-level security from day one. Built for dance studios, gyms, yoga & pilates, martial arts schools, and climbing gyms.

Next.js 16 · React 19 · Cloudflare Workers · Supabase · Square · Tailwind 4 · Sentry · Playwright

🌟 Launching with founding partner Havana on the Hastings — Port Macquarie's Latin dance community (Cuban salsa, bachata, urban kiz, rueda).

🌐 sessionhq.org · Founding partner


🔧 Featured Projects

🚲 A test-driven, code-as-data engine for "will this part fit my bike?" Rear shocks, forks, ebike motors & batteries, drivetrain, brakes, cockpit — deterministic fitment checks that return pass / warn / block with reasons, never a black-box yes/no. The interface/adapter problems (BB, freehub, rotor, headset) resolve to native / needs-adapter / incompatible. AI and guided measurement fill the frame data manufacturers don't publish.

TypeScript | Deterministic core, AI at the edges | Test-driven | Zero dependencies | MIT

Repository | Launch post


📐 True-3D technical drawings in SVG — ~180 lines, zero dependencies. Rotate → project → depth-sort → paint. Drop in a glTF/OBJ mesh and it extracts the feature edges into a rotatable, themeable, crawlable line drawing — no WebGL. Fills the empty niche between heavyweight 3D engines (hostile to linework) and dead pseudo-3D toys (no text). The whole page draws itself.

npm i linework

TypeScript | Zero dependencies | glTF/OBJ import → feature edges | painter's-algorithm depth sort | server-side renderable | MIT

🌐 Live demo | Repository | Launch post


🦀 Typed async Rust client for the Interactive Brokers Client Portal Web API — with HTTP, CLI, MCP, and TypeScript surfaces all generated from the same vendored OpenAPI spec. Five ergonomic surfaces, one command to regenerate them all when IBKR revises the spec.

git clone https://github.com/isaacrowntree/bezant &&cd bezant && docker compose up

Rust + Tokio + Axum | 155 paths / 1030 types | 13-step spec normalisation | MCP server for Claude / Cursor | TypeScript client included

📖 Documentation | Repository | Launch post


📈 Autonomous, multi-agent portfolio fund for Interactive Brokers — the companion to bezant. Nine deterministic TypeScript agents handle allocation (HRP / Black-Litterman), risk, tax, and execution, with validation-first trading, hard caps, and data-sanity gates. Runs standalone or under any scheduler; your real book stays in a gitignored file.

git clone https://github.com/isaacrowntree/sovereign-ibkr-fund &&cd sovereign-ibkr-fund && npm install

TypeScript | HRP / Black-Litterman / risk-parity | built on bezant | backtest engine | Apache/MIT

Repository | Launch post


🏋️ Open-source, offline-first barbell strength log — guided 5×5 & Madcow programs with automatic progression, per-side plate math, and PR tracking. A self-hostable PWA you actually own: reshape the engines, keep every rep on your device, no lock-in.

git clone https://github.com/isaacrowntree/rampset &&cd rampset && npm install && npm run dev

Next.js 16 | React 19 | Cloudflare Workers + Durable Objects | IndexedDB offline-first | MIT

📖 Site & guide | Repository | Launch post


Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support. Manage tasks, sprints, and comments without leaving the terminal.

brew install triptechtravel/tap/clickup

30+ commands | Git integration | AI agent support | Fuzzy search | JSON output

📖 Documentation | Repository


Personal finance ETL + dashboard for Australian bank statements and ATO tax returns. Ingests PDFs and CSVs from 6+ banks, auto-categorises transactions, computes business splits, and generates ATO-ready tax reports — all local-first with SQLite.

pip install -e .&& ledger init && ledger ingest

9 bank parsers | Auto-categorisation | ATO tax reports | Business splits | Net worth dashboard

📖 Documentation | Repository


🛹 Arduino Uno project for adding LED underglow to a Boosted Board electric skateboard.


💬 Command-line tool that bridges Slack, ClickUp, and GitHub for developers who live in the terminal.

brew install triptechtravel/tap/slackbuzz

📖 Documentation | Repository


🤖 Claude Code plugins for social media posting, eBay listings, and email management.


⚡ High-performance ZIP operations for React Native, powered by Nitro Modules.

npm install react-native-nitro-unzip react-native-nitro-modules

📖 Documentation | Repository | npm


📦 Other notable repos

RepoDescription
cloudflare-worker-rollbar🐛 Rollbar error tracking for Cloudflare Workers
color-grade-ai🎨 AI-powered .cube LUT generator for DaVinci Resolve
elixir-dojo🧪 Elixir learning dojo
tic-tac-toe-redux-dojo⭕ Redux introductory coding dojo

isaacrowntree.com

Pinned Loading

  1. triptechtravel/cloudflare-worker-rollbartriptechtravel/cloudflare-worker-rollbarPublic

    Cloudflare Worker Rollbar NPM JS package

    TypeScript 1

  2. triptechtravel/clickup-clitriptechtravel/clickup-cliPublic

    Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support

    Go 36 10

  3. triptechtravel/homebrew-taptriptechtravel/homebrew-tapPublic

    Homebrew tap for TripTech tools

    Ruby

  4. triptechtravel/slackbuzz-clitriptechtravel/slackbuzz-cliPublic

    A command-line tool for working with Slack messages, channels, and cross-tool workflows -- designed for developers who live in the terminal.

    Go 6

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
View isaacrowntree's full-sized avatar

Block or report isaacrowntree

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
isaacrowntree/README.md

Hi, I'm Isaac Rowntree 👋

Head of Tech at CamperMate. Open-source creator. Building typed trading infra in Rust, developer CLIs in Go, native React Native modules, AI-assisted video tooling, and personal finance tools in Python — plus a handful of Claude Code plugins and MCP servers.

Interested in the confluence of electronics and mechanical engineering (drones, eskates, and ebikes). Currently obsessing over Rust + OpenAPI codegen, agentic developer tooling, and shipping SaaS that doesn't feel like a framework.

🚀 Featured Startup

SessionHQ

The modern check-in platform for class-based studios. PIN pad. NFC tap. Real-time attendance. Pass management. Square payments. Multi-tenant with row-level security from day one. Built for dance studios, gyms, yoga & pilates, martial arts schools, and climbing gyms.

Next.js 16 · React 19 · Cloudflare Workers · Supabase · Square · Tailwind 4 · Sentry · Playwright

🌟 Launching with founding partner Havana on the Hastings — Port Macquarie's Latin dance community (Cuban salsa, bachata, urban kiz, rueda).

🌐 sessionhq.org · Founding partner


🔧 Featured Projects

🚲 A test-driven, code-as-data engine for "will this part fit my bike?" Rear shocks, forks, ebike motors & batteries, drivetrain, brakes, cockpit — deterministic fitment checks that return pass / warn / block with reasons, never a black-box yes/no. The interface/adapter problems (BB, freehub, rotor, headset) resolve to native / needs-adapter / incompatible. AI and guided measurement fill the frame data manufacturers don't publish.

TypeScript | Deterministic core, AI at the edges | Test-driven | Zero dependencies | MIT

Repository | Launch post


📐 True-3D technical drawings in SVG — ~180 lines, zero dependencies. Rotate → project → depth-sort → paint. Drop in a glTF/OBJ mesh and it extracts the feature edges into a rotatable, themeable, crawlable line drawing — no WebGL. Fills the empty niche between heavyweight 3D engines (hostile to linework) and dead pseudo-3D toys (no text). The whole page draws itself.

npm i linework

TypeScript | Zero dependencies | glTF/OBJ import → feature edges | painter's-algorithm depth sort | server-side renderable | MIT

🌐 Live demo | Repository | Launch post


🦀 Typed async Rust client for the Interactive Brokers Client Portal Web API — with HTTP, CLI, MCP, and TypeScript surfaces all generated from the same vendored OpenAPI spec. Five ergonomic surfaces, one command to regenerate them all when IBKR revises the spec.

git clone https://github.com/isaacrowntree/bezant &&cd bezant && docker compose up

Rust + Tokio + Axum | 155 paths / 1030 types | 13-step spec normalisation | MCP server for Claude / Cursor | TypeScript client included

📖 Documentation | Repository | Launch post


📈 Autonomous, multi-agent portfolio fund for Interactive Brokers — the companion to bezant. Nine deterministic TypeScript agents handle allocation (HRP / Black-Litterman), risk, tax, and execution, with validation-first trading, hard caps, and data-sanity gates. Runs standalone or under any scheduler; your real book stays in a gitignored file.

git clone https://github.com/isaacrowntree/sovereign-ibkr-fund &&cd sovereign-ibkr-fund && npm install

TypeScript | HRP / Black-Litterman / risk-parity | built on bezant | backtest engine | Apache/MIT

Repository | Launch post


🏋️ Open-source, offline-first barbell strength log — guided 5×5 & Madcow programs with automatic progression, per-side plate math, and PR tracking. A self-hostable PWA you actually own: reshape the engines, keep every rep on your device, no lock-in.

git clone https://github.com/isaacrowntree/rampset &&cd rampset && npm install && npm run dev

Next.js 16 | React 19 | Cloudflare Workers + Durable Objects | IndexedDB offline-first | MIT

📖 Site & guide | Repository | Launch post


Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support. Manage tasks, sprints, and comments without leaving the terminal.

brew install triptechtravel/tap/clickup

30+ commands | Git integration | AI agent support | Fuzzy search | JSON output

📖 Documentation | Repository


Personal finance ETL + dashboard for Australian bank statements and ATO tax returns. Ingests PDFs and CSVs from 6+ banks, auto-categorises transactions, computes business splits, and generates ATO-ready tax reports — all local-first with SQLite.

pip install -e .&& ledger init && ledger ingest

9 bank parsers | Auto-categorisation | ATO tax reports | Business splits | Net worth dashboard

📖 Documentation | Repository


🛹 Arduino Uno project for adding LED underglow to a Boosted Board electric skateboard.


💬 Command-line tool that bridges Slack, ClickUp, and GitHub for developers who live in the terminal.

brew install triptechtravel/tap/slackbuzz

📖 Documentation | Repository


🤖 Claude Code plugins for social media posting, eBay listings, and email management.


⚡ High-performance ZIP operations for React Native, powered by Nitro Modules.

npm install react-native-nitro-unzip react-native-nitro-modules

📖 Documentation | Repository | npm


📦 Other notable repos

RepoDescription
cloudflare-worker-rollbar🐛 Rollbar error tracking for Cloudflare Workers
color-grade-ai🎨 AI-powered .cube LUT generator for DaVinci Resolve
elixir-dojo🧪 Elixir learning dojo
tic-tac-toe-redux-dojo⭕ Redux introductory coding dojo

isaacrowntree.com

Pinned Loading

  1. triptechtravel/cloudflare-worker-rollbartriptechtravel/cloudflare-worker-rollbarPublic

    Cloudflare Worker Rollbar NPM JS package

    TypeScript 1

  2. triptechtravel/clickup-clitriptechtravel/clickup-cliPublic

    Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support

    Go 36 10

  3. triptechtravel/homebrew-taptriptechtravel/homebrew-tapPublic

    Homebrew tap for TripTech tools

    Ruby

  4. triptechtravel/slackbuzz-clitriptechtravel/slackbuzz-cliPublic

    A command-line tool for working with Slack messages, channels, and cross-tool workflows -- designed for developers who live in the terminal.

    Go 6

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
View isaacrowntree's full-sized avatar

Block or report isaacrowntree

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
isaacrowntree/README.md

Hi, I'm Isaac Rowntree 👋

Head of Tech at CamperMate. Open-source creator. Building typed trading infra in Rust, developer CLIs in Go, native React Native modules, AI-assisted video tooling, and personal finance tools in Python — plus a handful of Claude Code plugins and MCP servers.

Interested in the confluence of electronics and mechanical engineering (drones, eskates, and ebikes). Currently obsessing over Rust + OpenAPI codegen, agentic developer tooling, and shipping SaaS that doesn't feel like a framework.

🚀 Featured Startup

SessionHQ

The modern check-in platform for class-based studios. PIN pad. NFC tap. Real-time attendance. Pass management. Square payments. Multi-tenant with row-level security from day one. Built for dance studios, gyms, yoga & pilates, martial arts schools, and climbing gyms.

Next.js 16 · React 19 · Cloudflare Workers · Supabase · Square · Tailwind 4 · Sentry · Playwright

🌟 Launching with founding partner Havana on the Hastings — Port Macquarie's Latin dance community (Cuban salsa, bachata, urban kiz, rueda).

🌐 sessionhq.org · Founding partner


🔧 Featured Projects

🚲 A test-driven, code-as-data engine for "will this part fit my bike?" Rear shocks, forks, ebike motors & batteries, drivetrain, brakes, cockpit — deterministic fitment checks that return pass / warn / block with reasons, never a black-box yes/no. The interface/adapter problems (BB, freehub, rotor, headset) resolve to native / needs-adapter / incompatible. AI and guided measurement fill the frame data manufacturers don't publish.

TypeScript | Deterministic core, AI at the edges | Test-driven | Zero dependencies | MIT

Repository | Launch post


📐 True-3D technical drawings in SVG — ~180 lines, zero dependencies. Rotate → project → depth-sort → paint. Drop in a glTF/OBJ mesh and it extracts the feature edges into a rotatable, themeable, crawlable line drawing — no WebGL. Fills the empty niche between heavyweight 3D engines (hostile to linework) and dead pseudo-3D toys (no text). The whole page draws itself.

npm i linework

TypeScript | Zero dependencies | glTF/OBJ import → feature edges | painter's-algorithm depth sort | server-side renderable | MIT

🌐 Live demo | Repository | Launch post


🦀 Typed async Rust client for the Interactive Brokers Client Portal Web API — with HTTP, CLI, MCP, and TypeScript surfaces all generated from the same vendored OpenAPI spec. Five ergonomic surfaces, one command to regenerate them all when IBKR revises the spec.

git clone https://github.com/isaacrowntree/bezant &&cd bezant && docker compose up

Rust + Tokio + Axum | 155 paths / 1030 types | 13-step spec normalisation | MCP server for Claude / Cursor | TypeScript client included

📖 Documentation | Repository | Launch post


📈 Autonomous, multi-agent portfolio fund for Interactive Brokers — the companion to bezant. Nine deterministic TypeScript agents handle allocation (HRP / Black-Litterman), risk, tax, and execution, with validation-first trading, hard caps, and data-sanity gates. Runs standalone or under any scheduler; your real book stays in a gitignored file.

git clone https://github.com/isaacrowntree/sovereign-ibkr-fund &&cd sovereign-ibkr-fund && npm install

TypeScript | HRP / Black-Litterman / risk-parity | built on bezant | backtest engine | Apache/MIT

Repository | Launch post


🏋️ Open-source, offline-first barbell strength log — guided 5×5 & Madcow programs with automatic progression, per-side plate math, and PR tracking. A self-hostable PWA you actually own: reshape the engines, keep every rep on your device, no lock-in.

git clone https://github.com/isaacrowntree/rampset &&cd rampset && npm install && npm run dev

Next.js 16 | React 19 | Cloudflare Workers + Durable Objects | IndexedDB offline-first | MIT

📖 Site & guide | Repository | Launch post


Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support. Manage tasks, sprints, and comments without leaving the terminal.

brew install triptechtravel/tap/clickup

30+ commands | Git integration | AI agent support | Fuzzy search | JSON output

📖 Documentation | Repository


Personal finance ETL + dashboard for Australian bank statements and ATO tax returns. Ingests PDFs and CSVs from 6+ banks, auto-categorises transactions, computes business splits, and generates ATO-ready tax reports — all local-first with SQLite.

pip install -e .&& ledger init && ledger ingest

9 bank parsers | Auto-categorisation | ATO tax reports | Business splits | Net worth dashboard

📖 Documentation | Repository


🛹 Arduino Uno project for adding LED underglow to a Boosted Board electric skateboard.


💬 Command-line tool that bridges Slack, ClickUp, and GitHub for developers who live in the terminal.

brew install triptechtravel/tap/slackbuzz

📖 Documentation | Repository


🤖 Claude Code plugins for social media posting, eBay listings, and email management.


⚡ High-performance ZIP operations for React Native, powered by Nitro Modules.

npm install react-native-nitro-unzip react-native-nitro-modules

📖 Documentation | Repository | npm


📦 Other notable repos

RepoDescription
cloudflare-worker-rollbar🐛 Rollbar error tracking for Cloudflare Workers
color-grade-ai🎨 AI-powered .cube LUT generator for DaVinci Resolve
elixir-dojo🧪 Elixir learning dojo
tic-tac-toe-redux-dojo⭕ Redux introductory coding dojo

isaacrowntree.com

Pinned Loading

  1. triptechtravel/cloudflare-worker-rollbartriptechtravel/cloudflare-worker-rollbarPublic

    Cloudflare Worker Rollbar NPM JS package

    TypeScript 1

  2. triptechtravel/clickup-clitriptechtravel/clickup-cliPublic

    Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support

    Go 36 10

  3. triptechtravel/homebrew-taptriptechtravel/homebrew-tapPublic

    Homebrew tap for TripTech tools

    Ruby

  4. triptechtravel/slackbuzz-clitriptechtravel/slackbuzz-cliPublic

    A command-line tool for working with Slack messages, channels, and cross-tool workflows -- designed for developers who live in the terminal.

    Go 6

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
View isaacrowntree's full-sized avatar

Block or report isaacrowntree

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
isaacrowntree/README.md

Hi, I'm Isaac Rowntree 👋

Head of Tech at CamperMate. Open-source creator. Building typed trading infra in Rust, developer CLIs in Go, native React Native modules, AI-assisted video tooling, and personal finance tools in Python — plus a handful of Claude Code plugins and MCP servers.

Interested in the confluence of electronics and mechanical engineering (drones, eskates, and ebikes). Currently obsessing over Rust + OpenAPI codegen, agentic developer tooling, and shipping SaaS that doesn't feel like a framework.

🚀 Featured Startup

SessionHQ

The modern check-in platform for class-based studios. PIN pad. NFC tap. Real-time attendance. Pass management. Square payments. Multi-tenant with row-level security from day one. Built for dance studios, gyms, yoga & pilates, martial arts schools, and climbing gyms.

Next.js 16 · React 19 · Cloudflare Workers · Supabase · Square · Tailwind 4 · Sentry · Playwright

🌟 Launching with founding partner Havana on the Hastings — Port Macquarie's Latin dance community (Cuban salsa, bachata, urban kiz, rueda).

🌐 sessionhq.org · Founding partner


🔧 Featured Projects

🚲 A test-driven, code-as-data engine for "will this part fit my bike?" Rear shocks, forks, ebike motors & batteries, drivetrain, brakes, cockpit — deterministic fitment checks that return pass / warn / block with reasons, never a black-box yes/no. The interface/adapter problems (BB, freehub, rotor, headset) resolve to native / needs-adapter / incompatible. AI and guided measurement fill the frame data manufacturers don't publish.

TypeScript | Deterministic core, AI at the edges | Test-driven | Zero dependencies | MIT

Repository | Launch post


📐 True-3D technical drawings in SVG — ~180 lines, zero dependencies. Rotate → project → depth-sort → paint. Drop in a glTF/OBJ mesh and it extracts the feature edges into a rotatable, themeable, crawlable line drawing — no WebGL. Fills the empty niche between heavyweight 3D engines (hostile to linework) and dead pseudo-3D toys (no text). The whole page draws itself.

npm i linework

TypeScript | Zero dependencies | glTF/OBJ import → feature edges | painter's-algorithm depth sort | server-side renderable | MIT

🌐 Live demo | Repository | Launch post


🦀 Typed async Rust client for the Interactive Brokers Client Portal Web API — with HTTP, CLI, MCP, and TypeScript surfaces all generated from the same vendored OpenAPI spec. Five ergonomic surfaces, one command to regenerate them all when IBKR revises the spec.

git clone https://github.com/isaacrowntree/bezant &&cd bezant && docker compose up

Rust + Tokio + Axum | 155 paths / 1030 types | 13-step spec normalisation | MCP server for Claude / Cursor | TypeScript client included

📖 Documentation | Repository | Launch post


📈 Autonomous, multi-agent portfolio fund for Interactive Brokers — the companion to bezant. Nine deterministic TypeScript agents handle allocation (HRP / Black-Litterman), risk, tax, and execution, with validation-first trading, hard caps, and data-sanity gates. Runs standalone or under any scheduler; your real book stays in a gitignored file.

git clone https://github.com/isaacrowntree/sovereign-ibkr-fund &&cd sovereign-ibkr-fund && npm install

TypeScript | HRP / Black-Litterman / risk-parity | built on bezant | backtest engine | Apache/MIT

Repository | Launch post


🏋️ Open-source, offline-first barbell strength log — guided 5×5 & Madcow programs with automatic progression, per-side plate math, and PR tracking. A self-hostable PWA you actually own: reshape the engines, keep every rep on your device, no lock-in.

git clone https://github.com/isaacrowntree/rampset &&cd rampset && npm install && npm run dev

Next.js 16 | React 19 | Cloudflare Workers + Durable Objects | IndexedDB offline-first | MIT

📖 Site & guide | Repository | Launch post


Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support. Manage tasks, sprints, and comments without leaving the terminal.

brew install triptechtravel/tap/clickup

30+ commands | Git integration | AI agent support | Fuzzy search | JSON output

📖 Documentation | Repository


Personal finance ETL + dashboard for Australian bank statements and ATO tax returns. Ingests PDFs and CSVs from 6+ banks, auto-categorises transactions, computes business splits, and generates ATO-ready tax reports — all local-first with SQLite.

pip install -e .&& ledger init && ledger ingest

9 bank parsers | Auto-categorisation | ATO tax reports | Business splits | Net worth dashboard

📖 Documentation | Repository


🛹 Arduino Uno project for adding LED underglow to a Boosted Board electric skateboard.


💬 Command-line tool that bridges Slack, ClickUp, and GitHub for developers who live in the terminal.

brew install triptechtravel/tap/slackbuzz

📖 Documentation | Repository


🤖 Claude Code plugins for social media posting, eBay listings, and email management.


⚡ High-performance ZIP operations for React Native, powered by Nitro Modules.

npm install react-native-nitro-unzip react-native-nitro-modules

📖 Documentation | Repository | npm


📦 Other notable repos

RepoDescription
cloudflare-worker-rollbar🐛 Rollbar error tracking for Cloudflare Workers
color-grade-ai🎨 AI-powered .cube LUT generator for DaVinci Resolve
elixir-dojo🧪 Elixir learning dojo
tic-tac-toe-redux-dojo⭕ Redux introductory coding dojo

isaacrowntree.com

Pinned Loading

  1. triptechtravel/cloudflare-worker-rollbartriptechtravel/cloudflare-worker-rollbarPublic

    Cloudflare Worker Rollbar NPM JS package

    TypeScript 1

  2. triptechtravel/clickup-clitriptechtravel/clickup-cliPublic

    Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support

    Go 36 10

  3. triptechtravel/homebrew-taptriptechtravel/homebrew-tapPublic

    Homebrew tap for TripTech tools

    Ruby

  4. triptechtravel/slackbuzz-clitriptechtravel/slackbuzz-cliPublic

    A command-line tool for working with Slack messages, channels, and cross-tool workflows -- designed for developers who live in the terminal.

    Go 6

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
View isaacrowntree's full-sized avatar

Block or report isaacrowntree

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
isaacrowntree/README.md

Hi, I'm Isaac Rowntree 👋

Head of Tech at CamperMate. Open-source creator. Building typed trading infra in Rust, developer CLIs in Go, native React Native modules, AI-assisted video tooling, and personal finance tools in Python — plus a handful of Claude Code plugins and MCP servers.

Interested in the confluence of electronics and mechanical engineering (drones, eskates, and ebikes). Currently obsessing over Rust + OpenAPI codegen, agentic developer tooling, and shipping SaaS that doesn't feel like a framework.

🚀 Featured Startup

SessionHQ

The modern check-in platform for class-based studios. PIN pad. NFC tap. Real-time attendance. Pass management. Square payments. Multi-tenant with row-level security from day one. Built for dance studios, gyms, yoga & pilates, martial arts schools, and climbing gyms.

Next.js 16 · React 19 · Cloudflare Workers · Supabase · Square · Tailwind 4 · Sentry · Playwright

🌟 Launching with founding partner Havana on the Hastings — Port Macquarie's Latin dance community (Cuban salsa, bachata, urban kiz, rueda).

🌐 sessionhq.org · Founding partner


🔧 Featured Projects

🚲 A test-driven, code-as-data engine for "will this part fit my bike?" Rear shocks, forks, ebike motors & batteries, drivetrain, brakes, cockpit — deterministic fitment checks that return pass / warn / block with reasons, never a black-box yes/no. The interface/adapter problems (BB, freehub, rotor, headset) resolve to native / needs-adapter / incompatible. AI and guided measurement fill the frame data manufacturers don't publish.

TypeScript | Deterministic core, AI at the edges | Test-driven | Zero dependencies | MIT

Repository | Launch post


📐 True-3D technical drawings in SVG — ~180 lines, zero dependencies. Rotate → project → depth-sort → paint. Drop in a glTF/OBJ mesh and it extracts the feature edges into a rotatable, themeable, crawlable line drawing — no WebGL. Fills the empty niche between heavyweight 3D engines (hostile to linework) and dead pseudo-3D toys (no text). The whole page draws itself.

npm i linework

TypeScript | Zero dependencies | glTF/OBJ import → feature edges | painter's-algorithm depth sort | server-side renderable | MIT

🌐 Live demo | Repository | Launch post


🦀 Typed async Rust client for the Interactive Brokers Client Portal Web API — with HTTP, CLI, MCP, and TypeScript surfaces all generated from the same vendored OpenAPI spec. Five ergonomic surfaces, one command to regenerate them all when IBKR revises the spec.

git clone https://github.com/isaacrowntree/bezant &&cd bezant && docker compose up

Rust + Tokio + Axum | 155 paths / 1030 types | 13-step spec normalisation | MCP server for Claude / Cursor | TypeScript client included

📖 Documentation | Repository | Launch post


📈 Autonomous, multi-agent portfolio fund for Interactive Brokers — the companion to bezant. Nine deterministic TypeScript agents handle allocation (HRP / Black-Litterman), risk, tax, and execution, with validation-first trading, hard caps, and data-sanity gates. Runs standalone or under any scheduler; your real book stays in a gitignored file.

git clone https://github.com/isaacrowntree/sovereign-ibkr-fund &&cd sovereign-ibkr-fund && npm install

TypeScript | HRP / Black-Litterman / risk-parity | built on bezant | backtest engine | Apache/MIT

Repository | Launch post


🏋️ Open-source, offline-first barbell strength log — guided 5×5 & Madcow programs with automatic progression, per-side plate math, and PR tracking. A self-hostable PWA you actually own: reshape the engines, keep every rep on your device, no lock-in.

git clone https://github.com/isaacrowntree/rampset &&cd rampset && npm install && npm run dev

Next.js 16 | React 19 | Cloudflare Workers + Durable Objects | IndexedDB offline-first | MIT

📖 Site & guide | Repository | Launch post


Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support. Manage tasks, sprints, and comments without leaving the terminal.

brew install triptechtravel/tap/clickup

30+ commands | Git integration | AI agent support | Fuzzy search | JSON output

📖 Documentation | Repository


Personal finance ETL + dashboard for Australian bank statements and ATO tax returns. Ingests PDFs and CSVs from 6+ banks, auto-categorises transactions, computes business splits, and generates ATO-ready tax reports — all local-first with SQLite.

pip install -e .&& ledger init && ledger ingest

9 bank parsers | Auto-categorisation | ATO tax reports | Business splits | Net worth dashboard

📖 Documentation | Repository


🛹 Arduino Uno project for adding LED underglow to a Boosted Board electric skateboard.


💬 Command-line tool that bridges Slack, ClickUp, and GitHub for developers who live in the terminal.

brew install triptechtravel/tap/slackbuzz

📖 Documentation | Repository


🤖 Claude Code plugins for social media posting, eBay listings, and email management.


⚡ High-performance ZIP operations for React Native, powered by Nitro Modules.

npm install react-native-nitro-unzip react-native-nitro-modules

📖 Documentation | Repository | npm


📦 Other notable repos

RepoDescription
cloudflare-worker-rollbar🐛 Rollbar error tracking for Cloudflare Workers
color-grade-ai🎨 AI-powered .cube LUT generator for DaVinci Resolve
elixir-dojo🧪 Elixir learning dojo
tic-tac-toe-redux-dojo⭕ Redux introductory coding dojo

isaacrowntree.com

Pinned Loading

  1. triptechtravel/cloudflare-worker-rollbartriptechtravel/cloudflare-worker-rollbarPublic

    Cloudflare Worker Rollbar NPM JS package

    TypeScript 1

  2. triptechtravel/clickup-clitriptechtravel/clickup-cliPublic

    Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support

    Go 36 10

  3. triptechtravel/homebrew-taptriptechtravel/homebrew-tapPublic

    Homebrew tap for TripTech tools

    Ruby

  4. triptechtravel/slackbuzz-clitriptechtravel/slackbuzz-cliPublic

    A command-line tool for working with Slack messages, channels, and cross-tool workflows -- designed for developers who live in the terminal.

    Go 6

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
View isaacrowntree's full-sized avatar

Block or report isaacrowntree

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
isaacrowntree/README.md

Hi, I'm Isaac Rowntree 👋

Head of Tech at CamperMate. Open-source creator. Building typed trading infra in Rust, developer CLIs in Go, native React Native modules, AI-assisted video tooling, and personal finance tools in Python — plus a handful of Claude Code plugins and MCP servers.

Interested in the confluence of electronics and mechanical engineering (drones, eskates, and ebikes). Currently obsessing over Rust + OpenAPI codegen, agentic developer tooling, and shipping SaaS that doesn't feel like a framework.

🚀 Featured Startup

SessionHQ

The modern check-in platform for class-based studios. PIN pad. NFC tap. Real-time attendance. Pass management. Square payments. Multi-tenant with row-level security from day one. Built for dance studios, gyms, yoga & pilates, martial arts schools, and climbing gyms.

Next.js 16 · React 19 · Cloudflare Workers · Supabase · Square · Tailwind 4 · Sentry · Playwright

🌟 Launching with founding partner Havana on the Hastings — Port Macquarie's Latin dance community (Cuban salsa, bachata, urban kiz, rueda).

🌐 sessionhq.org · Founding partner


🔧 Featured Projects

🚲 A test-driven, code-as-data engine for "will this part fit my bike?" Rear shocks, forks, ebike motors & batteries, drivetrain, brakes, cockpit — deterministic fitment checks that return pass / warn / block with reasons, never a black-box yes/no. The interface/adapter problems (BB, freehub, rotor, headset) resolve to native / needs-adapter / incompatible. AI and guided measurement fill the frame data manufacturers don't publish.

TypeScript | Deterministic core, AI at the edges | Test-driven | Zero dependencies | MIT

Repository | Launch post


📐 True-3D technical drawings in SVG — ~180 lines, zero dependencies. Rotate → project → depth-sort → paint. Drop in a glTF/OBJ mesh and it extracts the feature edges into a rotatable, themeable, crawlable line drawing — no WebGL. Fills the empty niche between heavyweight 3D engines (hostile to linework) and dead pseudo-3D toys (no text). The whole page draws itself.

npm i linework

TypeScript | Zero dependencies | glTF/OBJ import → feature edges | painter's-algorithm depth sort | server-side renderable | MIT

🌐 Live demo | Repository | Launch post


🦀 Typed async Rust client for the Interactive Brokers Client Portal Web API — with HTTP, CLI, MCP, and TypeScript surfaces all generated from the same vendored OpenAPI spec. Five ergonomic surfaces, one command to regenerate them all when IBKR revises the spec.

git clone https://github.com/isaacrowntree/bezant &&cd bezant && docker compose up

Rust + Tokio + Axum | 155 paths / 1030 types | 13-step spec normalisation | MCP server for Claude / Cursor | TypeScript client included

📖 Documentation | Repository | Launch post


📈 Autonomous, multi-agent portfolio fund for Interactive Brokers — the companion to bezant. Nine deterministic TypeScript agents handle allocation (HRP / Black-Litterman), risk, tax, and execution, with validation-first trading, hard caps, and data-sanity gates. Runs standalone or under any scheduler; your real book stays in a gitignored file.

git clone https://github.com/isaacrowntree/sovereign-ibkr-fund &&cd sovereign-ibkr-fund && npm install

TypeScript | HRP / Black-Litterman / risk-parity | built on bezant | backtest engine | Apache/MIT

Repository | Launch post


🏋️ Open-source, offline-first barbell strength log — guided 5×5 & Madcow programs with automatic progression, per-side plate math, and PR tracking. A self-hostable PWA you actually own: reshape the engines, keep every rep on your device, no lock-in.

git clone https://github.com/isaacrowntree/rampset &&cd rampset && npm install && npm run dev

Next.js 16 | React 19 | Cloudflare Workers + Durable Objects | IndexedDB offline-first | MIT

📖 Site & guide | Repository | Launch post


Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support. Manage tasks, sprints, and comments without leaving the terminal.

brew install triptechtravel/tap/clickup

30+ commands | Git integration | AI agent support | Fuzzy search | JSON output

📖 Documentation | Repository


Personal finance ETL + dashboard for Australian bank statements and ATO tax returns. Ingests PDFs and CSVs from 6+ banks, auto-categorises transactions, computes business splits, and generates ATO-ready tax reports — all local-first with SQLite.

pip install -e .&& ledger init && ledger ingest

9 bank parsers | Auto-categorisation | ATO tax reports | Business splits | Net worth dashboard

📖 Documentation | Repository


🛹 Arduino Uno project for adding LED underglow to a Boosted Board electric skateboard.


💬 Command-line tool that bridges Slack, ClickUp, and GitHub for developers who live in the terminal.

brew install triptechtravel/tap/slackbuzz

📖 Documentation | Repository


🤖 Claude Code plugins for social media posting, eBay listings, and email management.


⚡ High-performance ZIP operations for React Native, powered by Nitro Modules.

npm install react-native-nitro-unzip react-native-nitro-modules

📖 Documentation | Repository | npm


📦 Other notable repos

RepoDescription
cloudflare-worker-rollbar🐛 Rollbar error tracking for Cloudflare Workers
color-grade-ai🎨 AI-powered .cube LUT generator for DaVinci Resolve
elixir-dojo🧪 Elixir learning dojo
tic-tac-toe-redux-dojo⭕ Redux introductory coding dojo

isaacrowntree.com

Pinned Loading

  1. triptechtravel/cloudflare-worker-rollbartriptechtravel/cloudflare-worker-rollbarPublic

    Cloudflare Worker Rollbar NPM JS package

    TypeScript 1

  2. triptechtravel/clickup-clitriptechtravel/clickup-cliPublic

    Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support

    Go 36 10

  3. triptechtravel/homebrew-taptriptechtravel/homebrew-tapPublic

    Homebrew tap for TripTech tools

    Ruby

  4. triptechtravel/slackbuzz-clitriptechtravel/slackbuzz-cliPublic

    A command-line tool for working with Slack messages, channels, and cross-tool workflows -- designed for developers who live in the terminal.

    Go 6

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
View isaacrowntree's full-sized avatar

Block or report isaacrowntree

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
isaacrowntree/README.md

Hi, I'm Isaac Rowntree 👋

Head of Tech at CamperMate. Open-source creator. Building typed trading infra in Rust, developer CLIs in Go, native React Native modules, AI-assisted video tooling, and personal finance tools in Python — plus a handful of Claude Code plugins and MCP servers.

Interested in the confluence of electronics and mechanical engineering (drones, eskates, and ebikes). Currently obsessing over Rust + OpenAPI codegen, agentic developer tooling, and shipping SaaS that doesn't feel like a framework.

🚀 Featured Startup

SessionHQ

The modern check-in platform for class-based studios. PIN pad. NFC tap. Real-time attendance. Pass management. Square payments. Multi-tenant with row-level security from day one. Built for dance studios, gyms, yoga & pilates, martial arts schools, and climbing gyms.

Next.js 16 · React 19 · Cloudflare Workers · Supabase · Square · Tailwind 4 · Sentry · Playwright

🌟 Launching with founding partner Havana on the Hastings — Port Macquarie's Latin dance community (Cuban salsa, bachata, urban kiz, rueda).

🌐 sessionhq.org · Founding partner


🔧 Featured Projects

🚲 A test-driven, code-as-data engine for "will this part fit my bike?" Rear shocks, forks, ebike motors & batteries, drivetrain, brakes, cockpit — deterministic fitment checks that return pass / warn / block with reasons, never a black-box yes/no. The interface/adapter problems (BB, freehub, rotor, headset) resolve to native / needs-adapter / incompatible. AI and guided measurement fill the frame data manufacturers don't publish.

TypeScript | Deterministic core, AI at the edges | Test-driven | Zero dependencies | MIT

Repository | Launch post


📐 True-3D technical drawings in SVG — ~180 lines, zero dependencies. Rotate → project → depth-sort → paint. Drop in a glTF/OBJ mesh and it extracts the feature edges into a rotatable, themeable, crawlable line drawing — no WebGL. Fills the empty niche between heavyweight 3D engines (hostile to linework) and dead pseudo-3D toys (no text). The whole page draws itself.

npm i linework

TypeScript | Zero dependencies | glTF/OBJ import → feature edges | painter's-algorithm depth sort | server-side renderable | MIT

🌐 Live demo | Repository | Launch post


🦀 Typed async Rust client for the Interactive Brokers Client Portal Web API — with HTTP, CLI, MCP, and TypeScript surfaces all generated from the same vendored OpenAPI spec. Five ergonomic surfaces, one command to regenerate them all when IBKR revises the spec.

git clone https://github.com/isaacrowntree/bezant &&cd bezant && docker compose up

Rust + Tokio + Axum | 155 paths / 1030 types | 13-step spec normalisation | MCP server for Claude / Cursor | TypeScript client included

📖 Documentation | Repository | Launch post


📈 Autonomous, multi-agent portfolio fund for Interactive Brokers — the companion to bezant. Nine deterministic TypeScript agents handle allocation (HRP / Black-Litterman), risk, tax, and execution, with validation-first trading, hard caps, and data-sanity gates. Runs standalone or under any scheduler; your real book stays in a gitignored file.

git clone https://github.com/isaacrowntree/sovereign-ibkr-fund &&cd sovereign-ibkr-fund && npm install

TypeScript | HRP / Black-Litterman / risk-parity | built on bezant | backtest engine | Apache/MIT

Repository | Launch post


🏋️ Open-source, offline-first barbell strength log — guided 5×5 & Madcow programs with automatic progression, per-side plate math, and PR tracking. A self-hostable PWA you actually own: reshape the engines, keep every rep on your device, no lock-in.

git clone https://github.com/isaacrowntree/rampset &&cd rampset && npm install && npm run dev

Next.js 16 | React 19 | Cloudflare Workers + Durable Objects | IndexedDB offline-first | MIT

📖 Site & guide | Repository | Launch post


Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support. Manage tasks, sprints, and comments without leaving the terminal.

brew install triptechtravel/tap/clickup

30+ commands | Git integration | AI agent support | Fuzzy search | JSON output

📖 Documentation | Repository


Personal finance ETL + dashboard for Australian bank statements and ATO tax returns. Ingests PDFs and CSVs from 6+ banks, auto-categorises transactions, computes business splits, and generates ATO-ready tax reports — all local-first with SQLite.

pip install -e .&& ledger init && ledger ingest

9 bank parsers | Auto-categorisation | ATO tax reports | Business splits | Net worth dashboard

📖 Documentation | Repository


🛹 Arduino Uno project for adding LED underglow to a Boosted Board electric skateboard.


💬 Command-line tool that bridges Slack, ClickUp, and GitHub for developers who live in the terminal.

brew install triptechtravel/tap/slackbuzz

📖 Documentation | Repository


🤖 Claude Code plugins for social media posting, eBay listings, and email management.


⚡ High-performance ZIP operations for React Native, powered by Nitro Modules.

npm install react-native-nitro-unzip react-native-nitro-modules

📖 Documentation | Repository | npm


📦 Other notable repos

RepoDescription
cloudflare-worker-rollbar🐛 Rollbar error tracking for Cloudflare Workers
color-grade-ai🎨 AI-powered .cube LUT generator for DaVinci Resolve
elixir-dojo🧪 Elixir learning dojo
tic-tac-toe-redux-dojo⭕ Redux introductory coding dojo

isaacrowntree.com

Pinned Loading

  1. triptechtravel/cloudflare-worker-rollbartriptechtravel/cloudflare-worker-rollbarPublic

    Cloudflare Worker Rollbar NPM JS package

    TypeScript 1

  2. triptechtravel/clickup-clitriptechtravel/clickup-cliPublic

    Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support

    Go 36 10

  3. triptechtravel/homebrew-taptriptechtravel/homebrew-tapPublic

    Homebrew tap for TripTech tools

    Ruby

  4. triptechtravel/slackbuzz-clitriptechtravel/slackbuzz-cliPublic

    A command-line tool for working with Slack messages, channels, and cross-tool workflows -- designed for developers who live in the terminal.

    Go 6

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
View isaacrowntree's full-sized avatar

Block or report isaacrowntree

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
isaacrowntree/README.md

Hi, I'm Isaac Rowntree 👋

Head of Tech at CamperMate. Open-source creator. Building typed trading infra in Rust, developer CLIs in Go, native React Native modules, AI-assisted video tooling, and personal finance tools in Python — plus a handful of Claude Code plugins and MCP servers.

Interested in the confluence of electronics and mechanical engineering (drones, eskates, and ebikes). Currently obsessing over Rust + OpenAPI codegen, agentic developer tooling, and shipping SaaS that doesn't feel like a framework.

🚀 Featured Startup

SessionHQ

The modern check-in platform for class-based studios. PIN pad. NFC tap. Real-time attendance. Pass management. Square payments. Multi-tenant with row-level security from day one. Built for dance studios, gyms, yoga & pilates, martial arts schools, and climbing gyms.

Next.js 16 · React 19 · Cloudflare Workers · Supabase · Square · Tailwind 4 · Sentry · Playwright

🌟 Launching with founding partner Havana on the Hastings — Port Macquarie's Latin dance community (Cuban salsa, bachata, urban kiz, rueda).

🌐 sessionhq.org · Founding partner


🔧 Featured Projects

🚲 A test-driven, code-as-data engine for "will this part fit my bike?" Rear shocks, forks, ebike motors & batteries, drivetrain, brakes, cockpit — deterministic fitment checks that return pass / warn / block with reasons, never a black-box yes/no. The interface/adapter problems (BB, freehub, rotor, headset) resolve to native / needs-adapter / incompatible. AI and guided measurement fill the frame data manufacturers don't publish.

TypeScript | Deterministic core, AI at the edges | Test-driven | Zero dependencies | MIT

Repository | Launch post


📐 True-3D technical drawings in SVG — ~180 lines, zero dependencies. Rotate → project → depth-sort → paint. Drop in a glTF/OBJ mesh and it extracts the feature edges into a rotatable, themeable, crawlable line drawing — no WebGL. Fills the empty niche between heavyweight 3D engines (hostile to linework) and dead pseudo-3D toys (no text). The whole page draws itself.

npm i linework

TypeScript | Zero dependencies | glTF/OBJ import → feature edges | painter's-algorithm depth sort | server-side renderable | MIT

🌐 Live demo | Repository | Launch post


🦀 Typed async Rust client for the Interactive Brokers Client Portal Web API — with HTTP, CLI, MCP, and TypeScript surfaces all generated from the same vendored OpenAPI spec. Five ergonomic surfaces, one command to regenerate them all when IBKR revises the spec.

git clone https://github.com/isaacrowntree/bezant &&cd bezant && docker compose up

Rust + Tokio + Axum | 155 paths / 1030 types | 13-step spec normalisation | MCP server for Claude / Cursor | TypeScript client included

📖 Documentation | Repository | Launch post


📈 Autonomous, multi-agent portfolio fund for Interactive Brokers — the companion to bezant. Nine deterministic TypeScript agents handle allocation (HRP / Black-Litterman), risk, tax, and execution, with validation-first trading, hard caps, and data-sanity gates. Runs standalone or under any scheduler; your real book stays in a gitignored file.

git clone https://github.com/isaacrowntree/sovereign-ibkr-fund &&cd sovereign-ibkr-fund && npm install

TypeScript | HRP / Black-Litterman / risk-parity | built on bezant | backtest engine | Apache/MIT

Repository | Launch post


🏋️ Open-source, offline-first barbell strength log — guided 5×5 & Madcow programs with automatic progression, per-side plate math, and PR tracking. A self-hostable PWA you actually own: reshape the engines, keep every rep on your device, no lock-in.

git clone https://github.com/isaacrowntree/rampset &&cd rampset && npm install && npm run dev

Next.js 16 | React 19 | Cloudflare Workers + Durable Objects | IndexedDB offline-first | MIT

📖 Site & guide | Repository | Launch post


Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support. Manage tasks, sprints, and comments without leaving the terminal.

brew install triptechtravel/tap/clickup

30+ commands | Git integration | AI agent support | Fuzzy search | JSON output

📖 Documentation | Repository


Personal finance ETL + dashboard for Australian bank statements and ATO tax returns. Ingests PDFs and CSVs from 6+ banks, auto-categorises transactions, computes business splits, and generates ATO-ready tax reports — all local-first with SQLite.

pip install -e .&& ledger init && ledger ingest

9 bank parsers | Auto-categorisation | ATO tax reports | Business splits | Net worth dashboard

📖 Documentation | Repository


🛹 Arduino Uno project for adding LED underglow to a Boosted Board electric skateboard.


💬 Command-line tool that bridges Slack, ClickUp, and GitHub for developers who live in the terminal.

brew install triptechtravel/tap/slackbuzz

📖 Documentation | Repository


🤖 Claude Code plugins for social media posting, eBay listings, and email management.


⚡ High-performance ZIP operations for React Native, powered by Nitro Modules.

npm install react-native-nitro-unzip react-native-nitro-modules

📖 Documentation | Repository | npm


📦 Other notable repos

RepoDescription
cloudflare-worker-rollbar🐛 Rollbar error tracking for Cloudflare Workers
color-grade-ai🎨 AI-powered .cube LUT generator for DaVinci Resolve
elixir-dojo🧪 Elixir learning dojo
tic-tac-toe-redux-dojo⭕ Redux introductory coding dojo

isaacrowntree.com

Pinned Loading

  1. triptechtravel/cloudflare-worker-rollbartriptechtravel/cloudflare-worker-rollbarPublic

    Cloudflare Worker Rollbar NPM JS package

    TypeScript 1

  2. triptechtravel/clickup-clitriptechtravel/clickup-cliPublic

    Command-line tool for ClickUp with git integration, GitHub linking, and AI agent support

    Go 36 10

  3. triptechtravel/homebrew-taptriptechtravel/homebrew-tapPublic

    Homebrew tap for TripTech tools

    Ruby

  4. triptechtravel/slackbuzz-clitriptechtravel/slackbuzz-cliPublic

    A command-line tool for working with Slack messages, channels, and cross-tool workflows -- designed for developers who live in the terminal.

    Go 6