Bingqian Liu · Melbourne, VIC

Bingqian Liu

Full-stack developer/5+ years
Master of IT, Monash University

I've spent more than five years building web systems for government and banking clients in China, mostly land systems such as online land auctions and trading platforms. A lot of the job happened outside the code. I worked out requirements with client staff and a bank, and agreed interface details with other teams before anyone started building. Now I'm doing a Master of IT at Monash and looking for a full-stack role in a Melbourne product team.

GitHub
  1. front endReact · JavaScript
  2. back endJava · Spring Boot · Spring Cloud · MyBatis
  3. dataMySQL · Oracle · Redis · Elasticsearch
  4. messagingRabbitMQ · Kafka
  5. running itDocker · Nginx · Linux · AWS
The stack I've used at work and in personal projects.

Projects

Epoch

Personal project·since January 2024·dream-everything.com·code on GitHub

Built with Java 17, Spring Boot, MyBatis-Plus, React, MySQL, Redis, RabbitMQ, Elasticsearch, Docker

A community site I built and still run. People join topic groups, post and comment, chat inside each group, message each other and keep a personal schedule with reminders. The homepage is a recommended feed, and the interface is all in English.

How it grew

I started it in January 2024 while working in China, as a small forum on a familiar stack: Spring Boot with server-rendered FreeMarker and layui pages.

After moving to Melbourne to study, I rebuilt it in stages. First came the upgrade from Java 8 to 17 and the security basics, like secrets sitting in the code and weak password hashing. Then the back end became a REST API and the front end was rewritten in React. Each stage went live separately, so the site stayed up throughout.

Studying here shaped what came next. I'm moving the infrastructure to AWS in Sydney with what I learned in my cloud computing unit: nightly backups already go to S3, and uploaded files are now written to S3 as well. Since most new visitors read English, I translated the interface and later made English the only language. Reminders run on Melbourne time.

Along the way I also added an NBA stats section with 50 seasons of data, open to visitors.

Working out what to build

New features start from what people ask for or run into, and I look into each request before building anything. When people wanted to delete a comment without losing the replies under it, I made deleted comments leave a placeholder so the thread still reads. People also told me the data tables needed too much sideways scrolling on a phone, so I reworked the columns until a phone screen showed seven instead of about four.

The newest piece is the recommended feed on the homepage. It gathers candidates (new posts, popular ones, picks from group owners, people you follow), ranks them with a hot score that halves every seven days, then spreads topics out so one busy group can't take over the page. Each card shows why it's there, private groups never leak into it, and posts you've already opened move down.

How it runs. Visitors come in through a Cloudflare Tunnel, so the private server has no open ports.

Measure first

One page felt slow, and I assumed the database was to blame. It wasn't. The query took 17 ms, but the response was 2.89 MB of uncompressed JSON. Turning on gzip cut it to about 390 KB.

The AWS plan started the same way. Measuring showed the search engine held 340 KB of posts but used 2.45 GB of memory, so the plan replaces it with MySQL full-text search and keeps the whole setup within $75 a month.

Making English the only language meant changing about 1,700 translation calls and 3,260 stored values. I wrote a codemod for the code and ran the data migration once inside a rolled-back transaction to check the row counts before doing it for real.

Running something people rely on has taught me as much as building it. Their posts live on it, so the database is backed up every night, and in a restore drill I had it back in two minutes.

Aussie EcoLens

Monash University team project·2026·team lead, team of 4

Built with React, Python on AWS Lambda, API Gateway, Cognito, S3, DynamoDB, SNS, Google Cloud Functions

A wildlife observation platform that runs on AWS and Google Cloud. People upload photos and videos of animals. The system finds each animal, names the species and stores the count, so you can later search for, say, three kangaroos. Anyone following a species gets an email when it turns up.

Photos go straight to S3. Videos go to Google Cloud first and are cut into one frame per second. The same login token is checked on both clouds.

Leading the team

I was team lead for four people. I split the work by module, so each person had a clear part, and wrote the architecture and API documents we all built against, including how the two clouds connect.

Where two people's work met, we agreed the details before writing code, such as file names in S3, database fields and the shape of each API. Every pull request needed my approval before it reached main, which kept the parts fitting together.

On the build side I took the highlighted parts of the diagram: the upload with its duplicate check, the species tagging, search by photo, and the React app's structure and login gating. Teammates built the video processing, the database design, tag search and editing, and most of the page designs.

When the cloud lab was wiped

Close to the deadline our cloud lab was reset and everything in it was deleted. I organised the move to a new AWS account and rebuilt the API Gateway and the container functions there. Then I tested the whole system end to end before the demo. We talked a lot and helped each other through the hard parts.

It also showed us which parts we had scripted and which only lived in console settings. Next time the whole setup goes into code from day one.

The code stays private under course rules.

CloudEco

Monash University individual assignment·2026

Built with FastAPI, Docker, Kubernetes, Terraform, Locust, Google Cloud

A FastAPI service that spots plastic bags, bottles and other waste in photos, using a pre-trained detection model. I set up a small Kubernetes cluster for it on Google Cloud and load-tested it as I added pods.

Requests per second as pods were added
Rounded, from my load-test report.
PodsRequests per second
12.3 to 2.7
2about 4.8
4about 10
8about 22

With 8 pods, 150 → 650 users: throughput stayed flat, waits went from 6.1 s to 21.2 s.

Throughput roughly doubled every time the pods doubled. Adding users past that point only made people wait. The limit was the model itself, running on one CPU per pod.

Experience

Aug 2020 – Apr 2025

Software Developer

Nanjing GTMap Information Industry Co., Ltd. · Nanjing, China

Land-trading and land-management systems for city and provincial governments, including the live bidding module for Suzhou's public land auctions, which pushed price updates to bidders in real time through Redis.

Stack Java, Spring Boot, Spring Cloud, Redis, RabbitMQ, Kafka, Elasticsearch, MySQL, Oracle, Nginx

  • Worked out the requirements for a bank deposit settlement system with the bank and regional trading centres, then saw it through go-live and production support. A RabbitMQ queue in front of it absorbed bursts of requests.
  • Agreed interface fields, reconciliation rules and error codes with the bank's team and other systems' teams before integration work started.
  • When my manager wanted a one-step database switch, I showed the risk with a proof of concept and proposed a phased plan with rollback. The team adopted it.
  • When users reported a page stuck on "processing", I led the investigation, checked first that no funds or data were affected, and kept the client updated until it was fixed.

Jul 2019 – Jul 2020

Software Developer

Jiangsu Guotai Epoint Software Co., Ltd. · China

Land-market trading systems for three local government clients.

  • Turned day-to-day requests from client staff into working features.
  • Helped senior engineers plan and carry out a full server migration, with a step-by-step checklist, rollback points and a low-traffic window.
  • Led a round of upgrades for another client's system.

Skills

Proficient

Java, Spring Boot, Spring Cloud, MyBatis, REST APIs, MySQL, Oracle, Redis, RabbitMQ

Experienced

React, JavaScript, Python, Docker, AWS (Lambda, S3, API Gateway), Elasticsearch, Kafka, Nginx, Git, Linux, JUnit, Agile and Scrum

Familiar

Kubernetes, Terraform, FastAPI, Google Cloud, DynamoDB, MongoDB, LLM APIs

I'm looking for a full-stack role in Melbourne. Email is the quickest way to reach me.

GitHub Resume on request