You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@superset.apache.org by "armanmshah (via GitHub)" <gi...@apache.org> on 2025/06/12 17:09:26 UTC

[D] Customizing the Welcome Page [superset]

GitHub user armanmshah created a discussion: Customizing the Welcome Page

I'm trying to customize the welcome page so it has some basic information for our use, but I also want to keep the current functionality of the welcome page. Is there a way to insert some html into the welcome page without having to fork the repo? If not, is this a feature that could be added?

Here is code of what I was trying to accomplish. I added it to the `superset_config.py` and was trying to import existing functions used in superset to be able to render the rest of the welcome page.

```class SupersetDashboardIndexView(IndexView):
  @expose("/test")
  def index(self):
    import json
    from superset.views.utils import (bootstrap_user_data)
    from superset.views.base import (common_bootstrap_payload)
    from superset import db
    from superset.utils import core
    from superset.views.core import (render_template)

    if not g.user or not get_user_id():
      return redirect("/login")

    payload = {
        "user": bootstrap_user_data(g.user, include_perms=True),
        "common": common_bootstrap_payload(),
    }

    welcome_page = render_template(
        "superset/spa.html",
        entry="spa",
        bootstrap_data=json.dumps(
            payload, default=core.pessimistic_json_iso_dttm_ser
        ),
    )

    print(welcome_page)

    html = f"""
    <!DOCTYPE html>
    <html>
      <head>
        <link rel="icon" type="image/png" href="/static/assets/images/favicon.png">
        <style>
          body {{
            font-family: Inter,Helvetica,Arial;
            -webkit-font-smoothing: antialiased;
            color: #333;
            font-size: 14px;
            line-height: 1.4;
            box-sizing: border-box;
          }}
          .navbar {{
            display: flex;
            align-items: center;
            background-color: #fff;
            border-bottom: 2px solid #F7F7F7;
            padding-left: 1rem;
          }}
          .navbar-brand {{
            display: inline-block;
            padding-top: .3125rem;
            padding-bottom: .3125rem;
            margin-right: 1rem;
            font-size: 1.25rem;
            line-height: inherit;
            white-space: nowrap;
          }}
          .navbar-brand img {{
            cursor: pointer;
            font-size: 18px;
            line-height: 19px;
            border: 0;
            box-sizing: border-box;
            display: block;
            height: 30px;
            object-fit: contain;
          }}
          .main-nav {{
            list-style-type: none;
            margin: 0;
            padding: 0;
            overflow: hidden;
            display: flex;
            align-items: center;
          }}
          .main-nav li a {{
            display: block;
            color: #333;
            text-align: center;
            padding: 14px 16px;
            text-decoration: none;
            border-bottom: 2px solid transparent;
          }}
          .main-nav li a {{
            display: block;
            color: #484848;
            text-align: center;
            padding: 14px 16px;
            text-decoration: none;
          }}
          .info-section {{
            color: darkgreen;
            width: 100%;
            padding: 20px;
            margin-top: 20px;
            background-color: #f9f9f9;
            font-size: 15px;
            line-height: 1.6;
          }}
          .info-section ul {{
            padding-left: 30px;
            list-style-position: inside;
          }}
          .info-section b {{
            font-size: 18px;
          }}
          .main-nav li a:hover {{
            background-color: #f2f2f2;
            border-bottom: 2px solid #1EA7C8;
          }}
        </style>
      </head>
      <body>
        <div class="navbar">
          <a class="navbar-brand" href="/superset/welcome/">
            <img src="/static/assets/images/superset-logo-horiz.png" alt="Superset">
          </a>
          <ul class="main-nav">
            <li><a href="/dashboard/list/">Dashboards</a></li>
            <li><a href="/chart/list/">Charts</a></li>
            <li><a href="/tablemodelview/list/">Datasets</a></li>
            <li><a href="/superset/sqllab/">SQL</a></li>
          </ul>
        </div>
        <div class="info-section">
          <ul>
            <b>What is this tool for?</b>
            <li>Data visualisation or Data Reporting by building charts and dashboards</li>
          </ul>
        </div>
        
        {welcome_page}
      </body>
    </html>
    """

    return html

FAB_INDEX_VIEW = f"{SupersetDashboardIndexView.__module__}.{SupersetDashboardIndexView.__name__}"```

GitHub link: https://github.com/apache/superset/discussions/33761

----
This is an automatically sent email for notifications@superset.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@superset.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [D] Customizing the Welcome Page [superset]

Posted by "dosubot[bot] (via GitHub)" <gi...@apache.org>.
GitHub user dosubot[bot] edited a comment on the discussion: Customizing the Welcome Page

<!-- Greeting -->
Hi @armanmshah! I'm [Dosu](https://go.dosu.dev/dosubot) and I’m helping the superset team.

<!-- Answer -->
Superset doesn't currently support injecting custom HTML directly into the welcome page via configuration or `superset_config.py`—the welcome page is rendered by a React app, and most of its content can't be changed from the backend or config alone. Your approach with a custom `IndexView` in `superset_config.py` won't work for modifying the actual welcome page content; it can only redirect or replace the page entirely, not insert HTML into the existing React-rendered content [reference](https://github.com/apache/superset/discussions/18571).

If you're on Superset 5.0.0 or later, you can inject HTML into the `<head>` of all pages (including the welcome page) by adding a `head_custom_extra.html` file, but this only affects the `<head>`, not the body content [reference](https://github.com/apache/superset/issues/31686).

For more advanced customization (like adding info sections or banners to the welcome page body), you'd need to fork the frontend or use the React extension points (`welcome.message`, `welcome.banner`, etc.)—but these require writing a Superset frontend plugin, not just Python config [reference](https://github.com/apache/superset/blob/e6af4ea126058052506e5437cbe90f9c5f2192d0/superset-frontend/src/pages/Home/index.tsx).

If you want this kind of HTML injection as a config feature, it would need to be proposed and implemented as a new feature.


<!-- Dosu Comment Footer -->
*To reply, just mention [@dosu](https://go.dosu.dev/dosubot?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=reply-with-mention&utm_term=apache%2Fsuperset).*

---

Docs are dead. Just use [Dosu](https://dosu.dev?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-tagline&utm_term=apache%2Fsuperset).

[![Leave Feedback](https://img.shields.io/badge/Leave%20Feedback-555555?style=flat)](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-feedback&utm_term=apache%2Fsuperset&message_id=2edb077b-3267-4f46-911d-d034864a04f1) [![Ask Dosu about superset](https://img.shields.io/badge/Ask%20Dosu%20about%20superset-2f7b3f?style=flat&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iODYiIGhlaWdodD0iODkiIHZpZXdCb3g9IjAgMCA4NiA4OSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTIzNiAxMi43OTI4TDE3Ljc1OTMgNi42ODE4OFY3Mi41NjY3TDUuMjkyMzYgODQuMDYxOFYxMi43OTI4WiIgZmlsbD0iI0I0QkI5MSIvPjxwYXRoIGQ9Ik0xOC4yNTc1IDczLjExOTZMNTkuMTMyOSA3Mi43NDhMNTEuNzAxMSA4Mi40MDk1TDI5LjAzMzggODYuMjkxTDYuMjM5NjIgODUuMTU1NEwxOC4yNTc1IDczLjExOTZaIiBmaWxsPSIjNzc4NTYxIi8%2BPHBhdGggZD0iTTE3LjQ5MTYgMy43MzYzM0wzLjU4NTU3IDEyLjcwOTlWODMuNTc5MkMzLjU4NTU3IDg0Ljc1NDIgNC45ODU2MyA4NS4zNjUyIDUuODQ3MDUg
 ODQuNTY2TDE5LjYyOTYgNzEuNzgwMSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjQyODQ0IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48bWFzayBpZD0iZG9zdS1kLWN1dG91dCIgZmlsbD0id2hpdGUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDAuNzA0IDAuNTE4MDY2SDE3LjA0MzlWNzYuMjIyMUg0MC43MDRINDIuNTgwNUg0Ny44MDEzQzY4LjcwNjQgNzYuMjIyMSA4NS42NTMzIDU5LjI3NTIgODUuNjUzMyAzOC4zNzAxQzg1LjY1MzMgMTcuNDY1IDY4LjcwNjMgMC41MTgwNjYgNDcuODAxMyAwLjUxODA2Nkg0Mi41ODA1SDQwLjcwNFoiLz48L21hc2s%2BPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MC43MDQgMC41MTgwNjZIMTcuMDQzOVY3Ni4yMjIxSDQwLjcwNEg0Mi41ODA1SDQ3LjgwMTNDNjguNzA2NCA3Ni4yMjIxIDg1LjY1MzMgNTkuMjc1MiA4NS42NTMzIDM4LjM3MDFDODUuNjUzMyAxNy40NjUgNjguNzA2MyAwLjUxODA2NiA0Ny44MDEzIDAuNTE4MDY2SDQyLjU4MDVINDAuNzA0WiIgZmlsbD0iI0YzRjZGMSIvPjxwYXRoIGQ9Ik0xNy4wNDM5IDAuNTE4MDY2Vi02LjU3OTE5SDkuOTQ2NjlWMC41MTgwNjZIMTcuMDQzOVpNMTcuMDQzOSA3Ni4yMjIxSDkuOTQ2NjlWODMuMzE5NEgxNy4wNDM5Vjc2LjIyMjFaTTE3LjA0MzkgNy42MTUzMkg0MC43MDRWLTYuNTc5MTlIMTcuMDQzOVY3LjYxNTMyWk0
 yNC4xNDEyIDc2LjIyMjFWMC41MTgwNjZIOS45NDY2OVY3Ni4yMjIxSDI0LjE0MTJaTTQwLjcwNCA2OS4xMjQ5SDE3LjA0MzlWODMuMzE5NEg0MC43MDRWNjkuMTI0OVpNNDIuNTgwNSA2OS4xMjQ5SDQwLjcwNFY4My4zMTk0SDQyLjU4MDVWNjkuMTI0OVpNNDcuODAxMyA2OS4xMjQ5SDQyLjU4MDVWODMuMzE5NEg0Ny44MDEzVjY5LjEyNDlaTTc4LjU1NiAzOC4zNzAxQzc4LjU1NiA1NS4zNTU1IDY0Ljc4NjcgNjkuMTI0OSA0Ny44MDEzIDY5LjEyNDlWODMuMzE5NEM3Mi42MjYxIDgzLjMxOTQgOTIuNzUwNSA2My4xOTQ5IDkyLjc1MDUgMzguMzcwMUg3OC41NTZaTTQ3LjgwMTMgNy42MTUzMkM2NC43ODY2IDcuNjE1MzIgNzguNTU2IDIxLjM4NDcgNzguNTU2IDM4LjM3MDFIOTIuNzUwNUM5Mi43NTA1IDEzLjU0NTMgNzIuNjI2IC02LjU3OTE5IDQ3LjgwMTMgLTYuNTc5MTlWNy42MTUzMlpNNDIuNTgwNSA3LjYxNTMySDQ3LjgwMTNWLTYuNTc5MTlINDIuNTgwNVY3LjYxNTMyWk00MC43MDQgNy42MTUzMkg0Mi41ODA1Vi02LjU3OTE5SDQwLjcwNFY3LjYxNTMyWiIgZmlsbD0iYmxhY2siIG1hc2s9InVybCgjZG9zdS1kLWN1dG91dCkiLz48cGF0aCBkPSJNNjguOTIxNSAzNi4wMTM1QzY4LjkyMTUgMzYuMDEzNSA2NS43MzY5IDQ5LjQ3MzggNTEuNDIzMSA0OS40NzM4QzM3LjEwOTMgNDkuNDczOCAzMi41Nzg3IDM3LjM1OTYgMzIuNTc4NyAzNi4wMTM1IiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjcuNjkxNjEi
 IHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0wLjM0ODYzMyA4NS40OTQ2QzAuMzQ4NjMzIDg1LjQ5NDYgMjkuNDg1NiA4NS44MzA5IDM0LjgwOSA4NS42OThDNDQuODMzNyA4NS40NDc3IDUxLjI4NzIgODQuNDAyIDU3LjUyNjkgNzguOTcyNEM2Mi44MTI5IDc0LjM3MjcgNzUuMTM0MiA1OS42ODM2IDc1LjEzNDIgNTkuNjgzNiIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjE2NDgyIi8%2BPC9zdmc%2B)](https://github.dosu.com/apache/superset?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-ask-repo&utm_term=apache%2Fsuperset) [![Share Dosu with your team](https://img.shields.io/badge/Share%20Dosu%20with%20your%20team-1f6feb?style=flat)](https://app.dosu.dev/signup?referrer=openSource&source=github-footer&utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-share-team&utm_term=apache%2Fsuperset)

GitHub link: https://github.com/apache/superset/discussions/33761#discussioncomment-13451346

----
This is an automatically sent email for notifications@superset.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@superset.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [D] Customizing the Welcome Page [superset]

Posted by "dosubot[bot] (via GitHub)" <gi...@apache.org>.
GitHub user dosubot[bot] added a comment to the discussion: Customizing the Welcome Page

<!-- Greeting -->
Hi @armanmshah! I'm [Dosu](https://go.dosu.dev/dosubot) and I’m helping the superset team.

<!-- Answer -->
Superset doesn't currently support injecting custom HTML directly into the welcome page via configuration or `superset_config.py`—the welcome page is rendered by a React app, and most of its content can't be changed from the backend or config alone. Your approach with a custom `IndexView` in `superset_config.py` won't work for modifying the actual welcome page content; it can only redirect or replace the page entirely, not insert HTML into the existing React-rendered content [reference](https://github.com/apache/superset/discussions/18571).

If you're on Superset 5.0.0 or later, you can inject HTML into the `<head>` of all pages (including the welcome page) by adding a `head_custom_extra.html` file, but this only affects the `<head>`, not the body content [reference](https://github.com/apache/superset/issues/31686).

For more advanced customization (like adding info sections or banners to the welcome page body), you'd need to fork the frontend or use the React extension points (`welcome.message`, `welcome.banner`, etc.)—but these require writing a Superset frontend plugin, not just Python config [reference](https://github.com/apache/superset/blob/e6af4ea126058052506e5437cbe90f9c5f2192d0/superset-frontend/src/pages/Home/index.tsx).

If you want this kind of HTML injection as a config feature, it would need to be proposed and implemented as a new feature.


<!-- Dosu Comment Footer -->
*To reply, just mention [@dosu](https://go.dosu.dev/dosubot).*

---
<sup>How did I do? [Good](https://app.dosu.dev/response-feedback/2edb077b-3267-4f46-911d-d034864a04f1?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/2edb077b-3267-4f46-911d-d034864a04f1?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/2edb077b-3267-4f46-911d-d034864a04f1?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/2edb077b-3267-4f46-911d-d034864a04f1?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/2edb077b-3267-4f46-911d-d034864a04f1?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/2edb077b-3267-4f46-911d-d034864a04f1?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/2edb077b-3267-4f46-911d-d034864a04f1?feedback_type=other)</sup>&nbsp;&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Sh
 are on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/apache/superset/discussions/33761)

GitHub link: https://github.com/apache/superset/discussions/33761#discussioncomment-13451346

----
This is an automatically sent email for notifications@superset.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@superset.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org