220 lines
5.0 KiB
TOML
220 lines
5.0 KiB
TOML
![]() |
# 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
|