Agent Guide: Justme.dev
This guide provides an overview of the repository structure and the content pipeline for AI agents and developers to effectively maintain and improve the project.
Repository Overview
justme.dev is a Cloud-Native Documentation platform built with VitePress and a custom Python ETL pipeline.
Core Technologies
- Frontend: VitePress (Vue.js 3 + Vite)
- Content Pipeline: Python 3 (requests, PyYAML)
- Deployment: GitHub Pages (via GitHub Actions)
Repository Structure
text
├── .github/workflows/ # CI/CD pipelines (Build, Generate, Deploy)
├── bin/ # Python virtual environment binaries
├── blog/ # Generated and manual blog posts (Markdown)
├── blog.md # VitePress entry point for the blog
├── components/ # Vue.js components used in Markdown files
├── data/ # VitePress data loaders (blog.data.js, project.data.js)
├── generate/ # Content aggregation pipeline
│ ├── process.py # Main Python ETL script
│ └── requests/ # YAML manifests defining content sources
├── lib/ # Shared JavaScript utilities (transformPage.js)
├── projects/ # Generated and manual project documentation (Markdown)
├── projects.md # VitePress entry point for projects
├── public/ # Static assets (images, webp files)
├── gen_image.sh # Script for converting and resizing images to .webp
├── index.md # Homepage layout and content
├── package.json # Node.js dependencies and scripts
└── requirements.txt # Python dependenciesContent Pipeline (ETL)
The site aggregates content from external GitHub repositories using a Python script.
1. Request Manifests (generate/requests/*.yaml)
Each YAML file in this directory defines a content source.
type: Determines the destination folder (project->projects/,blog->blog/).fetchReadme: true: Tells the pipeline to fetch a README from GitHub.- GitHub Info:
user,project,branch,readmeFile. - Frontmatter: Additional metadata (title, date, image, intro, languages) is injected into the generated Markdown.
2. Processing (generate/process.py)
- Reads all YAML files in
generate/requests/. - Fetches the raw README content from GitHub.
- Wraps the content with Vue components (
ArticleItem.vue,ArticleFooter.vue). - Saves the result as a Markdown file with full YAML frontmatter.
3. Execution
Run the pipeline locally:
bash
npm run docs:generateComponents & Data
- Vue Components: Located in
components/. They handle the visual presentation of articles and projects. - Data Loaders: Located in
data/. They usecreateContentLoaderto dynamically list and sort Markdown files. - Transform Logic:
lib/transformPage.jssanitizes and enriches the frontmatter before it reaches the components ( e.g., adding GitHub badge URLs).
Working with Images
Images should be stored in public/images/.
- Use
gen_image.shto convert.pngfiles frominput_images/to optimized.webpformat. - Ensure
SIZE_WIDTH=653andSIZE_HEIGHT=378are maintained for consistency.
Guidelines for Agents
- Adding Project Content: To add a new project or blog post from GitHub, create a new YAML file in
generate/requests/rather than editingprojects/directly. - Adding Blog Content: To add a blog post, create a new YAML file in
blog/. - Modifying UI: Update components in
components/or the transformation logic inlib/transformPage.js. - Frontmatter: Always ensure
dateandtypeare present in request manifests to maintain correct sorting and routing. the image file can be a temporary placeholder for the user to update. - Consistency: Follow the established pattern of wrapping Markdown content in
<script setup>withArticleItemandArticleFooter.

