\documentclass[a4paper, serif, 10pt]{moderncv}

%% moderncv
% style and color
\moderncvstyle{banking}
\moderncvcolor{black}

% renew moderncv command to adapt for CJK colon
\renewcommand*{\cvitem}[3][.25em]{%
  \ifstrempty{#2}{}{\hintstyle{#2}：}{#3}%
  \par\addvspace{#1}}

\renewcommand*{\cvitemwithcomment}[4][.25em]{%
  \savebox{\cvitemwithcommentmainbox}{\ifstrempty{#2}{}{\hintstyle{#2}：}#3}%
  \setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}%
  \setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}%
  \begin{minipage}[t]{\cvitemwithcommentmainlength}\usebox{\cvitemwithcommentmainbox}\end{minipage}%
  \hfill% fill of \separatorcolumnwidth
  \begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}%
  \par\addvspace{#1}}

%% page layout/margins
\usepackage[top=2.5cm, bottom=2.5cm, left=1.5cm, right=1.5cm]{geometry}

\nopagenumbers{}

%% Babel config for English language
\usepackage[english]{babel}

%% fontspec
\usepackage{fontspec}

\IfFontExistsTF{Linux Libertine}{
  \setmainfont[Ligatures={TeX, Common}, Numbers=Lining, ItalicFont=Linux Libertine]{Linux Libertine}
}{}
\IfFontExistsTF{Linux Libertine O}{
  \setmainfont[Ligatures={TeX, Common}, Numbers=Lining, ItalicFont=Linux Libertine O]{Linux Libertine O}
}{}

%% CTeX
% CJK support, used to show CJK characters in the resume
%
% - fontset=none: disable builtin fontset but instead set the CJK font manually
% - heading=false: disable ctex heading
% - punct=kaiming: use kaiming punctuations styles for CJK
% - scheme=plain: use plain scheme, do not override \normalsize font size
% - space=auto: space settings for CJK characters
%
% ref:
% - http://ctan.mirrorcatalogs.com/language/chinese/ctex/ctex.pdf
\usepackage[UTF8, heading=false, punct=kaiming, scheme=plain, space=auto]{ctex}

\IfFontExistsTF{Noto Serif CJK SC}{
  \setCJKmainfont{Noto Serif CJK SC}
}{}
\IfFontExistsTF{Noto Sans CJK SC}{
  \setCJKsansfont{Noto Sans CJK SC}
}{}

%% line spacing
\usepackage{setspace}
\setstretch{1.125}

%% URL styling - use normal text instead of monospace
\urlstyle{same}

% Auto-underline all links
% Defer until \begin{document} so hyperref is already loaded
\AtBeginDocument{%
  \let\oldhref\href
  \renewcommand{\href}[2]{\oldhref{#1}{\underline{#2}}}%
}

%% Patch \httplink and \httpslink to handle full URLs
% The original moderncv macros always prepend http:// or https:// to URLs.
% This causes issues when the URL already has a protocol (e.g., https://example.com)
% resulting in malformed URLs like https://https://example.com.
% This patch checks if the URL already contains "://" and uses it directly if so.
% Note: We use \str_set:Nx (x-expansion) to expand macros like \@homepage first.
\ExplSyntaxOn
\str_new:N \g_yamlresume_url_str

\RenewDocumentCommand{\httpslink}{O{}m}{
  \str_set:Nx \g_yamlresume_url_str {#2}
  \str_if_in:NnTF \g_yamlresume_url_str {://}
    { \url{#2} }
    { \url{https://#2} }
}

\RenewDocumentCommand{\httplink}{O{}m}{
  \str_set:Nx \g_yamlresume_url_str {#2}
  \str_if_in:NnTF \g_yamlresume_url_str {://}
    { \url{#2} }
    { \url{http://#2} }
}
\ExplSyntaxOff

\name{陳俊傑}{}
\title{軟件工程師 | 全端開發 | 雲端應用}
\phone[mobile]{+852 9123 4567}
\email{chun.kit.chan@example.com}
\homepage{https://ckchan.dev}

\address{中國香港，香港，香港}{}{}

\extrainfo{{\small \faGithub}\ \href{https://github.com/ckchan-dev}{@ckchan-dev} {} {} {} • {} {} {}
{\small \faLinkedin}\ \href{https://www.linkedin.com/in/ckchan-dev}{@ckchan-dev}}

\begin{document}

\maketitle

\section{簡介}

\cvline{}{具超過 5 年經驗的軟件工程師，專注於全端開發、微服務架構及雲端應用。擅長以 TypeScript、Python 及 Go 構建高效且可擴展的系統，並熱衷於透過最佳實踐及自動化測試提升軟件品質。
%
\begin{itemize}
\item 曾帶領團隊由單體架構遷移至微服務，提升系統可靠性和部署效率。
\item 熟悉 AWS 及 Kubernetes，擁有大型分散式系統設計及維運經驗。
\item 具備良好跨部門溝通與項目管理能力，能將業務需求轉化為實際技術方案。
\end{itemize}}
\section{教育背景}

\cventry{2014年9月–2018年6月}
        {學士，計算機科學，成績：3.6/4.0}
        {香港科技大學}
        {\url{https://www.hkust.edu.hk}}
        {}
        {主修計算機科學，專注於軟件工程及系統設計。畢業項目為「基於區塊鏈的供應鏈追蹤系統」，獲得系內最佳畢業項目獎。
\textbf{課程}：數據結構與算法、操作系統、數據庫系統、計算機網絡、軟件工程、分散式系統、編譯原理}
\section{工作經歷}

\cventry{2022年3月至今}
        {高級軟件工程師}
        {星辰科技（香港）有限公司}
        {\url{https://www.startechhk.com}}
        {}
        {\begin{itemize}
\item 主導團隊為金融科技客戶設計及開發分散式交易系統，支援每日數百萬宗交易。
\item 將單體應用遷移至 Kubernetes 微服務架構，部署時間由 45 分鐘縮短至 8 分鐘。
\item 推行 CI/CD 流程及基礎設施即程式碼（IaC），提升環境一致性及交付效率。
\item 與產品經理及業務單位緊密合作，將複雜業務需求拆解為可執行的技術方案。
\item 指導初級工程師進行代碼審查及系統設計，提升團隊整體工程文化。
\end{itemize}
\textbf{關鍵字}：微服務、Kubernetes、系統設計、團隊管理、金融科技}

\cventry{2019年7月–2022年2月}
        {軟件工程師}
        {藍海軟件開發有限公司}
        {\url{https://www.blueocean-soft.com.hk}}
        {}
        {\begin{itemize}
\item 負責開發及維護 B2B 電子商貿平台的前端及後端功能，服務超過 500 家企業客戶。
\item 使用 React、Node.js 及 PostgreSQL 構建實時庫存管理系統，提升營運效率 30\%。
\item 設計並整合 RESTful API 至第三方物流及支付服務，簡化訂單處理流程。
\item 參與 Scrum 團隊，進行衝刺規劃、代碼審查及單元測試，確保產品質素。
\end{itemize}
\textbf{關鍵字}：React、Node.js、PostgreSQL、RESTful API、Scrum}
\section{語言}

\cvline{中文}{母語或雙語水平 \hfill \textbf{關鍵字}：粵語（母語）、普通話（流利）、繁體中文寫作}
\cvline{英語}{完全專業水平 \hfill \textbf{關鍵字}：HKDSE 英文 5*、IELTS 7.5}
\section{專業技能}

\cvline{程式語言}{專家 \hfill \textbf{關鍵字}：TypeScript、Python、Go、Java、C\#、SQL}
\cvline{前端開發}{高級 \hfill \textbf{關鍵字}：React、Vue.js、Next.js、HTML5、CSS3、Tailwind CSS}
\cvline{後端開發}{專家 \hfill \textbf{關鍵字}：Node.js、Express、Django、Gin、RESTful API、GraphQL}
\cvline{雲端與 DevOps}{高級 \hfill \textbf{關鍵字}：AWS、Docker、Kubernetes、Terraform、CI/CD、Prometheus、Grafana}
\cvline{數據庫}{高級 \hfill \textbf{關鍵字}：PostgreSQL、MySQL、MongoDB、Redis、Elasticsearch}
\section{榮譽}

\cventry{2016年12月}
        {香港科技大學}
        {院長嘉許名單}
        {}
        {}
        {於 2016-2017 學年因學業成績優異而獲列入院長嘉許名單。}

\cventry{2018年6月}
        {香港科技大學}
        {最佳畢業項目獎}
        {}
        {}
        {畢業項目「基於區塊鏈的供應鏈追蹤系統」獲評為年度最佳計算機科學畢業項目。}
\section{證書}

\cventry{2021年5月}
        {Amazon Web Services}
        {AWS 解決方案架構師 – 助理級}
        {\url{https://aws.amazon.com/certification/}}
        {}
        {}

\cventry{2022年8月}
        {CNCF}
        {Certified Kubernetes Application Developer}
        {\url{https://www.cncf.io/certification/ckad/}}
        {}
        {}
\section{出版刊物}

\cventry{2023年10月}
        {以領域驅動設計提升微服務系統可維護性之研究}
        {香港軟件工程協會期刊}
        {\url{https://example.com/publications/ddd-microservices}}
        {}
        {探討如何運用領域驅動設計（DDD）於微服務劃分及業務邏輯建模，並以實際案例驗證其對系統可維護性、測試性及團隊協作效率的正面影響。}
\section{項目}

\cventry{2022年6月–2022年10月}
        {一個支援多人實時協作編輯的文檔平台，採用 CRDT 演算法自動合併衝突。}
        {即時協作文檔平台}
        {\url{https://github.com/ckchan-dev/realtime-collab-doc}}
        {}
        {\begin{itemize}
\item 以 TypeScript、React 及 WebSocket 開發，支援離線編輯及自動同步。
\item 使用 Yjs CRDT 演算法處理多端同時編輯的衝突，確保一致性。
\item 加入操作歷史及版本回溯功能，提升協作效率與用戶體驗。
\end{itemize}
\textbf{關鍵字}：React、TypeScript、WebSocket、CRDT、Yjs}

\cventry{2021年9月–2022年1月}
        {基於 Kubernetes 的微服務監控及日誌聚合平台。}
        {容器化微服務監控系統}
        {\url{https://github.com/ckchan-dev/k8s-monitoring-platform}}
        {}
        {\begin{itemize}
\item 整合 Prometheus、Grafana 與 Loki，提供多租戶的即時監控告警。
\item 自訂 Helm Chart 簡化部署流程，令新服務接入監控只需數分鐘。
\item 設計告警規則及儀表板，協助團隊快速定位系統異常。
\end{itemize}
\textbf{關鍵字}：Kubernetes、Prometheus、Grafana、Loki、Helm}
\section{興趣愛好}

\cvline{科技創新}{開源軟件、區塊鏈、人工智能}
\cvline{戶外活動}{遠足、露營、攝影}
\section{志願服務}

\cventry{2020年1月–2023年12月}
        {技術導師}
        {香港軟件開發者社群}
        {\url{https://hkdevcommunity.org}}
        {}
        {\begin{itemize}
\item 定期主持 Web 開發工作坊及編程入門講座，協助初學者學習現代前端技術。
\item 為開源項目提供代碼審查及技術諮詢，促進本地開發者社群交流。
\item 籌辦年度黑客松活動，吸引超過 200 名參與者。
\end{itemize}}

\end{document}