Ashen Perera

Ashen Perera

Senior full stack engineer in Colombo, Sri Lanka. Six years of SaaS, AI and payments work, drawn here in 40,000 grains of ash.

Built after hours

Floww

A personal finance app for Android. It reads bank and card SMS and turns each one into an expense, then keeps bills, credit cards, loans and savings in view across rupee and dollar wallets, with home-screen widgets and cloud sync.

Vue 3 · Quasar · Capacitor · Firebase

Read the code on GitHub
Three Floww screens side by side: Activity with a daily spending chart, Home with the amount left to spend this cycle, and Bills with a two-week calendar
Floww, Bank SMS: five transactions read from bank messages, each with an Add button
Floww, Monthly report: money in, paid out and net, with spending by cycle as a bar chart
Floww, a credit card: amount owed, the next settlement and this cycle's charges
Activity, Home and Bills, then a recording of the app in use, bank SMS import, the monthly report and a credit card.

DualAudio

Play the same sound on two Bluetooth headsets at once on Windows, in sync. A small WinForms app on raw WASAPI, with no virtual audio driver.

C# · Windows · WASAPI

Read the code on GitHub
The DualAudio window: a sync timeline in milliseconds, a list of headsets set to Main, Copy or Off, and start-up options
The app itself. Choose the main headset, give a second one a copy, and slide them into step on the sync timeline.

X68 Control

An offline settings app for the Attack Shark X68 HE keyboard, made for games: Rapid Trigger, per-game setups that switch on their own, macros and lighting. Unofficial.

JavaScript · Desktop · Hardware

Read the code on GitHub
X68 Control, Gaming screen: every key with its press depth, a row of saved setups, and automatic switching per game
X68 Control, Lighting screen: a grid of effects, brightness and speed, and a keyboard to paint key by key
X68 Control, Macros screen: a macro bound to Fn and Right Ctrl that works only in chosen games
Three of its six screens: gaming setups with press depth for every key, lighting, and macros stored on the keyboard.

G29 RPM LEDs

Drives the shift lights on a Logitech G29 wheel from live engine RPM in Forza Horizon 5 and Euro Truck Simulator 2.

Python · Sim racing · Telemetry

Read the code on GitHub

900

rpm

1

gear

A simulated engine. The lights on the wheel follow its revs, the way the real ones follow Forza Horizon 5 and Euro Truck Simulator 2.

In numbers

5.0 s → 21 ms

One search across 20,000 documents, timed in testing before and after.

The problem

Searching for text anywhere inside a field cannot use an ordinary index, so PostgreSQL was reading every one of 20,000 documents on every search. It took about five seconds.

What I did

Added a trigram GIN index with pg_trgm, which indexes every three-letter slice of the text, then ran the same searches again and compared the query plans and timings.

The result

The same search came back in 21 ms, about 240 times faster. The same round of tuning made a count query 21 times faster and a token lookup 213 times faster.

6+

Years shipping production software, from intern to senior engineer.

213×

Faster token lookup after tuning one query that every signed-in request depends on.

123/123

Regression cases passing after the end-to-end suite moved to AWS Fargate Spot.

Experience

Feb 2026 to now

Docupath

Senior Software Engineer

  • Multi-tenant backendNestJS, TypeORM and PostgreSQL modules for an XML mapping service, with a database per tenant, JWT authentication and an idempotent SQS consumer feeding a Lambda pipeline.
  • Visual mapping editorThe editor and admin screens in React and Vite, with TanStack Query, Tailwind CSS and Vitest tests.
  • AI features and toolingRate limiting, logging and feature flags for OpenAI-backed features, and a Claude Code agent workflow of skills and hooks.
  • Cloud and CI/CDThe Playwright suite on AWS Fargate Spot with Terraform and GitHub Actions over OIDC, for a platform serving EU and US regions.

Apr 2024 to Feb 2026

Centronixx

Senior Software Engineer

  • Reservato AIAn AI chat and restaurant booking platform in Next.js, OpenAI and Firebase, with an admin portal on AWS Amplify that has role-based access and analytics.
  • Nourah AI travel assistantA Flutter app that plans trips in real time with OpenAI and AWS Lambda, API Gateway and RDS.
  • Fine-tuned Mistral modelA RAG pipeline for restaurant recommendations on a fine-tuned Mistral Large model grounded in Pinecone vector search.
  • DFCC Bank Mastercard payments APIA PCI-compliant PHP REST API for the Mastercard Payment Gateway with tokenized payments, OAuth2, JWT and transaction auditing.

May 2022 to Mar 2024

Infragist

Software Engineer

  • Liwe condominium managementA property management platform in React, React Native, MongoDB and Firebase.
  • Catmonocle quiz gameLed a multiplayer quiz game with global matchmaking and leaderboards in React, .NET MVC, MySQL and AWS.
  • Love TicketNFT event ticketing on the Solana blockchain, issuing verifiable tickets on a decentralised marketplace.
  • ScribeITA medical reporting app that captures voice notes and syncs them to a secure web portal.

Sep 2020 to Apr 2022

Earlier

Junior and intern roles

  • Afisol, Junior Software EngineerMaterial ordering and sales reporting for Trelleborg in ASP.NET and SQL Server.
  • IAS Solutions, Intern Software EngineerWeb features in HTML, CSS and JavaScript, with test plans written against the requirements.

About

Ashen is an old word for the colour of ash. I took the hint: I like software that is light, fine-grained and quick to settle.

I am a senior full stack engineer with more than six years across B2B SaaS, travel tech and fintech. By day I build a multi-tenant platform at Docupath. Before that I shipped an AI restaurant booking platform, a trip-planning assistant and a PCI-compliant payments API. After hours I build things for myself: a finance app for my phone, one sound on two headsets, software for my keyboard, shift lights for my wheel.

What you can hire me for

  • Full stack web apps

    React or Next.js in front, Node.js, NestJS or .NET behind, PostgreSQL underneath, delivered with tests.

  • AI features that hold up

    Chat, search and RAG on OpenAI or Mistral with Pinecone, with rate limits and logging from the first day.

  • APIs and payments

    Secure REST APIs with OAuth2 and JWT, including a PCI-compliant Mastercard gateway integration.

  • Test automation

    Playwright end-to-end and API suites that run on every push in GitHub Actions.

  • Scraping and data

    Playwright scrapers that hand back clean CSV and JSON, however many pages it takes.

  • Mobile apps

    React Native and Flutter apps wired to AWS or Firebase.

When I work
9 am to 10 pm Sri Lanka time, UTC+5:30
How fast I reply
Within 30 minutes
How to hire me
Fixed-price gigs on Fiverr, hourly or fixed contracts on Upwork, or write to me directly

Toolbox

This page is three.js and one hand-written shader. No 3D models, sixty frames a second.

LanguagesTypeScript, JavaScript, C#, Python, PHP, Dart
InterfaceReact, Next.js, Angular, Tailwind CSS, TanStack Query, Vite
MobileReact Native, Flutter
ServerNode.js, NestJS, Express, .NET, TypeORM, REST APIs
DataPostgreSQL, MySQL, MongoDB, Firebase, Pinecone
AIOpenAI API, fine-tuned Mistral, RAG, Claude Code
Cloud and deliveryAWS, Docker, Terraform, GitHub Actions
TestingPlaywright, Vitest, Jest, PHPUnit

Education

National Institute of Business Management, Sri Lanka

  • BSc (Hons) in Computing and Software Engineering 2023 to 2024
  • Higher National Diploma in Software Engineering 2022 to 2023
  • Diploma in Software Engineering 2019 to 2021

Certificates

LinkedIn Learning, September 2025

  • AWS Essential Training for Developers
  • Next.js: Creating and Hosting a Full-Stack Site
  • Advanced Python Projects: Build AI Applications
  • API Testing and Validation

Say hello