Open to opportunities

Lashithendra Bandara

Full-Stack Software Engineer · Sri Lanka

Owning enterprise apps end to end in C# / .NET, Blazor and React.

Lashithendra Bandara profile picture
About

A bit about me

I'm a full-stack software engineer at an Australian electronics manufacturer. I own internal enterprise apps end to end: gathering requirements, designing the architecture, and shipping backend and frontend myself.

I came into software from mechanical engineering. After a year as a design engineer at Colombo Dockyard, I resigned, finished a full-stack development program in Panadura, Sri Lanka in 2023, and joined my current team right after.

My stack is C# / .NET (7 through 10) with ASP.NET Core, EF Core, Blazor, and React with TypeScript. I work a lot with multi-hub data, M-Files and Syspro integrations, background workers on Windows Services, and access control. On my own initiative I brought AI-assisted development into our workflow using Claude Code and opencode.

Tech Stack

What I build with

Tools and technologies I reach for most often.

Languages
  • C#
  • SQL
  • JavaScript (familiar)
  • TypeScript (familiar)
  • Python (familiar)
Backend
  • .NET / ASP.NET Core
  • Entity Framework Core
  • Blazor Server
  • Blazor WebAssembly
  • Quartz.NET
  • Windows Services
Frontend
  • Blazor
  • MudBlazor
  • Radzen
  • React (familiar)
  • Next.js (familiar)
  • Vite (familiar)
  • MUI (familiar)
Data & Infra
  • SQL Server
  • MySQL
  • Azure App Service
  • Microsoft Entra ID
  • Azure File Share
  • Cloudflare Pages
Tooling & Integrations
  • Git
  • xUnit
  • Serilog
  • OpenAPI
  • Microsoft Graph
  • M-Files REST API
AI Assistants
  • Claude Code
  • opencode
  • GitHub Copilot CLI
Projects

Selected work

A few things I've built recently. Each project lists its stack and the features that mattered.

Customer Portal

2026

A multi-tenant customer portal with hub-scoped RBAC, invite-based onboarding and workflow automation.

An ASP.NET Core 10 REST API behind a React 19 SPA. Roles are computed from company membership rather than stored, per-module access is enforced by a dynamic authorization policy built at request time, and workflows are Lua-scripted state machines with email triggers. Onboarding is invite-only via Microsoft Graph, with data scoped per hub across five global regions.

Features
  • Roles computed from company membership rather than stored, with dynamic per-module authorization policies
  • Hub-scoped data isolation across five regions (EU/AU/LK/US/SI)
  • Invite-based onboarding with transactional email via Microsoft Graph (app-only OAuth, locked to a shared mailbox)
  • Lua-scripted workflow state machines with email triggers
C#.NET 10ASP.NET CoreEF CoreSQL ServerASP.NET IdentityReact 19TypeScriptViteMUIMicrosoft GraphCloudflare Pages

Unified Task Scheduler

2025

A centralized scheduler that runs periodic jobs across many apps from one place.

A Windows Service worker plus a Blazor Server admin panel. Instead of every internal app carrying its own scheduled jobs, this service invokes REST endpoints on target applications on a defined schedule. Config changes take effect within 30 seconds without restarting the service, task 'buckets' run related jobs as sequential workflows, and execution logs are deliberately decoupled from tasks so history survives task deletion.

Features
  • Replaces per-app scheduled jobs with one scheduler that invokes REST endpoints on target apps
  • Quartz.NET worker with live config reload (polls the DB every 30s, no restart needed)
  • Task 'buckets' run related jobs as sequential workflows; groups auto-disable on failure with email alerts
  • Decoupled execution logs survive task deletion for historical analysis; worker heartbeat health monitoring
C#.NET 9Quartz.NETBlazor ServerMudBlazorEF CoreMySQLSerilogWindows Service

Inventory Analytics Platform

2025

An inventory snapshot and usage-trend platform bridging regional Syspro ERP data into a central analytics store.

A Blazor Server + WebAssembly platform that periodically captures inventory state across five regional Syspro ERP databases, calculates daily usage, and surfaces warehouse-level projections. A shared DTO/enum library keeps types honest between client and server, and an xUnit test suite pins down query correctness, including tests that compare async and LINQ implementations of the same join for parity.

Features
  • Captures periodic inventory snapshots across five regional Syspro databases
  • Calculates daily usage trends and warehouse-level projections
  • Excel export via ClosedXML; dual Blazor Server + WebAssembly delivery
  • Repository and service layers backed by an xUnit test suite
C#.NET 9Blazor ServerBlazor WebAssemblyMudBlazorEF CoreSQL ServerClosedXMLxUnit

Enterprise Data Sync Platform

2025

A data-sync platform that pulls M-Files enterprise records into SQL Server via CLI, web UI, or background service.

One sync engine, three execution models: a command-line tool, a web UI, and a Windows Service, all sharing the same core. Generic base entities keep the code extensible across 9+ M-Files entity types, and incremental sync is driven by per-class last-sync timestamps so each run only pulls what changed. Every operation is written to an audit log for compliance and troubleshooting.

Features
  • Syncs 9+ M-Files entity types (sales opportunities, quality incident reports, compliance applications, supplier non-conformance reports, and more)
  • Incremental sync via per-class last-sync timestamps with a full audit log
  • One sync engine shared across three execution models: CLI, web UI, and Windows Service
  • Generic base-entity patterns for extensibility without duplication
C#.NET 9ASP.NET CoreRazor PagesQuickGridEF CoreSQL ServerM-Files REST APICsvHelperWindows Service

Inventory Demand Forecast

2024

A multi-hub inventory demand-forecasting app that ingests EDI data and projects demand across five global regions.

A Blazor WebAssembly frontend over an ASP.NET Core API, live in production. Users generate new demand forecasts and review historical ones, working across five regional SQL Server databases (AU, EU, US, SI, LK) plus a shared MySQL app database. The app ingests EDI files, projects consumption from historical movement data, and tracks in-flight long-running generation with a ConcurrentDictionary-based state manager.

Features
  • Coordinates five regional SQL Server databases (AU/EU/US/SI/LK) plus a shared app database
  • Ingests and parses EDI files to drive consumption analysis and forecast generation
  • Thread-safe concurrent state tracking via a ConcurrentDictionary-based state manager
  • Documented OpenAPI surface; live in production
C#.NET 8ASP.NET CoreBlazor WebAssemblyRadzenEF CoreSQL ServerMySQLOpenAPI

Partner Certification Management System

2024

A certification-management portal for accredited partner organisations, integrated with M-Files document management.

A three-tier design (Blazor WebAssembly client, ASP.NET Core Web API, SQL Server) that manages the lifecycle of partner-organisation applications and compliance certifications. The same M-Files sync logic runs in two hosts (an interactive Blazor Server UI for operator-triggered sync and a Windows Service for automated background sync), sharing a common library. Includes JWT auth with role-based access, template-based transactional emails with a safe test mode, and multi-language UI in English, German and Dutch.

Features
  • Manages the lifecycle of partner organisation applications and compliance certifications
  • Two-way sync with M-Files, runnable both manually (UI) and automatically (Windows Service) from shared logic
  • JWT auth with role-based access; template-based transactional emails
  • Multi-language UI (EN/DE/NL) and rich-text clarification threads
C#.NET 8ASP.NET CoreBlazor WebAssemblyMudBlazorEF CoreSQL ServerJWTM-Files REST APISerilogClosedXML

Engineering Drawing Management System

2023

A centralized technical-drawing repository with revision control, granular permissions and Azure-backed storage.

A Blazor Server web application that acts as the single source of truth for thousands of technical drawings, with full revision control and search by number, title and metadata. Users sign in with their Microsoft 365 credentials via Microsoft Entra ID, and access is controlled per role and per group. Revision numbers are validated against strict formats (x.x, x.xx, x.x.x), and folder names are inferred from the format rather than stored, flexible enough to handle legacy numbering inconsistencies.

Features
  • Centralized search and revision management for thousands of technical drawings
  • Strict revision-number validation and drawing-variant grouping
  • Microsoft Entra ID (Azure AD) auth with role- and group-based permissions
  • Secure file upload/download against Azure File Share with full audit logging
C#.NET 7Blazor ServerRadzenEF CoreMySQLMicrosoft Entra IDAzure File Share
Chat

Chat with AI Lashithendra Bandara

A conversational version of me, powered by a small .NET service. Ask about my work, stack, or projects.

Hi! I'm an AI version of Lashithendra Bandara. Ask me about my background, projects, or tech stack.