online · open to full-time · on-site · hybrid · remote
~ charl-roux · —— EDT · Ann Arbor, MI
// 00 — index

Senior Angular Developer building reactive, browser-native interfaces

I'm Charl Roux — nearly seven years building production Angular and TypeScript platforms, four of them as frontend team lead on an enterprise cybersecurity SaaS platform through Nov 2025. I took its codebase from Angular v2 to v19 without a rewrite or feature freeze, cut the main bundle from 400 KB to 250 KB, and built the shared API, auth, and permission-routing layers the product runs on. I'm now extending that experience into Python-backed AI applications, starting with DocLocal.

LOC
Ann Arbor, MI
TZ
EDT · UTC−4
EXP
~7 years
STATUS
full-time · on-site · hybrid · remote

now

available full-time · on-site · hybrid · remote · US-authorized · no sponsorship · Ann Arbor, MI hiring
currently building DocLocal — PDF Q&A where every answer cites a passage you can check. Runs on a Python/FastAPI backend over NVIDIA NIM, with streaming, mid-stream cancellation and session recovery. focus
shipped an Angular v2 → v19 modernization of a cybersecurity SaaS platform — no rewrite, no feature freeze, main bundle 400 KB → 250 KB (−37.5%). prod
architecture Angular Signals + OnPush change detection — fine-grained reactivity, no unnecessary re-renders. pattern
background Nearly seven years shipping production frontend — four years three months as frontend team lead on an enterprise cybersecurity SaaS platform to Nov 2025, two years eight months in agency delivery across 10+ production apps, and since late 2025 building DocLocal toward AI application engineering. exp

01Current work

One project, built in the open: retrieval-augmented document Q&A where every answer cites a passage you can check. Angular and Nx in the browser, a Python/FastAPI backend on NVIDIA NIM behind it.

// regression
−50%
Per-release regressions, roughly halved by Cypress and Jest suites wired into the DevSecOps pipeline.
// migrated
v2→v19
Angular versions, migrated incrementally on a live cybersecurity SaaS platform — no rewrite, no feature freeze.

02Skills & stack

A pragmatic, opinionated stack — picked because it scales for teams, not because it's fashionable.

$tree ./stack --years frontend/
├── angular·······v2 → v19, signals, standalone  7y
├── typescript·····strict, generics, type utils  7y
├── rxjs···········streams, custom operators  7y
├── ngrx···········store, effects, entity  5y
├── html···········semantic, WCAG 2.1  7y
├── css············grid, animations, arch  7y
└── web workers····off-main-thread compute  3y
$tree ./stack --platform platform/
├── ci-cd··········github actions, docker  4y
├── nx·············monorepos, affected graph  3y
├── module-fed·····runtime micro-frontends  3y
└── fastapi········python, rag api (doclocal) now
quality/
├── cypress········e2e, visual regression  5y
├── playwright·····e2e, workers, streamed ui now
├── jest···········unit, TestBed  5y
└── accessibility··aria, keyboard, axe  6y
approach/
├── reactive·······streams over imperative
├── strict-types···types as documentation
└── a11y-first·····a baseline, not a polish
// 03 — contact

Let's talk.

I'd love to hear about your project and how I could help. Drop a note via the form, or reach me directly — I read everything and reply within a day or two.

contact.sh — new message
⏎ shift+enter for newline · enter to send