Rustelo/config/features/content.toml

220 lines
5.0 KiB
TOML
Raw Permalink Normal View History

2025-07-07 23:13:01 +01:00
# Content Management Feature Configuration
# Settings for the database-backed content management system
[features]
content_db = true
# Content Management Configuration
[content]
enabled = true
content_dir = "content"
cache_enabled = true
cache_ttl = 3600 # seconds
max_file_size = 5242880 # 5MB
auto_save_interval = 30 # seconds
enable_versioning = true
max_versions = 10
# Content Types
[content.types]
# Supported content types and their configurations
[content.types.article]
enabled = true
template = "article.hbs"
slug_prefix = "articles"
allow_comments = true
enable_seo = true
max_length = 50000
[content.types.page]
enabled = true
template = "page.hbs"
slug_prefix = "pages"
allow_comments = false
enable_seo = true
max_length = 100000
[content.types.blog_post]
enabled = true
template = "blog_post.hbs"
slug_prefix = "blog"
allow_comments = true
enable_seo = true
max_length = 30000
enable_series = true
# Markdown Configuration
[content.markdown]
enable_syntax_highlighting = true
theme = "github"
enable_tables = true
enable_strikethrough = true
enable_autolinks = true
enable_task_lists = true
enable_footnotes = true
enable_math = false
heading_anchors = true
code_block_line_numbers = true
# SEO Configuration
[content.seo]
auto_generate_meta = true
default_meta_description_length = 160
auto_generate_og_tags = true
enable_json_ld = true
sitemap_enabled = true
sitemap_path = "/sitemap.xml"
robots_txt_enabled = true
# Content Publishing
[content.publishing]
auto_publish = false
require_review = true
enable_drafts = true
enable_scheduling = true
default_status = "draft" # "draft", "published", "scheduled", "archived"
# Content Categories and Tags
[content.taxonomy]
enable_categories = true
max_categories_per_content = 5
enable_tags = true
max_tags_per_content = 20
enable_hierarchical_categories = true
# Media Management
[content.media]
enabled = true
upload_dir = "uploads/content"
allowed_extensions = ["jpg", "jpeg", "png", "gif", "webp", "svg", "pdf", "doc", "docx"]
max_file_size = 10485760 # 10MB
enable_image_optimization = true
generate_thumbnails = true
thumbnail_sizes = [150, 300, 600, 1200]
# Image Processing
[content.media.images]
auto_optimize = true
quality = 85
progressive_jpeg = true
strip_metadata = true
enable_webp_conversion = true
enable_lazy_loading = true
# Content Search
[content.search]
enabled = true
search_engine = "database" # "database", "elasticsearch", "algolia"
index_content = true
index_metadata = true
search_fields = ["title", "content", "excerpt", "tags", "categories"]
min_search_length = 3
max_results = 50
# Full-text Search Configuration
[content.search.fulltext]
enable_stemming = true
enable_fuzzy_search = true
fuzzy_distance = 2
boost_title = 2.0
boost_tags = 1.5
boost_categories = 1.3
# Content Cache
[content.cache]
enable_redis = false
redis_url = "redis://localhost:6379"
redis_prefix = "content:"
cache_rendered_content = true
cache_search_results = true
search_cache_ttl = 300 # 5 minutes
# Content API
[content.api]
enabled = true
enable_public_api = true
enable_admin_api = true
api_prefix = "/api/content"
rate_limit_per_minute = 100
require_auth_for_write = true
enable_bulk_operations = true
# Content Backup
[content.backup]
enabled = true
backup_interval = 86400 # 24 hours
backup_retention_days = 30
backup_dir = "backups/content"
include_media = true
compress_backups = true
# Content Workflows
[content.workflows]
enabled = false
require_approval = false
approval_roles = ["editor", "admin"]
notification_on_submission = true
notification_on_approval = true
auto_notify_authors = true
# Content Comments
[content.comments]
enabled = true
require_approval = false
enable_replies = true
max_nesting_level = 3
enable_voting = true
enable_email_notifications = true
anti_spam_enabled = true
# Content Analytics
[content.analytics]
track_views = true
track_reading_time = true
track_popular_content = true
analytics_retention_days = 90
enable_heatmaps = false
# RSS/Atom Feeds
[content.feeds]
enabled = true
rss_enabled = true
atom_enabled = true
feed_title = "Rustelo Content Feed"
feed_description = "Latest content from Rustelo"
max_items = 20
include_full_content = false
# Content Import/Export
[content.import_export]
enabled = true
supported_formats = ["markdown", "html", "json", "xml"]
enable_bulk_import = true
enable_export = true
export_formats = ["markdown", "json", "pdf"]
# Content Security
[content.security]
enable_content_sanitization = true
allowed_html_tags = ["p", "br", "strong", "em", "ul", "ol", "li", "h1", "h2", "h3", "h4", "h5", "h6", "blockquote", "code", "pre"]
enable_xss_protection = true
enable_csrf_protection = true
max_content_length = 1000000 # 1MB
# Content Localization
[content.i18n]
enabled = false
default_language = "en"
supported_languages = ["en", "es", "fr", "de"]
fallback_to_default = true
auto_detect_language = false
# Performance Optimization
[content.performance]
enable_lazy_loading = true
enable_pagination = true
default_page_size = 20
max_page_size = 100
enable_content_compression = true
minify_html = false