# How to make changes to the Carsmos jekyll site
install github desktop version which is the easiest way to manage the project changes otherwise install the github toolchains
clone the repo
```
git clone https://github.com/ymote/ymote.github.io
```
cd ymote.github.io directory
change the Gemfile
uncomment the following line because it runs locally
> gem "jekyll"
>
comment out the following line
> gem "github-pages", group: :jekyll_plugins
>
and do the following update
```
bundle add webrick
bundle install
```
if you got errors, check your ruby and gem version. Mine is below.
/Users/ychen/.gem/ruby/3.1.2/gems/bundler-2.2.29
then run the bundle build commands
```
bundle exec jekyll serve --livereload
```
you should be able to open the webiste at
http://localhost:4000/
## template strucutre explaination
### menu entry
menu structure is defined in the
> https://github.com/ymote/ymote.github.io/blob/main/_data/menus.yml
the picutre shows the how the menu is defined in the menu.yml and how the menu entry HTML is organized

Menu are either single-entry or multi-entries.
single-entry menu does not have
```
menu-has-children:
```
such as this
```
- name: 'home'
title: 'Home'
link: '/'
```
multi-entries menu can list all the sub-menu items below the menu-has-children
```
- name: 'projects'
title: 'projects'
link: '/'
menu-has-children:
- name: 'Dora'
title: 'Dora'
link: '/projects/dora/'
- name: 'Oasis'
title: 'Oasis'
link: '/projects/oasis/'
- name: 'EmtyOS'
title: 'EmtyOS'
link: '/projects/emtyos/'
- name: 'AutoExpress'
title: 'AutoExpress'
link: '/projects/autoexpress/'
```
## menu structure
the screen below shows the menu entry URL is defined in the HTML file

## page template file
the jekyll content file is composed with page template file, page content data and template files seen below

a HTML page can specify a template file which is structured by multiple parts see below

## content page structure
a page content file is composed with template file, data file and rendering template file see below


