secubox-openwrt/package/secubox/secubox-app-metablogizer/files/usr/share/metablogizer/nfo-template.nfo
CyberMind-FR e17c73e343 feat(nfo): Add Module Manifest system with batch generation
Introduce flat-file UCI-style NFO manifest format for Streamlit apps
and MetaBlog sites. Enables AI context integration, search indexing,
and mesh publishing metadata.

New features:
- NFO parser library with parse/validate/update/export functions
- NFO validator with type-specific schema validation (streamlit/metablog)
- Batch generation: slforge nfo init-all, metablogizerctl nfo init-all
- RPCD methods: nfo_read, nfo_write, nfo_validate
- Reusable LuCI NFO viewer component with collapsible sections
- LuCI editor modal in Streamlit Forge overview
- Hub generator enhanced with NFO metadata (descriptions, capabilities)
- Metacatalog search with --category and --capability filters

New files:
- nfo-parser.sh, nfo-validator.sh (shell libraries)
- nfo-viewer.js (LuCI component)
- NFO-SPEC.md (specification)
- install.sh (universal NFO-based installer)
- nfo-template.nfo (templates for streamlit/metablog)

Deployed and tested: 136 NFO files generated (107 MetaBlogs, 29 Streamlit)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-14 08:51:09 +01:00

179 lines
11 KiB
Plaintext

# ═══════════════════════════════════════════════════════════════════════════════
# ███╗ ███╗███████╗████████╗ █████╗ ██████╗ ██╗ ██████╗ ██████╗
# ████╗ ████║██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██║ ██╔═══██╗██╔════╝
# ██╔████╔██║█████╗ ██║ ███████║██████╔╝██║ ██║ ██║██║ ███╗
# ██║╚██╔╝██║██╔══╝ ██║ ██╔══██║██╔══██╗██║ ██║ ██║██║ ██║
# ██║ ╚═╝ ██║███████╗ ██║ ██║ ██║██████╔╝███████╗╚██████╔╝╚██████╔╝
# ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝
# ─────────────────────────────────────────────────────────────────────────────
# {{APP_NAME}} v{{VERSION}}
# {{SHORT_DESC}}
# ═══════════════════════════════════════════════════════════════════════════════
#
# SecuBox Module Manifest - Flat-File UCI Format
# Generated: {{DATE}}
# Type: metablog
#
# ═══════════════════════════════════════════════════════════════════════════════
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ IDENTITY │
# └─────────────────────────────────────────────────────────────────────────────┘
[identity]
id={{APP_ID}}
name={{APP_NAME}}
version=1.0.0
author=CyberMind
maintainer=contact@cybermind.fr
created={{DATE}}
updated={{DATE}}
license=MIT
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ DESCRIPTION │
# └─────────────────────────────────────────────────────────────────────────────┘
[description]
short={{SHORT_DESC}}
long=<<EOF
Detailed description of this MetaBlog site.
Include information about content, audience, and purpose.
EOF
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ CLASSIFICATION │
# └─────────────────────────────────────────────────────────────────────────────┘
[tags]
category=blog
subcategory=general
keywords=blog,content,articles
audience=general
maturity=stable
language=fr
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ RUNTIME CONFIGURATION │
# └─────────────────────────────────────────────────────────────────────────────┘
[runtime]
type=metablog
framework=metablogizer
engine=static
generator=hugo
theme=cybermind
build_command=
watch_mode=0
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ CONTENT SETTINGS │
# └─────────────────────────────────────────────────────────────────────────────┘
[content]
# Content structure
posts_dir=content/posts
pages_dir=content/pages
media_dir=content/media
data_dir=data
# Content types supported
content_types=markdown,html,json
# Taxonomies
taxonomies=tags,categories,series
# Pagination
posts_per_page=10
# Feed settings
rss_enabled=1
rss_limit=20
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ EXPOSURE SETTINGS │
# └─────────────────────────────────────────────────────────────────────────────┘
[exposure]
auto_expose=0
domain_prefix={{APP_ID}}
ssl=1
auth_required=0
auth_method=basic
waf_enabled=1
cache_enabled=1
cache_ttl=3600
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ REFERENCES │
# └─────────────────────────────────────────────────────────────────────────────┘
[references]
homepage=
documentation=
source=
issues=
social_twitter=
social_mastodon=
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ CUSTOM SETTINGS │
# └─────────────────────────────────────────────────────────────────────────────┘
[settings]
theme=dark
locale=fr
analytics_enabled=0
comments_enabled=0
search_enabled=1
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ GENERATIVE AI DYNAMICS │
# └─────────────────────────────────────────────────────────────────────────────┘
[dynamics]
# Context for AI assistants generating content
prompt_context=<<EOF
This is a MetaBlog site focused on [topic].
Content style: informative, professional.
Target audience: [describe audience].
Tone: [formal/casual/technical].
EOF
# Content generation capabilities
capabilities=article-generation,summarization,translation
# Content topics/themes
topics=
# Writing style guidelines
style_guide=<<EOF
- Use clear, concise language
- Include code examples where relevant
- Add images and diagrams
- Structure with headers
EOF
# Auto-generation rules
auto_generate=0
generation_schedule=
generation_sources=
# Integration with external content
feed_sources=
api_sources=
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ MESH CATALOG │
# └─────────────────────────────────────────────────────────────────────────────┘
[mesh]
publish=0
visibility=private
syndicate=0
federation=local
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ MEDIA & BRANDING │
# └─────────────────────────────────────────────────────────────────────────────┘
[media]
favicon=
logo=
og_image=
screenshots=
banner=
# ═══════════════════════════════════════════════════════════════════════════════
# END OF MANIFEST
# ═══════════════════════════════════════════════════════════════════════════════