This is my personal website, built with Hugo and the LoveIt theme. Notes and blog posts are written as plain markdown files.
content/
├── _index.md # home page (profile comes from hugo.toml)
├── about/index.md # bio, research, education, experience
├── publications/index.md # selected publications
└── posts/ # ← write markdown notes/blogs here
└── hello-world/index.md
static/images/avatar.png # profile photo (replace with your own)
hugo.toml # site configuration
themes/LoveIt/ # theme (git submodule)
.github/workflows/hugo.yml # auto-build + deploy on push to main
Hugo extended is required (the local binary used to build this lives at ~/bin/hugo).
# clone with the theme submodule
git clone --recurse-submodules <repo-url>
cd charlesxu90.github.io
# live preview at http://localhost:1313 (includes drafts)
hugo server -DIf you cloned without --recurse-submodules:
git submodule update --init --recursivehugo new posts/my-note/index.mdEdit the front matter, write markdown below it, then commit & push:
git add content/posts/my-note
git commit -m "post: my note"
git push # GitHub Actions rebuilds and deploys automaticallySet draft: false when it's ready to publish.
This repo deploys via GitHub Actions (.github/workflows/hugo.yml):
- On GitHub → Settings → Pages → Build and deployment → Source = GitHub Actions.
- Push to
main. The site builds and deploys to https://charlesxu90.github.io/.
When you're ready to move xu-xp.com off Google Sites:
- In
hugo.toml, setbaseURL = "https://www.xu-xp.com/". - Create a file
static/CNAMEcontaining one line:www.xu-xp.com. - On GitHub → Settings → Pages → Custom domain, enter
www.xu-xp.comand configure your DNS (CNAME →charlesxu90.github.io).
All pages are populated from the previous Google Site (xu-xp.com):
content/about/index.md— bio, education, experience, servicecontent/research/index.md— research interestscontent/publications/index.md— 16 articles, 1 patent, 2 theses (with links/PDFs)content/awards/index.md— awards & honoursstatic/images/avatar.png— headshot (cropped from the public KAUST profile)
Social links (GitHub, Google Scholar, ResearchGate, LinkedIn, ORCID, email) are
configured in hugo.toml under [params.social].
- Swap in a higher-resolution / preferred headshot if you have one.
- Move the
xu-xp.comdomain over (see custom-domain steps above).