Skip to content

Add External Template Sources, Configuration System, and Template Management #15

@solrevdev

Description

@solrevdev

🎯 Overview

This issue consolidates the remaining features from the original Issue #9 into a comprehensive template ecosystem for seedfolder. After the successful completion of PR #10, we now have a solid foundation with 6 built-in project templates and professional CLI features. This issue will add external template support, configuration management, and a GitHub-based template marketplace.

🎨 Design Philosophy

  • Pragmatic over complex: Simple GitHub-based marketplace without hosting costs
  • Progressive enhancement: All new features are additive, maintaining backward compatibility
  • User empowerment: Allow users to override built-in templates and create new project types
  • Enterprise ready: Robust validation, error handling, and configuration management

🚀 Feature Areas

1. External Template Sources (Issue #2)

Enable users to load templates from external directories and sources beyond the built-in embedded templates.

Acceptance Criteria:

  • Template discovery hierarchy: CLI args → user directory → system directory → built-in
  • Support --template-path flag for custom template directories
  • User templates directory at ~/.seedfolder/templates/
  • External template validation with clear error reporting
  • Documentation for creating custom templates

Template Structure:

template-name/
├── template.json          # Metadata (version, description, author, etc.)
├── files/                 # Template files to copy
│   ├── README.md
│   ├── .gitignore
│   └── package.json
└── docs/                  # Optional template documentation
    └── README.md

Subtasks:

  • Design template directory structure and metadata format
  • Implement template discovery hierarchy (CLI → user → system → built-in)
  • Add --template-path command line parameter
  • Create ~/.seedfolder/templates/ user directory support
  • Implement template validation for external sources
  • Add template override capability (external templates override built-in by name)

2. Configuration File Support (Issue #5)

Implement a comprehensive configuration system for user preferences and defaults.

Acceptance Criteria:

  • Global configuration at ~/.seedfolder/config.json
  • Per-directory configuration via .seedfolder.json files
  • seedfolder config command group for configuration management
  • Configuration precedence: CLI args → local → global → defaults
  • Support for all major settings (default template, date prefixing, behavior options)

Configuration Schema:

{
  "defaultTemplate": "markdown",
  "datePrefix": {
    "enabled": true,
    "format": "yyyy-MM-dd"
  },
  "templateSources": [
    "~/.seedfolder/templates",
    "https://github.com/solrevdev/seedfolder-marketplace"
  ],
  "behavior": {
    "quietMode": false,
    "forceOverwrite": false,
    "dryRun": false
  }
}

Subtasks:

  • Design JSON configuration schema with validation
  • Implement ~/.seedfolder/config.json global configuration
  • Add .seedfolder.json per-directory configuration
  • Create seedfolder config command group (list, set, unset, init)
  • Implement configuration precedence hierarchy
  • Add configuration validation and error handling
  • Replace hardcoded date prefix with configurable format

3. Template Management & Marketplace (Issue #6)

Create a comprehensive template management system with a GitHub-based marketplace.

🏪 Marketplace Repository: https://github.com/solrevdev/seedfolder-marketplace

Acceptance Criteria:

  • GitHub marketplace repository (solrevdev/seedfolder-marketplace)
  • seedfolder template command group for template operations
  • Template installation from remote sources (GitHub repos)
  • Template validation with detailed error reporting
  • Template update and uninstall functionality

Marketplace Repository Structure:

solrevdev/seedfolder-marketplace/
├── templates/
│   ├── angular/
│   ├── vue/
│   ├── rust/
│   └── golang/
├── registry.json          # Master catalog
└── README.md              # Contribution guidelines

Command Structure:

# Template Management
seedfolder template list                    # Show all available templates
seedfolder template list --remote          # Show marketplace templates
seedfolder template info <name>            # Show template details
seedfolder template install <name>         # Install from marketplace
seedfolder template install --url <repo>   # Install from custom repo
seedfolder template uninstall <name>       # Remove template
seedfolder template update [name]          # Update templates
seedfolder template validate <path>        # Validate template structure
seedfolder template create <name>          # Create template scaffold

# Configuration Management  
seedfolder config list                     # Show current configuration
seedfolder config set <key> <value>       # Set configuration value
seedfolder config unset <key>             # Remove configuration value
seedfolder config init                    # Create default config file

Subtasks:

  • Create GitHub marketplace repository (solrevdev/seedfolder-marketplace)
  • Design template metadata schema (template.json) with validation
  • Implement seedfolder template command group infrastructure
  • Add template installation from GitHub repositories
  • Implement template validation engine with detailed error reporting
  • Add template update functionality with version checking
  • Implement template uninstall with cleanup
  • Create template marketplace client for remote operations
  • Add template conflict detection and resolution
  • Document template authoring guidelines

🏗️ Implementation Strategy

Phase 1: Foundation (Week 1-2)

  • External template loading infrastructure
  • Configuration system core
  • Template validation framework

Phase 2: Commands (Week 2-3)

  • seedfolder template command group
  • seedfolder config command group
  • Basic marketplace operations

Phase 3: Marketplace (Week 3-4)

  • GitHub marketplace repository
  • Remote template installation
  • Update and management features

Phase 4: Polish (Week 4-5)

  • Comprehensive testing
  • Documentation updates
  • Template authoring guidelines

🎯 Success Metrics

  • Users can override any built-in template with their own version
  • Users can add completely new project types not covered by built-in templates
  • Template sharing works seamlessly through GitHub marketplace
  • Configuration provides sensible defaults while allowing full customization
  • All operations work reliably across Windows, macOS, and Linux
  • Comprehensive error messages guide users to resolution
  • Template validation prevents common mistakes and conflicts

🔗 Related Issues

This issue consolidates and closes:

Dependencies:

📚 Technical Notes

  • Maintain single-file Program.cs structure with new internal classes
  • JSON Schema validation for all configuration and metadata files
  • Cross-platform path handling using Path.Combine() throughout
  • Comprehensive error handling with actionable error messages
  • Template caching for performance with remote sources
  • Atomic operations for template installation/removal where possible

🤝 Contributing

This issue provides multiple independent subtasks suitable for different skill levels. Contributors can work on individual features while maintaining overall architectural coherence.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions