Senior Full-Stack Developer
Only freelancers located in the U.S. may apply.U.S. located freelancers only
Location: Remote Team size: Small (you’ll know everyone’s name) Stack: Java 21 / Guice / Gradle backend + React 19 / TanStack / MUI frontend About the role QAction is a large-scale Java enterprise document, records, and workflow platform — multi-project Gradle build, ~15 modules, customer-specific deployments (USDA, Ditco, Ascension, Mayo). The backend is being modernized behind an OpenAPI v2 surface (oasv2); the frontend is being rebuilt off GWT onto React 19 + TanStack Router/Query/Start with MUI v7. We need a developer who’s equally comfortable extending a v2 endpoint in a Guice-wired Java service as they are wiring up a TanStack Query call behind a Lexical editor or a virtualized data table — and who treats Claude Code as a peer on the keyboard, not a novelty. You’ll work directly with the product lead. No layers, no JIRA theater. Ship, review, iterate. What you’ll do Own vertical slices end-to-end: OpenAPI spec → Manager/ManagerImpl + EndpointImpl in QAction Java → React 19 / TanStack Query UI → JUnit + Playwright coverage. Extend the QAction Java backend: Guice (constructor injection only), Hazelcast-aware code paths, customer-deployment-aware module wiring, JUnit under oasv2. Build Modern UI features in the React 19 stack: TanStack Router/Query/Start, MUI v7 + Emotion, React Hook Form + Zod, Lexical, dnd-kit, OIDC auth (oidc-client-ts), TypeScript with the wrapper-component discipline already in place (Button, Icon, LabeledObject, ScrollShadows, etc. — never raw MUI in features). Move features off GWT onto the React 19 stack one slice at a time, without breaking the legacy app. Pair with Claude Code daily — write prompts that ship code, review agent diffs critically, and improve our skills/agents library when the workflow has friction. Keep integration tests honest: real DB + Solr + Keycloak at the seam, not mocks. Tech direction you’ll be living in Backend Java 21, Gradle multi-project (build single modules — ./gradlew QAction:build — never clean build) Guice DI, constructor injection, Manager/ManagerImpl naming (we don’t use “Service”) OpenAPI-first v2 endpoints in oasv2, canonical error model, paginated response classes as standalone beans in oasv2.beans Hazelcast clustering, Solr search, Postgres/MSSQL, Keycloak/OIDC FileNet integration, document import/migration tooling, RMT/remote services Frontend (modern) React 19 + TypeScript, Vite 7, TanStack Router + Query + Start + Table MUI v7 + Emotion, MUI X Date Pickers + Tree View Lexical (rich text), @dnd-kit + Atlaskit pragmatic-drag-and-drop, react-virtualized, react-pdf React Hook Form + Zod, oidc-client-ts + react-oidc-context, notistack, pino File naming kebab-case, @/ path imports, theme-first styling, wrapper components over raw MUI Adjacent surfaces in scope over time qaction-vectorizer, qaction-shared (qcore / qdatabase / qcontent-search / qdomain-model), qaction-simple-api, qaction-load-tests, qaction-helm deployment What we’re looking for 8+ years shipping production app code across backend and frontend. You’ve owned services and UIs, not just one or the other. Java fluency — Guice or Spring DI, REST/OpenAPI design, JUnit. Bonus if you’ve worked in a 1M+ LOC enterprise Java codebase with customer-specific module deployments and didn’t flinch. Modern React fluency — React 18/19, TypeScript, TanStack Query (or React Query), a real opinion about effect dependency graphs, comfort with virtualized tables and rich-text editors. OpenAPI-first thinking. Specs are the source of truth, not documentation written after the fact. Claude Code power user. You write prompts that delegate well, you know when to use a subagent vs. inline, you’ve built or extended skills/hooks/MCP integrations. You can show us a recent session where Claude shipped something non-trivial under your direction. Small-team temperament. You’re allergic to ceremony. You read code before asking. You raise a small PR when it’s ready. Nice to have GWT (you won’t write new GWT, but you’ll need to read and migrate it). Workflow / BPMN, records management, e-signature, or ECM domain experience. Hazelcast, Solr, Keycloak operational familiarity. Lexical or another modern rich-text editor. Playwright (you’ll inherit a calibrated suite — we want you to improve it, not rewrite it). Podman/Docker compose stack bring-up across Postgres, MSSQL, Solr, Keycloak. Python services or Helm/Kubernetes deployment experience. How we work Small PRs. Every change ships through review. If it’s getting big, split it. Test-driven design. Tests come with the code, not after. JUnit on the Java side, Vitest + Playwright on the React side. Daily standups. 15 minutes, async-friendly, but we show up. Memory-backed Claude Code sessions — agents learn the codebase with you, not against you. To apply Send a link to a recent PR you’re proud of (any language) and a 5–10 minute Loom of you using Claude Code on a real task. We care more about the second one.
- More than 30 hrs/weekHourly
- 6+ monthsDuration
- IntermediateExperience Level
$45.00
-
$100.00
Hourly- Remote Job
- Ongoing projectProject Type
Skills and Expertise
Activity on this job
- Proposals:50+
- Last viewed by client:last week
- Interviewing:2
- Invites sent:5
- Unanswered invites:2
About the client
- United StatesSt. Louis6:35 PM
- $70K total spent7 hires, 0 active
- 1,474 hours
- Tech & ITMid-sized company (10-99 people)
Explore similar jobs on Upwork
How it works
Create your free profileHighlight your skills and experience, show your portfolio, and set your ideal pay rate.
Work the way you wantApply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
Get paid securelyFrom contract to payment, we help you work safely and get paid securely.
About Upwork
- 4.9/5(Average rating of clients by professionals)
- G2 2021#1 freelance platform
- 49,000+Signed contract every week
- $2.3BFreelancers earned on Upwork in 2020
Find the best freelance jobs
Growing your career is as easy as creating a free profile and finding work like this that fits your skills.
Trusted by