Rustelo/templates
Jesús Pérez 0aeaa33d9a
Some checks failed
CI/CD Pipeline / Test Suite (push) Has been cancelled
CI/CD Pipeline / Security Audit (push) Has been cancelled
CI/CD Pipeline / Build Docker Image (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / Performance Benchmarks (push) Has been cancelled
CI/CD Pipeline / Cleanup (push) Has been cancelled
chore: update gitignore and fix content
2026-02-08 20:09:38 +00:00
..

Rustelo Implementation Templates

This directory contains the unified asset system for Rustelo implementation templates, following a DRY (Don't Repeat Yourself) architecture.

NEW: Unified Asset System

The framework has been completely redesigned to use a unified, remote-first asset system instead of static embedded templates. This provides better maintainability, dynamic discovery, and flexible template composition.

Architecture Overview

templates/
├── shared/                    # Master asset repository (DRY principle)
│   ├── scripts/              # Setup, build, database, deployment scripts
│   ├── configs/              # Configuration templates
│   ├── docker/               # Docker files
│   ├── content/              # Sample content and localization
│   ├── docs/                 # Documentation templates
│   ├── public/               # Public assets
│   ├── src/                  # Source code templates
│   ├── *.template            # Core template files
│   └── README.md             # Detailed documentation
├── templates.json            # Template variant definitions with asset patterns
├── framework-features.json   # Dynamic feature discovery
└── basic/                    # Template-specific files (minimal)
    └── manifest.json         # Template-specific configuration

Key Benefits

DRY Principle: Single source of truth in shared/
Dynamic Discovery: Templates discovered remotely, not hardcoded
Flexible Inclusion: Templates specify what assets they need
Easy Maintenance: Update once in shared/, all templates benefit
Requirement Validation: Each template declares and validates its requirements
Framework Agnostic: No hardcoded assumptions about implementations

Template Variants

All template variants are defined in templates.json with dynamic asset inclusion patterns:

🪶 Minimal

  • Complexity: Simple
  • Setup Time: 2 minutes
  • Assets: Core files only, minimal dependencies
  • Use For: Prototypes, learning projects, microservices, API-only applications

🏗️ Basic

  • Complexity: Simple
  • Setup Time: 5 minutes
  • Assets: Standard web app assets, blog, responsive design
  • Use For: Business websites, portfolios, blogs, landing pages

📝 CMS

  • Complexity: Medium
  • Setup Time: 10 minutes
  • Assets: Content management, admin interface, SEO optimization
  • Use For: Content-heavy websites, corporate blogs, news sites

🏢 Enterprise

  • Complexity: Advanced
  • Setup Time: 15 minutes
  • Assets: Full CI/CD, monitoring, security, compliance features
  • Use For: Enterprise applications, regulated environments, high-availability systems

💼 SaaS

  • Complexity: Advanced
  • Setup Time: 20 minutes
  • Assets: Authentication, subscriptions, multi-tenancy, business intelligence
  • Use For: SaaS applications, subscription services, multi-tenant platforms

🤖 AI-Powered

  • Complexity: Advanced
  • Setup Time: 25 minutes
  • Assets: LLM integration, semantic search, embeddings, intelligent features
  • Use For: AI applications, chatbots, semantic search engines, content generation

🛍 E-Commerce

  • Complexity: Advanced
  • Setup Time: 30 minutes
  • Assets: Product catalog, shopping cart, payments, inventory, order management
  • Use For: Online stores, marketplace platforms, B2B e-commerce

Asset Inclusion System

Templates use inclusion/exclusion patterns instead of duplicating files:

{
  "name": "basic",
  "assets": {
    "includes": [
      "shared/scripts/setup/*.sh",
      "shared/configs/base/*.toml",
      "shared/docker/Dockerfile.dev"
    ],
    "excludes": [
      "shared/scripts/enterprise/**/*"
    ],
    "template_files": [
      "shared/justfile.template",
      "shared/Cargo.toml.template"
    ]
  }
}

This approach:

  • Eliminates duplication: Assets defined once in shared/
  • Flexible composition: Each template includes only what it needs
  • Easy maintenance: Update once, all templates benefit
  • Dynamic discovery: Templates fetched from remote sources

Usage

Templates are automatically downloaded and applied by cargo rustelo init:

# Use default basic template
cargo rustelo init my-app

# Specify a template variant
cargo rustelo init my-app --template enterprise

# With custom asset source
cargo rustelo init my-app --template cms --asset-source https://github.com/my-org/rustelo-templates

Template Variables

Templates support variable substitution:

  • {{project_name}} - Project name
  • {{project_name_snake}} - Project name in snake_case
  • {{author}} - Author name
  • {{description}} - Project description
  • {{rustelo_version}} - Framework version
  • {{template_variant}} - Selected template name
  • {{generation_timestamp}} - Creation timestamp

Contributing Templates

To add a new template variant:

  1. Create a new directory with the template name
  2. Add all necessary template files
  3. Use {{variable}} syntax for substitutable values
  4. Update this README with template description
  5. Test with cargo rustelo init --template your-template

Remote Usage

Templates can be served remotely:

# Use remote template source
cargo rustelo init my-app --asset-source https://raw.githubusercontent.com/your-org/rustelo/main/templates

# Local development with framework
cargo rustelo init my-app --asset-source ../rustelo/templates

The asset source can be configured in rustelo-deps.toml for persistent settings.