apache / apache/texera

Support configurable landing and about pages

Open
#7,528 0 comments 0 reactions 1 assignee Claimed by @xuang7 View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.