Ask mePortfolio

Full-stack developerin Melbourne.

Five plus years designing, building and running scalable web systems in production: React and Next.js up front, Node.js and Python behind, PostgreSQL underneath, deployed on AWS and GCP. I own services end to end and use AI tooling to ship faster without lowering the bar.

I drive delivery in Agile teams through clear technical decisions and honest trade-offs. AI tooling such as Claude Code, Codex and Cursor is part of my daily workflow; code review and testing standards keep the bar where it belongs.

Currently
Open to opportunities
LinkedIn
zian-wang
0+
Years of experience
0
Companies
0
Featured projects

AI practice

Practitioner, not spectator

I don't just use AI. I engineer with it.

Agentic coding tools are in my daily loop, not as an autocomplete toy but as a disciplined part of delivery. I draw a hard line between deterministic code and the model: routing, retries, thresholds and anything with a right answer stay in explicit code, while the model handles classification, drafting and ambiguity. This site is itself an example, a grounded RAG chat where high-risk facts never come from the model.

0.0B
Tokens with agents
0+
Coding sessions
0
Models used
0+
Months in the loop

Claude Code and Codex, measured to 2026-07-06. Spend withheld.

Claude Code

Primary agentic pair

My main driver for end-to-end feature work, refactors and debugging. Multi-file edits, skills and test loops run here, with code review keeping the bar where it belongs.

835 sessions · 2.6B tokens · 6 models

Codex

Parallel verification

A second, independent agent I run alongside to cross-check changes, explore alternative approaches and pressure-test decisions before they land.

265 sessions · 733M tokens · 10 models

Cursor

Inline editing

Fast in-editor edits and completions for tight local loops, when the change is small and I want to stay in the file.

Cloud-side usage, numbers not shown

Principles from my CLAUDE.md

How I keep the bar high
01

Deterministic code, not the model

Routing, retry policy, thresholds and escalation rules are explicit code. The model only classifies, summarises, drafts and resolves ambiguity, never decides facts with a right answer.

02

Errors are never swallowed

Every error is thrown, returned or reported. No silent default-success, no hiding failures behind fallback values.

03

Every loop has a budget

Each iteration loop gets a defined budget in iterations, tokens or time. When it is spent, I stop and present results instead of re-trying a rejected fix.

04

Reuse before building

Before writing a feature I search for an existing open-source solution. I would rather adopt a proven tool than reinvent the wheel.

05

Minimum code that does the job

No speculative features, no abstractions for single-use logic. I optimise for simplicity, robustness and long-term maintainability over short-term speed.

06

Tests verify behaviour

Tests check values, structure, side effects and error types, not just that code runs without throwing. Weak tests get flagged, not counted.

Selected work

(4 projects)
01 / Production / E-commerce

Piggy Way

A boutique storefront for guinea pig and rabbit supplies.

A production e-commerce platform on Next.js 16 and React 19, live at piggyway.com.au. The frontend acts as a BFF layer that proxies a dedicated Hono/Bun backend with a Directus CMS upstream, so editors publish content without deploys. Stripe powers checkout, NextAuth handles Google and email sign-in, and guest carts survive refreshes through session tokens.

  • BFF architecture keeps credentials server-side, with silent token refresh and guest cart sessions
  • Stripe checkout, Cloudflare Turnstile and CMS draft preview wired end to end
  • Component library documented in Storybook and tested with Vitest browser mode

Next.js 16, React 19, TypeScript, NextAuth, Stripe, Hono, Bun, PostgreSQL, Directus

Visit site ↗View code ↗

Piggy Way interface screenshot
Piggy Way / production interfaceFig. 01
02 / SaaS / EdTech

Study Pilot

A past-exam practice platform for university subjects.

A bilingual question bank where students drill past papers under real constraints: weekly unlock schedules, timed sessions and a single active device per account, enforced through Supabase Realtime. Questions are embedded with bge-m3 for semantic search, and practice state survives reloads through a persisted store.

  • Single-device session guard kicks a stale login within seconds via Realtime
  • Server actions with tagged caches and a mapper layer keep DB shapes out of the UI
  • English and Chinese locales with translation key parity enforced in CI

Next.js, Supabase, PostgreSQL, Zustand, next-intl, Tailwind v4, bge-m3

Visit site ↗View code ↗

Study Pilot interface screenshot
Study Pilot / production interfaceFig. 02
03 / AI / Agentic RAG

UQ Ask Anything

A RAG service answering UQ course questions, grounded by design.

A planner-routed agentic RAG pipeline over Postgres and pgvector with six retrieval modes, from SQL filtering to bge-m3 semantic and RRF hybrid search. High-risk enrolment facts such as prerequisites and fees come from deterministic code, never from the model, and an answerability gate refuses to answer when evidence is missing.

  • The LLM planner fills validated filter slots only; SQL is assembled from bound parameters
  • Strict deterministic-vs-LLM boundary with citation-guarded answer drafting
  • Pluggable model backend across Ollama, DeepSeek and Bedrock

Python, FastAPI, LangGraph, PostgreSQL, pgvector, bge-m3, React

Visit site ↗View code ↗

UQ Ask Anything interface screenshot
UQ Ask Anything / production interfaceFig. 03
04 / WeChat Mini Program / Community

Nothing But Fun

A community lifestyle mini program for Brisbane.

A community lifestyle WeChat Mini Program built with Taro and Node.js, serving event registration, secondhand trading and rental services for the Brisbane Chinese community. Content is managed through Directus, media runs on Cloudinary, and the backend deploys on Railway.

  • Event registration, secondhand trading and rentals in one mini program
  • Taro codebase targeting the WeChat runtime with NutUI and Tailwind
  • Node.js and Express API over PostgreSQL with Drizzle ORM

Taro, React, TypeScript, NutUI, Node.js, Express, PostgreSQL, Drizzle, Cloudinary

View code ↗微信搜索布好玩bris小程序

Nothing But Fun interface screenshot
Nothing But Fun / production interfaceFig. 04

Work I'm proud of

2020 to present

Skills

Languages
TypeScript, JavaScript, Python, Golang
Frontend
React, Next.js, React Native, Redux, TailwindCSS, HTML5 / CSS3
Backend
Node.js, Express, RESTful APIs, GraphQL, Jest
Data
PostgreSQL, MongoDB, DynamoDB, Redis, Cloud SQL, RDS
Cloud & DevOps
AWS, GCP, Azure, Docker, Kubernetes, Terraform, GitHub Actions, Jenkins
Messaging
Kafka, RabbitMQ, Pub/Sub, SQS
Tools
Git, Jira, Figma, Postman, Expo

Education

University of Melbourne
Master of Information Technology (Artificial Intelligence)
University of Queensland
Bachelor of Engineering (Electrical Engineering)

GitHub activity

@lewiswang0516
Animated snake eating my GitHub contribution graph
Contribution snake / regenerated every 6 hoursFig. 05
GitHub stats: stars, commits, pull requests, issues and contributed repositories
Commit distribution across the hours of the day

Follow me on GitHub ↗

Contact

Open to opportunities
zianwang9911@gmail.com

0447 435 758 / GitHub / LinkedIn / Instagram / Resume PDF / Melbourne, Australia