Skip to content

Backend Software engineer at Rapid7, Belfast

Janiru
Fonseka

I build backend systems at Rapid7, mostly working with Java, search infrastructure and data pipelines.

Computer Science graduate from Queen's University Belfast. I also build software and explore ideas of my own.

Message me on LinkedIn (opens in a new tab)GitHub (opens in a new tab)

Experience

  1. Oct 2026 – Present

    Software Engineer

    Dawson Andrews, BelfastFull timeCurrent

    I recently joined Dawson Andrews as a software engineer.

  2. Sept 2025 – Oct 2026

    Software Engineer 1

    Rapid7, BelfastFull time

    I worked on production services for security-critical systems, keeping them reliable while making them easier to build and maintain. I led zero-downtime Java and Spring Boot upgrades (including a move to Generational ZGC), consolidated client microservices, halved Maven build times in Jenkins, and took part in the on-call rotation for production incidents.

  3. May – Aug 2025

    Software Developer

    Sourcing Lens with Queen's University BelfastSummer role

    I built the backend for an early-stage startup: Java and Spring microservices talking over gRPC behind an API gateway, with Keycloak for authentication and a pipeline that turns uploaded documents into structured data through LLM-based workers.

  4. June 2023 – Aug 2024

    Software Engineer Intern

    Rapid7, BelfastPlacement year

    I worked across several products and their microservices, taking tickets from triage through to review and testing, helping customers move to Rapid7's new MDR offering Alert Triage, and clearing Snyk-reported vulnerabilities to deadline.

  5. 2019 – 2021

    Web Developer

    Self-employed, United Arab EmiratesFreelance

    I designed and built websites for businesses in engineering, manufacturing and education, running each project from the first client meeting to delivery, with a custom CMS so clients could update their own content.

Projects

Side project

Live polling and quizzing application

Built with

  • Go
  • Next.js
  • WebSockets

Try it out (opens in a new tab)

I built this because Google Meet's polls didn't work the way my team estimates tickets. It lets everyone join a room, vote on a story point estimate, and see the results. My team at Rapid7 now uses it for sprint planning.

There's no sign-up. Each participant gets an anonymous JWT when they join, so votes can be tied to a participant without creating an account.

The tricky part was handling dropped connections. If someone disconnects mid-vote, the client reconnects and the server handles races between the old and new connections. Votes stay intact and everyone sees the same result.

Final year project

Auditable and Tamper-Proof Compensation Tracking with Blockchain

Built with

  • Hyperledger Fabric
  • Go
  • gRPC
  • RabbitMQ
  • React

For my final-year project, I built a claims management system with a permissioned blockchain as its audit trail. Changes can be checked later, while the application itself runs on Go microservices behind an API gateway.

Asynchronous writes
Writing to the blockchain synchronously made requests slow. I used RabbitMQ to queue writes so the API could respond without waiting for each one to finish.
Keeping data private
Personal data stays off the blockchain. The ledger stores SHA-256 hashes that can be checked against the original data.
Access control
Users have individual Fabric certificates, allowing actions to be attributed to an identity. Access rules use Fabric attributes and separate organisation channels.
Testing
I added unit and integration tests, a GitHub Actions pipeline, and Cypress end-to-end tests for the claimant and insurer dashboards.

Client work

Building a digital library and video pipeline

Built with

  • Laravel
  • Statamic
  • Alpine.js
  • Go
  • FFmpeg
  • Cloudflare R2

View the digital library (opens in a new tab)

I built PIMA-UAE's online members' platform, bringing its video library, reading material and discussion forum into one place. The site runs on Laravel and Statamic, with Alpine.js on the frontend.

Rather than rely on a hosted video platform, I built a small Go service to transcode uploads with FFmpeg and store the resulting video files in Cloudflare R2. Playback runs through a CDN, with access checked before files are served.

Toolbox

Languages
Java, Go, JavaScript, PHP, SQL
Frameworks
Spring, Node.js, Next.js, React, Laravel, Tailwind CSS
Infrastructure
Kubernetes, Docker, Terraform, AWS, DigitalOcean, Cloudflare, Hyperledger Fabric
Data and messaging
PostgreSQL, MySQL, MongoDB, RabbitMQ, OpenSearch, Redis, SQS, SNS
Testing and CI/CD
Jenkins, GitHub Actions, Grafana, Prometheus, k6 synthetic testing, Snyk
AI tooling
Kiro and Kiro CLI, Claude, GitHub Copilot, AI-assisted development

Education

  1. Sept 2021 – June 2025

    BSc (Hons) Computer Science with Professional Experience

    Queen's University BelfastFirst Class Honours

    The degree included a year in industry at Rapid7. For my final-year project, I built ClaimAura.

Outside work

  • Treasurer, Queen's Computing Society

    Aug 2023 to June 2024

    Managed the society's finances and annual funding, and helped organise and budget for the EEECS Formal 2024. The event raised a donation for Macmillan Cancer Support.

  • Spanish, beginners' level

    Aug 2024

    Completed the Spanish Early A1 course at the Queen's University Language Centre.

Contact

The best way to reach me is a message on LinkedIn. I read them all and reply there.