Portrait of Lian Duan

Fullstack Developer · Vancouver, BC

Hi, I'm Lian Duan.

I build dependable systems end to end: event-driven payment services, high-availability airport tracking, and the React front ends on top. Outside of work I hike, take photos and tinker with my homelab.

$400K+ / month revenue recovered by cutting payment failures 88% with an event-driven account updater service Real Estate Board of Greater Vancouver
1M+ / day baggage tracking transactions on high-availability systems at JFK and YVR International Airports Brock Solutions
15,000+ members use the self-service platform I architected, with search across 45,000+ content entries Real Estate Board of Greater Vancouver

01 — About

Full-stack by trade, curious by default.

I studied Computer Science (with Co-op) at the University of British Columbia, and since then I've worked in real estate, airport logistics, enterprise SaaS, sports tech and fintech. I care most about sturdy systems: event-driven services that recover on their own, monitoring that turns hours of debugging into minutes, and APIs that are pleasant to build on.

Right now I'm an Intermediate Fullstack Developer at the Real Estate Board of Greater Vancouver, working on payment processing, search and the member self-service platform. Before that I spent two years at Brock Solutions building high-availability baggage tracking for JFK and YVR.

Focus areas

  • Event-driven back endsAzure Event Bus, Functions, Redis
  • High-availability systemsFailover clustering, airport scale
  • Full-stack productsReact, Next.js, search, dashboards
  • Secure paymentsPCI compliance, audit logging, monitoring

02 — Experience

Where I've worked.

  1. Real Estate Board of Greater Vancouver

    Intermediate Fullstack Developer

    Jun 2025 — Present · Vancouver, BC

    Current

    I work on payments, search and the member self-service platform for Greater Vancouver's realtor association, and I mentor junior developers.

    88%fewer payment failures
    $400K+revenue recovered monthly
    15k+members on the platform
    45k+entries made searchable
    • Account updater service: event-driven propagation of PCI-compliant card updates from JPMorgan Chase through internal systems, using Azure Event Bus, Redis and Azure Functions.
    • Payment observability: audit logging, error alerts and Azure Log Analytics, so payment issues are diagnosed in minutes instead of hours.
    • Member platform: profile management, data dashboards and subscriptions, architected end to end.
    • Content search: Sanity.io CMS indexed into Azure AI Search by serverless functions, with a Next.js front end.
    • Onboarding docs: environment setup and back-end best practices that shorten ramp-up for new developers.
    C#Next.jsReactRedisAzure Event BusAzure FunctionsAzure DevOps
  2. Brock Solutions

    Software Development Engineer

    Jul 2023 — Jun 2025 · Richmond, BC

    Two years building the software that tracks and routes checked bags through JFK and Vancouver International Airports.

    1M+transactions a day
    4,000+misroutes fixed daily
    $40Klicensing saved per year
    • High-availability tracking: distributed systems on SQL Server, ASP.NET Core and Windows Server failover clustering.
    • Live baggage map: a real-time, event-based map with replay, so operators can correct and audit misrouted bags.
    • Emulation tooling: replaced third-party software with multi-user debugging tools in C#, ASP.NET and WinForms.
    • Stakeholder demos: presented microservice features to senior management at JFK International Airport.
    C#ASP.NET CoreReactSQL ServerWindows Server
  3. SAP

    Agile Developer Intern · HANA & Analytics

    Sep 2021 — Apr 2022 · Vancouver, BC

    Kept S/4HANA microservices secure and shippable on the infrastructure side.

    95%code coverage reached
    17.5k+companies on S/4HANA
    • Security patches: CVE fixes, API refactors and defect fixes across HANA microservices.
    • Deployment dashboard: one view of every service's deployment status for the team.
    TypeScriptNode.jsSpring BootExpressJenkins
  4. FORM

    Web Software Developer Intern

    Apr 2020 — Sep 2020 · Vancouver, BC

    Back-end developer for the smart swim goggles' companion app.

    45k+active swimmers served
    • Mobile app APIs: REST routes built on TypeScript, MySQL and AWS.
    • User badges: "Verified" and "Professional" badges end to end with Express and Sequelize.
    • Release alerts: AWS Lambda and SES emails that flag unintended firmware releases.
    TypeScriptNode.jsExpressVueAWSSQL
  5. LedgerDocs

    Web Applications Developer Intern

    Sep 2019 — Apr 2020 · North Vancouver, BC

    Made a bookkeeping document platform read invoices on its own and stay up under load.

    99.7%less server CPU load
    30k+invoices read each quarter
    • OCR pipeline: Tesseract built into the PHP (CodeIgniter) codebase to parse invoice photos.
    • Queue workers: spread heavy jobs across peak hours and ended CPU-overload crashes.
    • SMS uploads: prototyped sending documents by text with Twilio.
    PHPCodeIgniterMySQLTesseractLinux

03 — Projects

Things I've built.

New 2026 · Featured

LiftLog

A self-hosted lifting tracker. Build routines from a body map, log workouts set by set with reps already filled in, and chart estimated one-rep maxes over time. Cardio and sports are logged too.

  • Multi-user accounts with scrypt-hashed passwords, rate-limited sign-in and admin user management
  • Lock-screen rest-timer alerts delivered by Web Push when the app isn't on screen
  • Ships as a small standalone Docker image running as a non-root user, with SQLite and a health check
Next.jsTypeScriptSQLiteWeb PushDocker
LiftLog's Progress page: a year heatmap of workouts and an estimated one-rep-max chart

2026

Lower Mainland Salmon Map

A self-hosted map of where you can fish for salmon around Vancouver. It parses DFO's regulations every day and colours each river stretch and tidal subarea by what's open for the date and species you pick, in English and Chinese.

Next.jsTypeScriptLeafletTurf.jsDocker

2023 · UBC CPSC 447

SafeCracker

An interactive D3 visualization of NordVPN's top 200 passwords in each country. A choropleth map shows each country's average time to crack, and linked charts plot each password's crack time against how many people use it.

JavaScriptD3.jsData Viz

2022

PyeadCrab

A Python CLI for static and dynamic code analysis. It processes the AST to find code clusters, uses Markov models to predict call likelihood, and draws the structure as D3 graphs.

PythonASTANTLRD3React

2022

Walmart Mario Maker

A domain-specific language for writing 2D platformer levels, with enemies, doors, coins and conditional events, played in the browser.

TypeScriptDSLReact

2019

Summary.js

A paragraph summarizer under 10 KB for the browser and Node. It scores sentences with LexRank and RAKE keywords.

JavaScriptNLPNode

nwHacks 2020

Aqueduct

An SMS chatbot that brings web content to feature phones in places with little or no internet access.

JavaScriptTwilioMongoDB

Ongoing · Hobby

Homelab

A small server at home that I tinker with in my spare time. It runs a hypervisor with a few virtual machines for my own projects (LiftLog and the salmon map live here), a media library, game servers for friends and a local LLM. Everything is containerized, a few apps are reachable from outside behind single sign-on, and it backs itself up every night.

ProxmoxDockerLinuxNetworkingSelf-hosting

04 — Travel

Places I've been.

Cities
–
Countries
–
Years
–
  • 2024 and later
  • 2016 – 2023
  • Before 2016
  • Home

05 — Toolkit

Skills & background.

Languages

C#TypeScriptSQLJavaJavaScriptPythonPHP

Frameworks & Libraries

.NET / ASP.NET CoreReactNext.jsNode.jsExpressJava SpringD3.jsServerless Functions

Tools & Platforms

AzureAzure DevOpsRedisSQL ServerMySQLSanity.ioSendGridDockerGitJenkinsJiraLinux / WSL

Education

B.Sc. Computer Science, Co-op

University of British Columbia · Sep 2017 — Jun 2023 · GPA 3.7 / 4.33

Award

BC Achievement Scholarship

Government of British Columbia · 2017, given to the province's top 8,000 graduates

Leadership

Flight Sergeant & Senior Instructor

513 Hornet Squadron Air Cadets · 2012 — 2017, led a flight of about 30 cadets

06 — Contact

Let's build something.

I'm happy to hear about engineering work, interesting problems, or good hiking trails near Vancouver.