About the Role
We're modernizing a large, business-critical fintech platform. Our current system is a mature Node.js/Express + MongoDB backend (with RabbitMQ workers, batch jobs, and a reports service) paired with a tri-generational frontend - layers of Backbone/Marionette, legacy React class components, and a React + Redux + Material-UI app all coexisting in one codebase.
We're looking for someone with the judgment to tell good patterns from bad ones - who can recognize where the legacy system went wrong, avoid repeating those mistakes in new work, and design scalable solutions that still have to live alongside a rigid, established system. You'll contribute to new NestJS services and Next.js UI, write tests, and ship changes that respect the constraints around you - using AI tooling (Claude Code, Copilot) as a force multiplier, not a crutch.
What you'll do- Work across the full stack - data model, API contract, UI, and production behavior - contributing to domains as they move onto the modern stack.
- Recognize bad legacy patterns and don't repeat them - read the existing Express/MongoDB and Backbone/React layers, understand where they fell short, and apply better practices in new development rather than carrying old habits forward.
- Design for scale within real constraints - build solutions that scale even when they have to integrate with a rigid legacy system that can't be changed wholesale.
- Build on the modern stack - NestJS modules (DI, guards, interceptors) and Next.js apps (App Router, server components, typed clients).
- Understand the strangler-fig approach - how legacy and new run side by side, behind feature flags, with zero data loss and no downtime - and contribute to it without disrupting it.
- Model relational data carefully - help move money-bearing/transactional data from documents into a normalized SQL schema with real constraints and safe migrations.
- Write tests as a default - unit, integration, E2E. The suite is what lets the team move fast safely.
- Spot and flag problems - the flaky test, the N+1, the missing index. Raise them clearly so they get prioritized, and pick them up when it makes sense.
- Use AI tooling efficiently while understanding and standing behind every line that lands.
Requirements- 4+ years shipping production full-stack
- Strong TypeScript front and back
- NestJS (or deep Express/Fastify w/ DI grasp)
- Next.js/React (hooks, App Router, SSR/CSR)
- PostgreSQL or MySQL (schema, indexing, transactions, migrations)
- An eye for distinguishing good patterns from bad legacy ones
- Ability to design scalable solutions that fit within an existing, rigid system
- Testing discipline (Jest, Playwright/Cypress, Supertest)
- API design (REST, auth, backward-compatible evolution)
Bonus: - Experience migrating off a legacy code
- Fintech/payments/ledger
- Message queues (RabbitMQ/SQS/Kafka)
- MongoDB/Mongoose Aggregation
- AWS/Docker/Kubernetes/CI
- Deliberate AI-agent use in production workflows
Who you are:- Takes ownership and responsibility for their work
- Eager to take initiative and grow
- Has the judgment to spot bad legacy code and the discipline to not repeat it in new work
- Designs for scale even inside rigid constraints
- Refactors and builds with better practices rather than carrying old patterns forward
- Moves carefully without breaking trust (tests + small PRs + flags)
- Communicates trade-offs clearly
- Raises issues and flags risks rather than routing around them
Our stack:- Today: Node • Express • MongoDB • RabbitMQ • React/Redux • Backbone • Material-UI • AWS • Jest
- Going: NestJS • Next.js • TypeScript end-to-end • PostgreSQL/MySQL • full automated coverage
BenefitsClassWallet is a positive, family-oriented team environment. Our focus is on encouragement, positive reinforcement, and gratitude. We work hard and are highly motivated to win but with a healthy perspective on life.
We offer an excellent salary and benefits commensurate with experience.