Support configurable landing and about pages
- Dominant language
- Scala
- Stars
- 314
- Forks
- 187
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 214
Description
### Feature Summary
The landing and about pages are currently hardcoded and can only be customized by modifying the frontend HTML, so users who want a different front page need to maintain their own code changes.
This change aims to make these pages configurable. Each page is defined by a configuration document made up of reusable blocks, allowing administrators to customize the content without modifying the application code. Users who only need static content can also provide custom HTML directly.
Discussion: #6726
### Proposed Solution or Design
Store the landing and about page configuration in site_settings, with default values defined in default.conf.
A page configuration is a JSON document holding an ordered list of typed blocks:
```
{
"schemaVersion": 1,
"blocks": [
{ "type": "content", "config": { "markdown": "# Texera Hub" } },
{ "type": "stats", "config": { "template": "Access {workflows} and {datasets}...", "counters": [...] } },
{ "type": "dataset-list", "config": { "title": "Top Loved Datasets", "source": "top-loved" } }
]
}
```
Each page configuration contains an ordered list of reusable blocks. Initial block types include:
- content: markdown or text content
- stats: live workflow and dataset counts
- workflow-list/dataset-list: configurable resource lists using existing APIs
- html: custom static HTML
The landing and about pages render these blocks in order, with a built-in default configuration that preserves the current layout.
Administrators can update the page configuration through the admin settings interface. The configuration is validated before saving, including its structure, supported block types, and size limits.
### Affected Area
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.