Stack

What I actually reach for

  • TypeScriptTypeScript
  • ReactReact
  • Next.jsNext.js
  • JavaScriptJavaScript
  • Node.jsNode.js
  • PostgreSQLPostgreSQL
  • MongoDBMongoDB
  • TailwindTailwind
  • DockerDocker
  • LinuxLinux
  • GitGit
  • GitHubGitHub
  • ExpressExpress
  • NginxNginx
  • AWSAWS
  • Google CloudGoogle Cloud
  • VueVue
  • HTMLHTML
  • CSSCSS
  • PrettierPrettier
  • NPMNPM
  • FirebaseFirebase
  • VimVim
  • WordPressWordPress

Experience

What I've been doing these years.

Indie developer / Full-stack engineer

Self-employed · Indie Hacker
2023 - Present
  • One person running the whole chain: deciding what's worth building, picking the stack, ingesting data, writing backend services, building the interface, and keeping it alive in production — nothing outsourced.
  • I prefer products that can be verified: get the data flowing and the metrics computing first, argue about how it looks later.
  • TypeScript is the spine. Node handles ingestion and scheduling, Postgres carries ledgers and time series, the front end is uniformly React / Next.js.
  • My delivery habit is to push operating cost close to zero — if it can be statically hosted, it never gets a server; if it can run on the edge, it never calls home.
TypeScriptTypeScript
ReactReact
Next.jsNext.js
Node.jsNode.js
PostgreSQLPostgreSQL
DockerDocker
LinuxLinux

Quant trading & financial data

Self-built research platform
2022 - Present
  • Built the market-data and backtesting pipeline from scratch: multi-exchange ingestion, tick and candle storage, indicator computation and signal delivery as one async pipeline.
  • What I care about is whether the data can be trusted, not how many strategies exist. Time alignment, adjustment conventions and exchange quirks decide whether a backtest is honest.
  • Risk control lives in the data layer: outlier detection, gap filling, delisted-symbol pruning — all resolved at ingestion time.
  • Conclusions are stored so they can be reproduced: parameters, data versions and evaluation conventions all leave a trail, so nobody trusts a remembered return figure.
PostgreSQLPostgreSQL
JavaScriptJavaScript
Node.jsNode.js
MongoDBMongoDB
DockerDocker
LinuxLinux

Cross-border e-commerce & growth

Own stores / consulting
2021 - Present
  • Sourcing and ad spend across multi-platform store groups: platform back-office data, ad cost and shipping times stitched into one operating dashboard.
  • The core work is closing the data loop — sourcing from demand signals, pricing from margin models, restocking from turnover days, all landing in the same tables.
  • Built in-house tooling instead of buying SaaS: order aggregation, inventory alerts and profit calculation written by hand. The subscription savings matter far less than owning the data.
  • Most of the pain wasn't technical, it was definitions: does a refund count as revenue, is ad spend a cost? Until those agree, every report is wrong.
JavaScriptJavaScript
PostgreSQLPostgreSQL
Node.jsNode.js
DockerDocker
AWSAWS

Projects

Mine, and a few by other people.

Get in touch

Email me at changyuansex@gmail.com , or leave a note below.

Sending opens your own mail client — nothing passes through a third-party service.