Skip to content

1. Principles and practices & Project management

Assignment:

- Principles and Practices

  • Plan and sketch a potential final project.

- Project Management

  • Download, read, and sign the student agreement, and commit the file to your repo

  • Work through a git tutorial

  • Build a personal site in the class archive describing you and your final project

Final Project Idea

While using the fablab, I noticed several issues related to access management, particularly the frequent unavailability of the key as well as occasional losses. It was also difficult to know exactly who entered the fablab and at what time.

These observations inspired me to develop a project focused on designing an access control system for the fablab.

This system will rely on the use of an RFID badge to grant access, combined with an application for logging and monitoring in order to ensure traceability of entries and exits from the laboratory.

Sketch the final project

For creating the initial sketch of our final project, we used the AI tool Gemimi.

Gemini helped us quickly explore visual ideas and generate a concept illustration based on a descriptive prompt. This allowed us to better visualize the design before moving on to the modeling and fabrication stages.

  • Below is the result generated by the AI.

  • Below is the prompt we used to generate this sketch.

Creation and Deployment of My Website

For the creation of our website, we will use Zensical.

Zensical is a modern static site generator designed to simplify the building and maintenance of project documentation.

The site source files are written in Markdown and configured with a single .toml configuration file.

1. Installing Python, VS Code, and Git

Installing Python

  • Once the file is downloaded, open it. Check the two boxes highlighted in red, then click « Install Now ».

  • Once the installation is complete, click « Close ».


Installing Visual Studio Code

  • Once the file is downloaded, open it. Click on « Next » until you reach the window shown below.
    Check all the boxes as shown in the image.

  • Click « Next », then « Install ».
    Once installation is complete, click « Finish ».


Installing Git

  • Once the file is downloaded, open it. Click « Next » until the end of the installation. Leave all default options selected and confirm until installation finishes.


2. Cloning Your GitLab Repository

  • Create an empty folder named « fab-academy » inside your Documents folder. Open the Git Bash application, hen type the command below and press Enter :
cd Documents/fab-academy

  • Copy the commands below into a text editor and replace the information with your own:
git init 
git config --global user.name "Your_username"
git config --global user.email "your_email@exemple.com"
ssh-keygen -t ed25519 -a 100 -C "your_email@example.com" -f ~/.ssh/id_ed25519 -N ""
cat ~/.ssh/id_ed25519.pub
  • Once you finish editing, right-click in the Git Bash window, select Paste to paste the commands, then press Enter.

  • Select the content that starts with « ssh-ed25519 », right-click, then click « Copy ».

  • In the « Key » field, paste your key, then click « Add Key ».

  • Go back to Git Bash and run the command below with your own repository information:
git clone git@gitlab.fabcloud.org:academany/fabacademy/2026/labs/inphb/students/auguste-goubo.git


3. Downloading a Zensical Template for Fab Academy

For the design of our website, we used the template available at the following link: https://gitlab.com/public-project6104612/fab-academy-website-template. This template was created by the instructors of our FabLab.

  • Once on the GitLab repository, click on the Code button, then select Download ZIP.

  • After downloading the template, we extracted it into the auguste-goubo folder, first deleting all the files that were already inside that folder, as shown below.


4- Making Your First Push to Your GitLab Repository

  • Open Visual Studio Code, go to “File”, then click on “Open Folder”. Navigate to the fab-academy folder and select your website folder as shown in the image below.

  • Click on “Terminal”, then select “New Terminal” as shown in the image below.

  • Type the following command in the terminal, then press Enter to install zensical :
pip install zensical

  • To start the local server and preview your website, type the following command in the terminal, then press Enter:
zensical serve 

Note

To stop the Zensical web server, press Ctrl+C in the terminal.

  • Go back to VS Code, open the file zensical.toml, and replace the text highlighted in red with your own information.

Attention

Don’t forget to save the file using Ctrl+S.

  • To push your repository online, type the following commands in the terminal, pressing Enter after each one:
git add .
git commit -m "my first commit"
git push

Note

  • To paste commands into the terminal, you can right-click inside the terminal window.
  • You can replace the text "my first commit" with any message you like, as long as it clearly describes the changes you made.


5- Some Tips to Get Started with Markdown

Markdown is a lightweight markup language used to add formatting elements to plain text documents.

For each feature, you’ll find the Markdown code along with its rendered result just below.

Headings

the different levels of titles
# Heading 1
## Heading 2
### Heading 3
#### Heading 4

Text

text style
*italic text* or _italic text_  
**bold text** or __bold text__  
***bold and italic text***  
==This text is highlighted==  
^^This text is underlined^^  
~~This text is crossed out~~    

italic text or italic text
bold text or bold text
bold and italic text
This text is highlighted
This text is underlined
This text is crossed out

List

Flea list
- Item 1
- Item 2
  • Item 1
  • Item 2
Lists of tasks
- [x] Completed step
- [ ] Step to do
  • Completed step
  • Step to do

When writing documentation in Markdown, you can add links to other pages, images, or files. There are two main ways to do this: relative links and absolute links.

1. Relative Link

A relative link describes the path from the current file location.

Example:

Suppose your MkDocs project has the following structure:

Structure of the project
docs/
├── index.md
├── tutorials/
│   ├── intro.md
│   └── advanced.md
└── images/
    └── diagram.png
  • Inside tutorials/intro.md

Link to avance.md :

[Go to advanced tutorial](avance.md)

Go back to the homepage index.md :

[Retour à l’accueil](../index.md)

Display an image from the images/ folder :

![Project diagram](../images/schema.png)

Drawback : If you move a file, you must update the paths.

2. Absolute Link

An absolute link describes the full path from the root of the generated site. Zensical considers the site root to be the docs/ folder.

Exemple :

Always with the same structure:

absolute link
[Home](/index/)
![Project diagram](/images/schema.png)

Here:

  • /index/ refers to the homepage

  • /images/diagram.png refers to an image stored in docs/images.

Warning

For your site documentation, you should use relative links.

Links and Images
[My website](https://fabacademy.org/2026/labs/inphb/students/auguste-goubo/)

![Image title](../images/fab-lab.png){ width="500" }

Embedding a Video

🔹 Method 1: External video

External Video (Youtube)
<iframe width="100%" height="400" 
  src="https://www.youtube.com/embed/dVMqO10DyrU?si=9u6xmH_vtJ6OC1f2"
  title="YouTube video player"
  frameborder="0"
  allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
  allowfullscreen>
</iframe>

🔹 Method 2: Local video (hosted in docs/)

Place your video in a folder such as docs/files/week01/ and insert it like this:

Vidéo locale
<video width="100%" height="400px" id="center" controls>
  <source src="../../files/week01/arduino.mp4" type="video/mp4">
    Your browser does not support HTML5 video.
</video>

Code

Code on the same line
Use the command `git status`.

Use the command git status.

code blocks
``` py title="bubble_sort.py"
def bubble_sort(items):
    for i in range(len(items)):
        for j in range(len(items) - 1 - i):
            if items[j] > items[j + 1]:
                items[j], items[j + 1] = items[j + 1], items[j]
```
bubble_sort.py
def bubble_sort(items):
    for i in range(len(items)):
        for j in range(len(items) - 1 - i):
            if items[j] > items[j + 1]:
                items[j], items[j + 1] = items[j + 1], items[j]

Table

Data table
| Name | Age | City  |
|------|-----|-------|
| Ali  | 25  | Yakro |
| Zoe  | 30  | Abidjan |
Name Age City
Ali 25 Yakro
Zoe 30 Abidjan

Admonitions

Admonition with title
!!! note "Note"
    This is a helpful note.

!!! warning "Warning"
    Make sure to save your work.

Note

This is a helpful note.

Warning

Make sure to save your work.

Keyboard Keys

Keys of the keyboard
++ctrl+alt+del++

Ctrl+Alt+Del