Skip to content

MindShelf

📋🧠 Overview

The Personal Wiki project is a structured knowledge base built using Obsidian for local editing and managed via a Git repository. It leverages GitLab CI/CD pipelines to automatically deploy content as a static site using MkDocs and GitLab Pages.

The notes compiled here cover both technical knowledge and hands-on experience from specific projects, such as the coding project DashLab.

🛠️ Technologies Used

  • Obsidian — local Markdown knowledge management
  • GitLab — repository hosting and CI/CD
  • MkDocs — static site generator for Markdown files
  • Material for MkDocs — theme for modern documentation sites
  • GitLab Pages — hosting the static website generated from the Obsidian vault

🚀 Implementation Steps

  1. Create and organize notes in Obsidian using folders and frontmatter metadata.
  2. Use Templater and Dataview plugins for better automation and navigation.
  3. Sync notes to a private GitLab repository.
  4. Set up a .gitlab-ci.yml pipeline to:
  5. Convert notes using MkDocs
  6. Deploy the site using GitLab Pages
  7. Add .gitlab-ci.yml and mkdocs.yml to the root of the repo to configure builds.
  8. Enable Pages in the GitLab repository settings.

⚙️ GitLab CI/CD Setup

image: python:3.8-slim
pages:
  stage: deploy
  script:
    - pip install -r requirements.txt
    - mkdocs build --verbose
  artifacts:
    paths:
      - public
  only:
    - main

📌 Challenges Encountered

  • Mapping Obsidian folder structure to MkDocs navigation
  • Managing internal links and custom plugins compatibility

✨ What I Learned

  • How to automate documentation deployment using GitLab CI/CD
  • Best practices for maintaining clean and modular Markdown documentation
  • Importance of frontmatter metadata and note structure for scalability

🧠 Notes & Tips

  • Use .gitignore to exclude system-specific files from the repo
  • Customize MkDocs navigation with mkdocs.yml using note structure
  • Obsidian canvas is not rendered in the final site — keep visual notes locally
  • Regularly pull/push with the Obsidian Git plugin, especially after mobile edits