Senior Full-Stack Engineer

Dananjaya Polwattage

I build production web applications with React and Java Spring Boot, from banking platforms and ERP systems at scale to side projects in 3D and game dev.

Open to remote roles and freelance work, worldwide

01 · About

Senior Full-Stack Engineer with 6 years of production experience building React and Java Spring Boot applications across banking, ERP, and insurance domains.

I've led frontend architecture for a live banking platform, shipped systems serving 1,000,000+ users at 300 transactions per second, and take on freelance work through Upwork alongside the case studies below.

0+

Years Experience

0+

Users Served

0

Transactions / sec

0%

SLA Compliance

Frontend

ReactRedux ToolkitTypeScriptJestCypressWCAG

Backend

JavaSpring BootNode.jsMicroservicesREST APIs

Cloud & DevOps

AWS (EC2, S3, Lambda)DockerCI/CDPrometheusGrafana

Databases

PostgreSQLMySQLOracle PL/SQLMongoDB

Also explored

Three.jsreact-three-fiberAstroZustand

02 · Experience

6 years, three teams, one habit of shipping.

Senior Full-Stack Engineer, React & Java

Oct 2024 to Present
BT Bluechip Technical Services Pvt Ltd

Client: Commercial Bank of Ceylon · ~5,500 users · 250 TPS

Led the React.js frontend for the bank's enterprise document management platform, applied WCAG accessibility standards throughout, and cut production bugs 20% with Jest and Cypress coverage.

ReactSpring BootAWSJestCypress

Software Engineer, Full Stack & Backend

Oct 2021 to Oct 2024
IFS IFS R&D International

Clients: North America (remote) · ~1,000,000 users · 300 TPS

Built React and Spring Boot ERP modules serving 1,000,000+ users at 300 transactions per second, maintained 95% SLA compliance, and code-reviewed across a 50-engineer team.

ReactSpring BootOracle PL/SQLMicroservices

Trainee Full-Stack Engineer

Jun 2020 to Sep 2021
CGI Ceylinco General Insurance Ltd

~3,500 users · insurance claims workflows

Built responsive React.js frontends integrated with Node.js and Java backends across insurance claims and management workflows.

ReactNode.jsJavaASP.NET

03 · Selected Work

Four projects, four different problems.

IntelliQuiz screenshot

IntelliQuiz

A quiz platform for O-Level ICT students, and the teacher who runs the room.

Role

Full-stack: backend architecture, auth, and the React frontend

Problem: Students needed topic-based practice quizzes with instant feedback, and their teacher needed one place to manage the question bank, roster, and results, without stitching together separate tools.

Solution: Spring Boot 4 backend (JWT auth, rate-limited login, PostgreSQL via JPA) serving a React 19 + MUI frontend, built into a single deployable jar: one artifact, one process, nothing extra to host.

Java 21Spring BootSpring SecurityPostgreSQLJWTReact 19MUI
Lakmal Gardens screenshot

Lakmal Gardens

A marketing site for a landscaping business, content-driven and CMS-free.

Role

Full build: design system, content architecture, deployment

Problem: The business needed a fast, credible web presence for services and a gallery, without paying for or maintaining a CMS.

Solution: Astro static site with React islands only where interactivity earns its weight, a Tailwind design system, and a photo pipeline into Cloudflare R2 so content updates don't need a redeploy.

AstroReactTailwind CSSCloudflare R2
Live demo →
Plant Shop screenshot

Plant Shop

An idle greenhouse game: grow, sell, expand, repeat.

Role

Solo build: game design, 3D scene, state architecture

Problem: Wanted to prove out real-time 3D rendering and game-state design running in the browser, not just another CRUD app.

Solution: A react-three-fiber scene (greenhouse, market, terrain, camera controls) driven by a Zustand store handling progression rules and localStorage saves. A real game loop, entirely client-side.

Reactreact-three-fiberThree.jsZustand
Plant Species Studio screenshot

Plant Species Studio

A field-catalogue for plant species: fast search, zero backend.

Role

Solo build: data model, UI, search & filter

Problem: Needed a browsing experience for a growing species catalogue that stays trivial to extend, with no database, no admin panel, and no build step to add an entry.

Solution: Every species is one JSON file plus one image; Vite's import.meta.glob loads the whole catalogue at build time, so a new file is a new entry with no manual registration.

ReactTypeScriptVite

04 · Contact

Let's build something worth shipping.

Open to remote full-time roles and freelance engagements with employers and clients worldwide.

© 2026 Dananjaya Polwattage. Built with Astro & GSAP.