This guide explains how to manage and update your CC Lab website built with Jekyll and the Minimal Mistakes theme.
# Install dependencies
bundle install
# Run local server
bundle exec jekyll serve
# View at http://localhost:4000
git add .
git commit -m "Update website"
git push origin gh-pages
Your site will be live at: https://skblnw.github.io
├── _config.yml # Main configuration (site name, URL, etc.)
├── _data/
│ ├── navigation.yml # Navigation menu items
│ ├── authors.yml # ALL lab member data (MAIN SOURCE)
│ └── papers.csv # Publications list
├── _pages/
│ ├── home.md # Homepage content
│ ├── research.md # Research descriptions
│ ├── people.md # People page (auto-generated from authors.yml)
│ ├── publications.md # Publications (reads from papers.csv)
│ ├── contact.md # Contact information
│ ├── news.md # News archive
│ └── resources.md # Software/data resources
├── collections/
│ ├── _people/ # Individual person pages (auto-generated)
│ └── _posts/ # News posts (YYYY-MM-DD-title.md format)
├── assets/images/
│ ├── people/ # Member photos (bio-lastname.jpg)
│ ├── papers/ # Paper thumbnails
│ ├── bar-network.png # Homepage banner
│ └── lab-photo.jpg # Group photo
└── utils/
├── generate_people.py # Script to generate people pages
└── import_publications.py # Script to import papers
Edit _config.yml
:
title: "CC Lab @ xjtlu" # Your lab name
description: "Research laboratory focused on structural bioinformatics"
email: "Chun.Chan@xjtlu.edu.cn"
Edit _data/navigation.yml
:
main:
- title: "Research"
url: /research/
- title: "New Section" # Add new menu item
url: /new-section/
Edit _data/authors.yml
and add a new person:
firstname_lastname: # Unique ID (use underscores)
name: "First Last, PhD" # Full name with degree
email: "email@xjtlu.edu.cn"
bio: "keyword1; keyword2; keyword3" # Short keywords
bio_long: >
Full biography paragraph. Can include HTML tags like <p></p>.
Describe research interests, background, current projects.
avatar: /assets/images/people/bio-lastname.jpg # Photo path
title: "Position Title" # e.g., "PhD Student", "Postdoc"
type: member # Use "member" for current, "alumn" for alumni
# Optional fields:
github: githubusername
linkedin: linkedin-username
twitter: twitterhandle
google_scholar: ScholarID
orcid: 0000-0000-0000-0000
ncbi_id: "Last F" # For auto-matching publications
bio-lastname.jpg
/assets/images/people/
Run the Python script:
cd /Users/ukevi/github/skblnw.github.io
python utils/generate_people.py
This creates a page in collections/_people/firstname_lastname.md
# In _data/authors.yml:
john_smith:
name: "John Smith"
email: "john.smith@xjtlu.edu.cn"
bio: "molecular dynamics; protein folding; machine learning"
bio_long: >
John is a PhD student who joined in 2024. He works on
developing ML models for protein structure prediction.
avatar: /assets/images/people/bio-smith.jpg
title: "PhD Student"
type: member
github: johnsmith
ncbi_id: "Smith J"
Edit _data/papers.csv
:
id,title,journal,date,authors,link,doi,preprint_url,preprint_label,image
6,"Your Paper Title","Nature","2024 Mar","Chan KC, Smith J","https://doi.org/10.1038/xxx","10.1038/xxx","https://arxiv.org/xxx","arXiv","paper6.jpg"
Fields explained:
/assets/images/papers/
python utils/import_publications.py --bibtex my_papers.bib --merge
paperX.jpg
(match the ID)/assets/images/papers/
Create a new file in collections/_posts/
with format:
YYYY-MM-DD-short-title.md
Example: 2024-03-15-new-grant.md
---
layout: single
title: "Full News Title Here"
categories: news
excerpt: "Brief 1-2 sentence summary for the preview"
tags:
- grant
- research
---
Your news content here. You can use **markdown** formatting.
Add images: 
Add links: [Link text](https://example.com)
New Publication:
---
layout: single
title: "New Paper Published in Nature"
categories: news
excerpt: "Our latest work on protein folding is now published."
tags:
- publication
---
Our paper "Title" has been published in Nature!
Led by John Smith, this work presents...
Read it here: [DOI link](https://doi.org/...)
New Member:
---
layout: single
title: "Welcome John Smith to the Lab"
categories: news
excerpt: "John joins us as a new PhD student."
tags:
- team
---
We're excited to welcome John Smith who joins us as a PhD student!
John completed his BSc at... and will be working on...
Edit _pages/research.md
directly:
## Research Directions
### Project Name
*Research question or focus*
Description of the project...
Key areas:
- Bullet point 1
- Bullet point 2
### Another Project
Content...
/assets/images/
/assets/images/
bio-lastname.jpg
/assets/images/people/
paper1.jpg
, paper2.jpg
, etc./assets/images/papers/
# Resize with ImageMagick
convert input.jpg -resize 400x400^ -gravity center -crop 400x400+0+0 bio-lastname.jpg
# Compress
convert input.jpg -quality 85% output.jpg
_data/authors.yml
- add their entry/assets/images/people/bio-lastname.jpg
python utils/generate_people.py
_data/papers.csv
- add new row/assets/images/papers/paperX.jpg
/collections/_posts/2024-MM-DD-title.md
_pages/contact.md
/
# Make sure you're in the right directory
cd /Users/ukevi/github/skblnw.github.io
# Run the script
python utils/generate_people.py
# Check for new files in collections/_people/
ls collections/_people/
Test locally first:
bundle exec jekyll build --verbose
bundle exec jekyll serve
# Heading 1
## Heading 2
**bold text**
*italic text*
[link text](https://url.com)

- Bullet list
1. Numbered list
> Blockquote
---
layout: single # or splash, archive
title: "Page Title"
permalink: /custom-url/
excerpt: "Brief description"
header:
overlay_image: /assets/images/banner.jpg
---
# Check status
git status
# Add all changes
git add .
# Commit with message
git commit -m "Update description"
# Push to GitHub
git push origin gh-pages
# Pull latest changes
git pull origin gh-pages
If you encounter problems with the website structure or scripts, check:
--verbose
flagRemember: Always test changes locally before pushing to GitHub!