Tags and Categories System Guide
This comprehensive guide explains how tags and categories work in our Jekyll workspace, their relationship to archive browsing, and best practices for creating and using taxonomy effectively.
๐ Overview
Our content management system uses a dual taxonomy approach:
- Categories: Broad, hierarchical content organization (typically 1 per post)
- Tags: Specific, descriptive keywords (multiple per post)
Both systems work together to create powerful content discovery through automated archive pages and enhanced navigation.
๐๏ธ System Architecture
Jekyll Archive Integration
The taxonomy system integrates with Jekyllโs archive plugin to automatically generate:
- Category archive pages at
/category/{category-name}/
- Tag archive pages at
/tag/{tag-name}/
- Paginated listings for each taxonomy term
FrontMatter CMS Integration
Our FrontMatter CMS configuration provides:
- Visual taxonomy management in VS Code
- Predefined category and tag options
- Automatic validation and suggestions
- Data consistency across content
Data File Structure
Taxonomy definitions are stored in:
docs/_data/
โโโ categories.yml # Category definitions with metadata
โโโ tags.yml # Tag definitions with metadata
Each taxonomy entry includes:
- name: Display name
- description: Purpose explanation
- color: Visual identification (hex code)
- icon: Optional emoji or symbol
๐ Categories System
Purpose and Design
Categories represent broad content areas and follow these principles:
- Hierarchical: Organized from general to specific
- Exclusive: Each post typically belongs to one primary category
- Stable: Categories change infrequently
- Descriptive: Clear content area indication
Available Categories
Category | Purpose | Color | Icon |
---|---|---|---|
tutorial |
Step-by-step learning guides | #28A745 | ๐ |
getting-started |
Initial setup and configuration | #17A2B8 | ๐ |
development |
Software development topics | #007BFF | ๐ป |
typescript |
TypeScript specific content | #3178C6 | ๐ท |
jekyll |
Jekyll static site generator | #CC0000 | ๐ |
testing |
Testing strategies and frameworks | #FF6B6B | ๐งช |
deployment |
Deployment and DevOps topics | #6F42C1 | ๐ |
configuration |
Setup and configuration guides | #FFC107 | โ๏ธ |
best-practices |
Recommended approaches | #28A745 | โญ |
documentation |
Documentation and writing | #6F42C1 | ๐ |
navigation |
Site navigation and UX | #17A2B8 | ๐งญ |
announcements |
News and updates | #FFC107 | ๐ข |
linux |
Linux and Unix topics | #FCC624 | ๐ง |
Category Best Practices
Choosing Categories
- Single Category Rule: Most posts should have one primary category
- Content Alignment: Category should match the main topic
- User Perspective: Consider how readers will browse content
- Future Consistency: Use existing categories when possible
Adding New Categories
When creating new categories:
- Check Existing: Review current categories first
- Validate Need: Ensure 3+ posts will use this category
- Clear Purpose: Define specific content area
-
Update Data File: Add to
docs/_data/categories.yml
# Example new category
machine-learning:
name: 'Machine Learning'
description: 'AI and ML development topics'
color: '#FF6B35'
icon: '๐ค'
๐ท๏ธ Tags System
Purpose and Design
Tags represent specific topics and follow these principles:
- Descriptive: Specific technologies, concepts, or tools
- Multiple: Posts can have many relevant tags
- Flexible: Easy to add new tags as needed
- Searchable: Enable precise content discovery
Available Tags
Tag | Description | Color |
---|---|---|
typescript |
Microsoftโs typed JavaScript | #3178C6 |
jekyll |
Static site generator | #CC0000 |
development |
Software development | #28A745 |
vscode |
Visual Studio Code | #007ACC |
wsl |
Windows Subsystem for Linux | #FCC624 |
testing |
Testing frameworks | #FF6B6B |
playwright |
End-to-end testing | #45BA4B |
jest |
JavaScript testing | #C21325 |
markdown |
Markup language | #083FA1 |
documentation |
Technical writing | #6F42C1 |
docs |
Documentation content | #6F42C1 |
guide |
How-to content | #28A745 |
navigation |
Site navigation | #17A2B8 |
tutorial |
Step-by-step guides | #28A745 |
cpus |
Central processing units | #007BFF |
gpus |
Graphics processing units | #FF6B35 |
Tag Best Practices
Choosing Tags
- Specific Technologies: Include framework/tool names
- Core Concepts: Tag main topics discussed
- Target Audience: Consider search terms users might use
- Reasonable Quantity: 3-8 tags per post optimal
Tag Naming Conventions
- Lowercase: Use lowercase for consistency
-
Hyphens: Separate words with hyphens (
machine-learning
) - No Spaces: Avoid spaces in tag names
- Descriptive: Choose clear, searchable terms
Adding New Tags
Process for new tags:
- Search Existing: Check current tags first
- Validate Uniqueness: Ensure no duplicates or near-duplicates
-
Update Data File: Add to
docs/_data/tags.yml
- Consider Aliases: Think about alternative names
# Example new tag
react:
name: "React"
description: "React JavaScript library for building user interfaces"
color: "#61DAFB"
๐ Content Creation Workflow
Using FrontMatter CMS
- Open VS Code: Launch VS Code with FrontMatter extension
-
Access CMS: Use Command Palette (
Ctrl+Shift+P
) โ โFrontMatter: Open Dashboardโ - Create Content: Choose content type (post, documentation, page)
- Select Taxonomy: Use dropdown menus for categories and tags
- Validate: FrontMatter validates against data files
Manual Front Matter
---
layout: post
title: "Your Post Title"
description: "Brief description for SEO"
date: 2025-08-05
categories:
- development # Single primary category
tags:
- typescript # Multiple specific tags
- testing
- vscode
author: "Your Name"
---
Validation Checklist
Before publishing:
-
Category exists in
docs/_data/categories.yml
-
All tags exist in
docs/_data/tags.yml
- Category aligns with main content topic
- Tags are specific and relevant
- Spelling and formatting are correct
๐ Archive Browsing
Generated Archive Pages
Jekyll automatically creates:
Category Archives:
- URL pattern:
/category/{category-name}/
- Lists all posts in that category
- Paginated if many posts
- Includes category metadata
Tag Archives:
- URL pattern:
/tag/{tag-name}/
- Lists all posts with that tag
- Cross-references related tags
- Shows tag description
Navigation Integration
Archives integrate with site navigation:
- Category Menu: Main navigation by content area
- Tag Cloud: Popular tags visualization
- Related Content: Posts with similar tags
- Breadcrumbs: Category-based navigation paths
User Experience
The taxonomy system enhances UX through:
- Discovery: Browse content by interest area
- Filtering: Narrow results by specific topics
- Related Content: Find similar articles
- Progressive Disclosure: From general (category) to specific (tags)
๐ ๏ธ Maintenance and Management
Regular Maintenance Tasks
Monthly Review
- Usage Analysis: Check which tags/categories are unused
- Consistency Check: Verify naming conventions
- Data Validation: Ensure all used terms have data file entries
- Archive Testing: Verify archive page generation
Quarterly Cleanup
- Taxonomy Audit: Review all categories and tags
- Consolidation: Merge similar or redundant terms
- Performance Check: Ensure fast archive page loading
- SEO Review: Optimize for search engines
Data File Management
Categories Data File
Location: docs/_data/categories.yml
category-name:
name: 'Display Name'
description: 'Purpose and scope description'
color: '#HexColor'
icon: '๐' # Optional emoji
Tags Data File
Location: docs/_data/tags.yml
tag-name:
name: "Display Name"
description: "What this tag represents"
color: "#HexColor"
Adding New Taxonomy Terms
Step-by-Step Process
- Research: Check existing terms for alternatives
- Plan: Define purpose and scope clearly
- Add Data: Update appropriate YAML file
- Test: Create test content using new term
- Validate: Check archive page generation
- Document: Update this guide if needed
Validation Commands
# Test Jekyll build with new taxonomy
cd docs
bundle exec jekyll build --drafts
# Check for missing data file entries
npm run taxonomy:validate # If available
๐ Troubleshooting
Common Issues
FrontMatter Not Showing Taxonomy
Symptoms: Categories/tags donโt appear in Data tab
Solutions:
- Check
frontmatter.json
taxonomy configuration - Verify data files exist and are properly formatted
- Restart VS Code and FrontMatter extension
- Validate YAML syntax in data files
Archive Pages Not Generating
Symptoms: 404 errors on /category/
or /tag/
URLs
Solutions:
- Verify
jekyll-archives
plugin is enabled - Check
_config.yml
archive settings - Ensure taxonomy terms exist in data files
- Rebuild Jekyll site completely
Inconsistent Taxonomy Usage
Symptoms: Similar tags/categories with different names
Solutions:
- Run taxonomy audit script
- Standardize naming conventions
- Update content to use consistent terms
- Create alias system if needed
Validation Scripts
Check Taxonomy Consistency
# Find posts without categories
grep -L "categories:" docs/_posts/*.md
# Find posts without tags
grep -L "tags:" docs/_posts/*.md
# List all used taxonomy terms
grep -h "categories:\|tags:" docs/_posts/*.md | sort | uniq
๐ Advanced Features
Custom Archive Layouts
Create specialized archive templates:
docs/_layouts/
โโโ archive.html # Default archive layout
โโโ category-archive.html # Category-specific layout
โโโ tag-archive.html # Tag-specific layout
Taxonomy-Based Navigation
Generate dynamic navigation:
<!-- Category navigation -->
{% for category in site.data.categories %}
<a href="/category/{{ category[0] }}/" style="color: {{ category[1].color }}">
{{ category[1].icon }} {{ category[1].name }}
</a>
{% endfor %}
Related Content System
Use tags for content recommendations:
<!-- Related posts by shared tags -->
{% assign related_posts = site.posts | where_exp: "post", "post.tags contains page.tags[0]" | limit: 3 %}
๐ฏ Best Practices Summary
Content Creators
- Plan Taxonomy: Choose categories and tags before writing
- Be Consistent: Use established terms when possible
- Think User-First: Consider how readers will discover content
- Validate Early: Check taxonomy exists in data files
Site Maintainers
- Regular Audits: Review taxonomy usage monthly
- Performance Monitoring: Track archive page load times
- User Analytics: Monitor which archives are popular
- Documentation: Keep this guide updated
Development Team
- Automation: Create scripts for taxonomy validation
- Testing: Include taxonomy in CI/CD pipeline
- Monitoring: Track archive page generation errors
- Performance: Optimize archive page queries
๐ Resources
Configuration Files
-
frontmatter.json
: FrontMatter CMS configuration -
docs/_config.yml
: Jekyll site configuration -
docs/_data/categories.yml
: Category definitions -
docs/_data/tags.yml
: Tag definitions
Archive Examples
External Documentation
Last Updated: August 5, 2025
Maintainer: MIJUG Development Team
Related Documentation: Content Management Guide