This week is all about planning, websites, version control, and documentation. Version control and git is important for Fab Academy because it allows an easy way to manage failures, control the versions and provide reproducabilitiy.
Learning Outcomes
- Communicate an initial project proposal
- Identify and utilise version control protocol(s)
- Explore and use website development tool(s)
Laptop Specifications:
- Device: Macbook Air
- OS: macOS Sequoia 15.6.1
- Shell: bash
- Code Editor: VSCode
I used the terminal integrated in the VSCode editor.
Setting up Git
I already had git installed in my system, but to double check we can use the command:
git --version
Output:
git version 2.15.0
Setting up GitLab
I already had a GitLab account set up, i just created a new project called
"mehmet-bener-fabacademy"
SSH Setup
Using SSH keys is important to not type your account username and password every time you are commiting. This website was useful when setting SSH up:
1) Generate Keys
ssh-keygen -t rsa -C "<your mail>" -f ~/.ssh/id_rsa_gitlab
2) Copying and Pasting the Keys
Copying:
pbcopy < ~/.ssh/id_rsa_gitlab.pub
The command above copies the keys generated directly to the clipboard.
Pasting: I then went to my GitLab account and pasted the copied key into:
GitLab --> edit profile --> ssh keys
3) Register the Key with the SSH Agent
ssh-add --apple-use-keychain ~/.ssh/id_rsa_gitlab
4) SSH Config for GitLab
Edit the ~/.ssh/config file by entering the command:
nano ~/.ssh/config
Paste the following in the file:
Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_rsa_gitlab
AddKeysToAgent yes
UseKeychain yes
This tells SSH to always use your GitLab key when talking to gitlab.com.
5) Test the SSH Connection
ssh -T git@gitlab.com
On success you should see a greeting like:
Welcome to GitLab, @<your-username>
Cloning Repo
I cloned my project I already created on GitLab called mehmet-bener-fabacademy:
git clone git@gitlab.com:Mehmet-Bener/mehmet-bener-fabacademy.git
cd mehmet-bener-fabacademy
In addition to setting up my repository, I worked through a Git tutorial covering cloning, committing, pushing, and SSH-based authentication.
Student Agreement
I downloaded, read, and signed the Fab Academy student agreement.
The signed agreement was committed to my repository as required.
Local Site Setup
1) Install Hugo
I didn’t have hugo installed on my laptop so I installed it with the command:
brew install hugo
2) Select a Theme from Hugo
I selected the beautifulhugo theme but you can select any theme you want from:
https://themes.gohugo.io/
3) Set Up Site
Create the site:
hugo new site <site-name>
Initialize git:
git init
Add the theme you want as a submodule:
git submodule add <github-link-of-the-theme> themes/<name-of-theme>
Now enter the hugo.toml file and change the following line:
theme = "<name-of-theme>"
4) Run Site Locally
Now run the site locally when in the root directory of the site and run:
hugo serve -D -F
Customize Site
Now I customized and edited the site locally until I was happy and ready to publish.
Firstly, I added the pages I wanted to see in the header by modifying the hugo.toml file and adding the parts below:
baseURL = "/"
languageCode = 'en-us'
title = 'Mehmet Bener Fab Academy Site'
theme = "beautifulhugo"
[params]
mainSections = ["post"]
[menu]
[[menu.main]]
name = "Final Project"
url = "/page/final-project/"
weight = 40
[[menu.main]]
name = "Weekly Assignments"
url = "/page/weekly/"
weight = 40
Then, I created and wrote the .md files:
- Inside the
/content/page/directory I created myweekly.mdandfinal-project.mdfiles and wrote their contents. - Inside the
/content/post/directory I created myabout.mdandfavourites.md files and wrote their contents which had an About Me section and a post about my favourite 4 final projects from the past years.
Example about.md content:
---
title: "About Me"
date: "2025-09-21"
---
Hello, I’m Mehmet
Hello! My name is Mehmet Bener, and I’m currently a sophomore at Hisar School. As an active member of the ideaLab Fablab, over the past few years, I have contributed to FRC team #6431, done research on HCI and robotics.
I'm part of the 2026 Fab Academy class at Hisar School ideaLab Fablab located in Istanbul, Turkiye. It's a place where we tinker, prototype, and bring ideas to life guided by the motto "Make, fail, learn, repeat". From CNC machining to 3D printing, we explore all things digital fabrication in our journey to become better makers.
While writing these files I could see the result of my changes by saving the files and running:
hugo serve -D -F
Note: I will be writing my documentations like this one from the Obsidian app and then exporting the docs as .md files and adding them to the /content/page/ directory.
Deploying Website
Add a .gitlab-ci.yml file at the root directory:
image: registry.gitlab.com/pages/hugo:latest
stages: [build, deploy]
variables:
HUGO_ENV: production
HUGO_BASEURL: $CI_PAGES_URL/
hugo_build:
stage: build
before_script:
- hugo version
script:
- hugo --minify
artifacts:
paths:
- public
expire_in: 1 day
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "main"'
pages:
stage: deploy
before_script:
- hugo version
script:
- hugo --minify
artifacts:
paths:
- public
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
Also add a .gitignore file at the root of the directory:
public/
resources/
.hugo_build.lock
As we have done all changes needed locally, now we can push to git:
git add .
git commit -m "commit message"
git push -uf origin main
- After all of these commands I faced many errors while deploying to GitLab Pages because my account wasn’t fully set up yet. After verifying my account fully, the deployment was successful and I could access my website from the link:
https://<account-name>.gitlab.io/<project-name>/