From b802556b5f809fc55bc6f23096ae7636b97a649a Mon Sep 17 00:00:00 2001 From: Iisakki Rotko Date: Mon, 25 Mar 2024 14:44:40 +0100 Subject: [PATCH] docs: improve SEO by adding metadata to markdown-based pages --- solara/website/pages/documentation/advanced/__init__.py | 5 +++-- .../documentation/advanced/content/10-howto/00-overview.md | 5 +++++ .../advanced/content/10-howto/10-multipage.md | 5 +++++ .../documentation/advanced/content/10-howto/20-layout.md | 5 +++++ .../documentation/advanced/content/10-howto/30-testing.md | 5 +++++ .../advanced/content/10-howto/31-debugging.md | 5 ++++- .../documentation/advanced/content/10-howto/40-embed.md | 6 ++++++ .../advanced/content/10-howto/50-ipywidget_libraries.md | 4 ++++ .../advanced/content/20-understanding/00-introduction.md | 6 ++++++ .../advanced/content/20-understanding/05-ipywidgets.md | 5 +++++ .../advanced/content/20-understanding/06-ipyvuetify.md | 4 ++++ .../advanced/content/20-understanding/10-reacton.md | 4 ++++ .../advanced/content/20-understanding/12-reacton-basics.md | 4 ++++ .../advanced/content/20-understanding/15-anatomy.md | 4 ++++ .../advanced/content/20-understanding/17-rules-of-hooks.md | 4 ++++ .../advanced/content/20-understanding/18-containers.md | 6 ++++++ .../advanced/content/20-understanding/20-solara.md | 5 +++++ .../advanced/content/20-understanding/40-routing.md | 4 ++++ .../advanced/content/20-understanding/50-solara-server.md | 5 +++++ .../advanced/content/20-understanding/60-voila.md | 5 +++++ .../advanced/content/30-enterprise/10-oauth.md | 4 ++++ .../advanced/content/40-development/01-contribute.md | 4 ++++ .../advanced/content/40-development/10-setup.md | 4 ++++ solara/website/pages/documentation/faq/__init__.py | 3 ++- solara/website/pages/documentation/faq/content/99-faq.md | 5 ++++- .../pages/documentation/getting_started/__init__.py | 5 +++-- .../documentation/getting_started/content/00-quickstart.md | 5 +++++ .../getting_started/content/01-introduction.md | 4 ++++ .../documentation/getting_started/content/02-installing.md | 4 ++++ .../getting_started/content/04-tutorials/00-overview.md | 5 +++++ .../getting_started/content/04-tutorials/20-web-app.md | 5 +++++ .../getting_started/content/04-tutorials/30-ipywidgets.md | 4 ++++ .../getting_started/content/04-tutorials/40-streamlit.md | 5 +++++ .../getting_started/content/04-tutorials/50-dash.md | 4 ++++ .../getting_started/content/05-fundamentals/00-overview.md | 4 ++++ .../content/05-fundamentals/10-components.md | 5 +++++ .../content/05-fundamentals/50-state-management.md | 5 +++++ .../content/06-reference/40-static_files.md | 4 ++++ .../getting_started/content/06-reference/41-asset-files.md | 4 ++++ .../content/06-reference/60-static-site-generation.md | 4 ++++ .../getting_started/content/06-reference/70-search.md | 4 ++++ .../getting_started/content/06-reference/80-reloading.md | 4 ++++ .../content/06-reference/90-notebook-support.md | 5 ++++- .../getting_started/content/06-reference/95-caching.md | 5 +++++ .../getting_started/content/07-deploying/00-overview.md | 4 ++++ .../getting_started/content/07-deploying/10-self-hosted.md | 4 ++++ .../content/07-deploying/20-cloud-hosted.md | 4 ++++ .../getting_started/content/08-lab/00-what-is-lab.md | 4 ++++ .../getting_started/content/80-what-is-lab.md | 7 +++++++ .../getting_started/content/90-troubleshoot.md | 4 ++++ 50 files changed, 220 insertions(+), 8 deletions(-) create mode 100644 solara/website/pages/documentation/getting_started/content/80-what-is-lab.md diff --git a/solara/website/pages/documentation/advanced/__init__.py b/solara/website/pages/documentation/advanced/__init__.py index 64e457815..ad2d74b70 100644 --- a/solara/website/pages/documentation/advanced/__init__.py +++ b/solara/website/pages/documentation/advanced/__init__.py @@ -2,17 +2,18 @@ import solara from solara.autorouting import generate_routes_directory +from solara.website.components.markdown import MarkdownWithMetadata title = "Advanced" HERE = Path(__file__) # if we didn't put the content in the subdirectory, but pointed to the current file # we would include the current file recursively, causing an infinite loop -routes = generate_routes_directory(HERE.parent / "content") +routes = generate_routes_directory(HERE.parent / "content", MarkdownWithMetadata) @solara.component def Page(route_external=None): - solara.Markdown(Path(HERE.parent / "content" / "10-howto" / "00-overview.md").read_text()) + MarkdownWithMetadata(Path(HERE.parent / "content" / "10-howto" / "00-overview.md").read_text()) with solara.Row(justify="center", style={"flex-wrap": "wrap", "align-items": "start"}): for child in route_external.children: diff --git a/solara/website/pages/documentation/advanced/content/10-howto/00-overview.md b/solara/website/pages/documentation/advanced/content/10-howto/00-overview.md index 0a56a6792..c162a51a9 100644 --- a/solara/website/pages/documentation/advanced/content/10-howto/00-overview.md +++ b/solara/website/pages/documentation/advanced/content/10-howto/00-overview.md @@ -1 +1,6 @@ +--- +title: overview of how-to articles +description: The how-tos are meant as deeper dives into specific topics from various perspectives +--- + The how-tos are meant as deeper dives into specific topics. Although we try to write each how-to as a standalone document, some parts of a how-to may build on top of a previous one. diff --git a/solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md b/solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md index 0fd498057..747163c95 100644 --- a/solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md +++ b/solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md @@ -1,3 +1,8 @@ +--- +title: Building multi-page apps in Solara +description: The simplest way to create a multi-page app is to create a directory with multiple scripts. +--- + # Multi-page support In the [Web App tutorial](/documentation/getting_started/tutorials/web-app), we created an application consisting of a single page. Web applications generally have multiple pages, and Solara supports this as well. diff --git a/solara/website/pages/documentation/advanced/content/10-howto/20-layout.md b/solara/website/pages/documentation/advanced/content/10-howto/20-layout.md index 96770586f..1d425b23c 100644 --- a/solara/website/pages/documentation/advanced/content/10-howto/20-layout.md +++ b/solara/website/pages/documentation/advanced/content/10-howto/20-layout.md @@ -1,3 +1,8 @@ +--- +title: Making different layouts in Solara +description: Solara comes with a layout system ideal for data apps. Learn how to use them in this short guide. +--- + # Layout Solara comes with a layout system ideal for data apps. diff --git a/solara/website/pages/documentation/advanced/content/10-howto/30-testing.md b/solara/website/pages/documentation/advanced/content/10-howto/30-testing.md index 13c1d0aed..ae38b7f07 100644 --- a/solara/website/pages/documentation/advanced/content/10-howto/30-testing.md +++ b/solara/website/pages/documentation/advanced/content/10-howto/30-testing.md @@ -1,3 +1,8 @@ +--- +title: Testing your Solara application, both front and back end +description: Using solara you can test both the front and back end functionalities of your application. +--- + # Testing with Solara # Testing Application Logic diff --git a/solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md b/solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md index 9fb9f7cc3..2bb3912c4 100644 --- a/solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md +++ b/solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md @@ -1,4 +1,7 @@ - +--- +title: Debugging solara applications +description: You can use the python debugger to debug your Solara app. +--- # Debugging ## PDB diff --git a/solara/website/pages/documentation/advanced/content/10-howto/40-embed.md b/solara/website/pages/documentation/advanced/content/10-howto/40-embed.md index 59f20e3fb..e6051f1e1 100644 --- a/solara/website/pages/documentation/advanced/content/10-howto/40-embed.md +++ b/solara/website/pages/documentation/advanced/content/10-howto/40-embed.md @@ -1,3 +1,9 @@ +--- +title: Embedding Solara applications into existing websites +description: Solara can be embedded into existing websites. Although it is technically possible to embed a Solara app into an existing webpage, + we currently support embedding primarily via iframes. +--- + # Embedding in existing websites Solara can be embedded into existing websites. Although it is technically possible to embed a Solara app into an existing webpage, we currently support embedding primarily via iframes. diff --git a/solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md b/solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md index 9f82f5d24..f57d9855c 100644 --- a/solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md +++ b/solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md @@ -1,3 +1,7 @@ +--- +title: Using various ipywidgets libraries within a Solara application +description: Solara can work with virtually any ipywidget library, and enables powerful interactivity with libraries like ipyleaflet, ipydatagrid, and bqplot +--- # How can I use ipywidget library X? Solara can work with any ipywidget library, such as [ipyleaflet](https://github.com/jupyter-widgets/ipyleaflet), [ipydatagrid](https://github.com/bloomberg/ipydatagrid) or [bqplot](https://github.com/bqplot/bqplot). diff --git a/solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md b/solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md index 65d3e1719..5e741c504 100644 --- a/solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md +++ b/solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md @@ -1,3 +1,9 @@ +--- +title: Understanding Solara's functionality +description: Solara builds on existing technologies. If you are new to Solara or some of the underlying technologies, you may feel lost at times. + These 'understanding' guides are meant to help you understand topics at a deeper level and how they connect to Solara. +--- + # Introduction Solara builds on existing technologies. If you are new to Solara or some of the underlying technologies, you may feel lost at times. diff --git a/solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md b/solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md index f41901358..6e09da87e 100644 --- a/solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md +++ b/solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md @@ -1,3 +1,8 @@ +--- +title: Understanding how ipywidgets work together with Solara +description: Solara's primarily standalone app approach differs from the ipywidgets one. This article dives deeper into the different approaches and adapting to using + ipywidgets within Solara. +--- # IPywidgets * [Documentation](https://ipywidgets.readthedocs.io/en/stable/) diff --git a/solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md b/solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md index f37f4f608..25d528d51 100644 --- a/solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md +++ b/solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md @@ -1,3 +1,7 @@ +--- +title: Using ipyvuetify widgets with Solara +description: Ipyvuetify is an ipywidgets based library that wraps the Vuetify javascript framework for use with python widgets. Learn how to use these to build apps with Solara. +--- # ipyvuetify * [Documentation](https://ipyvuetify.readthedocs.io/) diff --git a/solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md b/solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md index 18c830a93..6f42c6bca 100644 --- a/solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md +++ b/solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md @@ -1,3 +1,7 @@ +--- +title: Understanding how Solara builds on Reacton +description: Solara adapts the React way of using components declaratively to build UIs and brings it to Python. +--- # Reacton * [Documentation](https://reacton.solara.dev/) diff --git a/solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md b/solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md index 0de513ffe..a1c84be45 100644 --- a/solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md +++ b/solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md @@ -1,3 +1,7 @@ +--- +title: Undestanding the basics of Reacton +description: Using your favorite component, we try to understand a bit better how it works to improve your understanding of Reacton and thus how to use Solara. +--- # Reacton basic understanding diff --git a/solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md b/solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md index cdb34ae9e..c7766fe47 100644 --- a/solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md +++ b/solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md @@ -1,3 +1,7 @@ +--- +title: The anatomy of Solara's functionality +description: Dive deep into how Solara uses the technologies it builds on. +--- # Anatomy For communication, it is useful to speak the same language and use the same idiom. diff --git a/solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md b/solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md index f216504f2..1081640a4 100644 --- a/solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md +++ b/solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md @@ -1,3 +1,7 @@ +--- +title: The rules of hooks in Solara +description: Learn the rules that govern the usage of hooks in your Solara application. +---- # Rules of hooks For now, we refer to the [ReactJS documentation](https://reactjs.org/docs/hooks-rules.html). diff --git a/solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md b/solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md index 83b0b4112..247270ac6 100644 --- a/solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md +++ b/solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md @@ -1,3 +1,9 @@ +--- +title: Using Solara with containers to build complex UIs +description: Solara allows for using python with statements to populate your UIs in a structured manner. This makes it easy to compose different components to build cohesive + wholes. +--- + # Laying out components with containers ## Introduction diff --git a/solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md b/solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md index 66e10e5c7..77415f0c1 100644 --- a/solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md +++ b/solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md @@ -1,3 +1,8 @@ +--- +title: Understanding different parts of Solara +description: Solara is made of two main components, the bulk of the Solara package with UI elements that can be used together with Jupyter, and Solara server, which + allows for these UI elements to be used in standalone apps and dashboards +--- # Solara Solara combines [ipywidgets](./ipywidgets), [reacton](./reacton) and puts it into a opinionated framework to make web apps with a focus on data (data apps for short). diff --git a/solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md b/solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md index 5d6db05e4..9ba30964b 100644 --- a/solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md +++ b/solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md @@ -1,3 +1,7 @@ +--- +title: Understanding routing in multi-page solara apps +description: Dive into solara's routing, which provides a powerful way to compose multiple pages or dashboards into an integrated app. +--- # Routing Routing takes care of linking a web address (more specifically the [pathname](https://developer.mozilla.org/en-US/docs/Web/API/Location), e.g. "/docs/basics/solara") to a state of the UI, diff --git a/solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md b/solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md index 2ee418db9..f0dec5988 100644 --- a/solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md +++ b/solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md @@ -1,3 +1,8 @@ +--- +title: Understanding the way Solara server works +description: The solara server enables running ipywidgets based applications as standalone dashboards and apps, allowing multiple "Virtual kernels" to share + the same process for better performance and scalability. +--- # Solara server The solara server enables running ipywidgets based applications without a real Jupyter kernel, allowing multiple "Virtual kernels" to share the same process for better performance and scalability. diff --git a/solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md b/solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md index e7e771d6f..29e21b321 100644 --- a/solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md +++ b/solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md @@ -1,3 +1,8 @@ +--- +title: Working together with Voila +description: Voilà, together with `voila-vuetify` is an alternative to Solara server. The most significant difference is that Voilà will start one kernel/process + per page request, while Solara server is more scalable. +--- # Voilà [Voilà](https://voila.readthedocs.io/) allows you to convert a Jupyter Notebook into an interactive dashboard that allows you to share your work with others. diff --git a/solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md b/solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md index e730a6294..f2f24731a 100644 --- a/solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md +++ b/solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md @@ -1,3 +1,7 @@ +--- +title: Using OAuth in your Solara app +description: Open Authorization can be readily integrated into your Solara applications via the Solara-Enterprise package. +--- # OAuth: authentication and authorization support ## What is OAuth diff --git a/solara/website/pages/documentation/advanced/content/40-development/01-contribute.md b/solara/website/pages/documentation/advanced/content/40-development/01-contribute.md index 5672321b2..622d1797e 100644 --- a/solara/website/pages/documentation/advanced/content/40-development/01-contribute.md +++ b/solara/website/pages/documentation/advanced/content/40-development/01-contribute.md @@ -1,3 +1,7 @@ +--- +title: Contributing to Solara +description: You do not need to be a developer to contribute to Solara. We welcome all contributions, bug reports, documentation improvements and code contributions. +--- # Contributing to Solara You do not need to be a developer to contribute to Solara. We welcome all contributions, bug reports, documentation improvements and code contributions. diff --git a/solara/website/pages/documentation/advanced/content/40-development/10-setup.md b/solara/website/pages/documentation/advanced/content/40-development/10-setup.md index a2442289c..ab94ccce8 100644 --- a/solara/website/pages/documentation/advanced/content/40-development/10-setup.md +++ b/solara/website/pages/documentation/advanced/content/40-development/10-setup.md @@ -1,3 +1,7 @@ +--- +title: Development setup for Solara +description: Learn how to set up your installation for building on the Solara framework. +--- # Development See also [the contributing guide](/documentation/advanced/development/contribute) for more information on how to contribute to Solara. diff --git a/solara/website/pages/documentation/faq/__init__.py b/solara/website/pages/documentation/faq/__init__.py index 6e3c18b41..e7f621d83 100644 --- a/solara/website/pages/documentation/faq/__init__.py +++ b/solara/website/pages/documentation/faq/__init__.py @@ -1,6 +1,7 @@ from pathlib import Path import solara +from solara.website.components.markdown import MarkdownWithMetadata title = "FAQ" HERE = Path(__file__) @@ -8,4 +9,4 @@ @solara.component def Page(route_external=None): - solara.Markdown(Path(HERE.parent / "content" / "99-faq.md").read_text()) + MarkdownWithMetadata(Path(HERE.parent / "content" / "99-faq.md").read_text()) diff --git a/solara/website/pages/documentation/faq/content/99-faq.md b/solara/website/pages/documentation/faq/content/99-faq.md index a9b98a041..3fdc16cb8 100644 --- a/solara/website/pages/documentation/faq/content/99-faq.md +++ b/solara/website/pages/documentation/faq/content/99-faq.md @@ -1,4 +1,7 @@ - +--- +title: FAQ about Solara +description: Answers to some common questions about using Solara, and building your app using the framework +--- # FAQ ## I am not interested in the server, I'm happy with Jupyter/Voila, what's in it for me? diff --git a/solara/website/pages/documentation/getting_started/__init__.py b/solara/website/pages/documentation/getting_started/__init__.py index 736e56d6a..4ac007ee4 100644 --- a/solara/website/pages/documentation/getting_started/__init__.py +++ b/solara/website/pages/documentation/getting_started/__init__.py @@ -2,14 +2,15 @@ import solara from solara.autorouting import generate_routes_directory +from solara.website.components.markdown import MarkdownWithMetadata title = "Getting Started" HERE = Path(__file__) # if we didn't put the content in the subdirectory, but pointed to the current file # we would include the current file recursively, causing an infinite loop -routes = generate_routes_directory(HERE.parent / "content") +routes = generate_routes_directory(HERE.parent / "content", MarkdownWithMetadata) @solara.component def Page(route_external=None): - solara.Markdown(Path(HERE.parent / "content" / "01-introduction.md").read_text()) + MarkdownWithMetadata(Path(HERE.parent / "content" / "01-introduction.md").read_text()) diff --git a/solara/website/pages/documentation/getting_started/content/00-quickstart.md b/solara/website/pages/documentation/getting_started/content/00-quickstart.md index 7c52b7d6c..aea894624 100644 --- a/solara/website/pages/documentation/getting_started/content/00-quickstart.md +++ b/solara/website/pages/documentation/getting_started/content/00-quickstart.md @@ -1,3 +1,8 @@ +--- +title: Solara Quickstart +description: Get started with building web- and data-apps in pure python with Solara +--- + # Quickstart This 1-minute quickstart will get you to: diff --git a/solara/website/pages/documentation/getting_started/content/01-introduction.md b/solara/website/pages/documentation/getting_started/content/01-introduction.md index f8a218554..c5f47e262 100644 --- a/solara/website/pages/documentation/getting_started/content/01-introduction.md +++ b/solara/website/pages/documentation/getting_started/content/01-introduction.md @@ -1,3 +1,7 @@ +--- +title: A quick introduction to Solara +description: Solara is an Open Source library that lets you use and build data-focused web apps (data apps) using reusable UI components. Here you'll learn the basics! +--- # Introduction diff --git a/solara/website/pages/documentation/getting_started/content/02-installing.md b/solara/website/pages/documentation/getting_started/content/02-installing.md index 074e26f5b..45e17eb55 100644 --- a/solara/website/pages/documentation/getting_started/content/02-installing.md +++ b/solara/website/pages/documentation/getting_started/content/02-installing.md @@ -1,3 +1,7 @@ +--- +title: Installing Solara +description: Installation should be as easy as running pip install solara. More options are available. +--- # Installation ## Create a virtual environment diff --git a/solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md b/solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md index fb9032c67..b213c08ae 100644 --- a/solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +++ b/solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md @@ -1,3 +1,8 @@ +--- +title: Solara Tutorials +description: A collection of tutorials for those learning to use Solara, each geared towards a users coming from particular backgrounds, such as data science, or + users coming from other frameworks like Streamlit +--- # Tutorials Instead of having one tutorial, we have tutorials for different audiences. diff --git a/solara/website/pages/documentation/getting_started/content/04-tutorials/20-web-app.md b/solara/website/pages/documentation/getting_started/content/04-tutorials/20-web-app.md index 6788402ec..1e84cfc59 100644 --- a/solara/website/pages/documentation/getting_started/content/04-tutorials/20-web-app.md +++ b/solara/website/pages/documentation/getting_started/content/04-tutorials/20-web-app.md @@ -1,3 +1,8 @@ +--- +title: Tutorial - Building web apps in python using Solara +description: In this tutorial, you will learn how to use Solara to create a tiny web app using only Python. You can run these apps using either Solara server, + Jupyter lab / notebook, or whatever server infrastructure you prefer. +--- # Tutorial: Web app In this tutorial, you will learn how to use Solara to create a tiny web app using only Python. diff --git a/solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md b/solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md index 37751baa7..a9ed8db0d 100644 --- a/solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md +++ b/solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md @@ -1,3 +1,7 @@ +--- +title: Tutorial - Building ipywidgets based apps +description: Ipywidgets can be used together with Solara to build and quickly get to users your data apps or dashboards. +--- # Tutorial: IPywidgets If you are already using [ipywidgets](/documentation/advanced/understanding/ipywidgets) in the notebook, possibly using [Voila](/documentation/advanced/understanding/voila), you might be pleased to know that you diff --git a/solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md b/solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md index 82b75fba8..1f4bf7826 100644 --- a/solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md +++ b/solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md @@ -1,3 +1,8 @@ +--- +title: Using Solara as a more scalable alternative to Streamlit +description: If you are coming from Streamlit, it should be simple to adapt to using Solara, and take advantage of partial re-execution, state + management, and reusable components. +--- # Tutorial: Streamlit If you are coming from [Streamlit](https://streamlit.io/) you may be happy to know Solara does not re-execute your whole script. We execute components (starting with the `Page` component), and only need to re-execute what needs to. diff --git a/solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md b/solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md index 2fb55a588..aa172734f 100644 --- a/solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md +++ b/solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md @@ -1,3 +1,7 @@ +--- +title: Using Solara as an alternative to Dash +description: If you are familiar with Dash, Solara should be easy to adapt to. In Solara the state is managed and stored on the server, and components are declaratively reusable +--- # Tutorial: Dash users Dash is quite different from Solara. In Dash, state lives in your browser, and via callbacks your app will change from 1 state to another. In Solara, the state lives on the server, and also state transitions happen at the server. diff --git a/solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md b/solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md index ff2da10d1..b0d19e130 100644 --- a/solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md +++ b/solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md @@ -1,3 +1,7 @@ +--- +title: Fundamentals of Solara +description: These articles dive deeper into the fundamental aspects of Soalra, like using components, hooks, and managing state. +--- # Fundamentals If you want to dive deeper into Solara, this section is for you. We will cover the following topics: diff --git a/solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md b/solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md index f1b8f24ee..7e4668df6 100644 --- a/solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md +++ b/solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md @@ -1,3 +1,8 @@ +--- +title: Introduction to Solara components +description: In Solara, components are the building blocks of your web application. They allow you to create modular, reusable, and maintainable user interface elements + that can be combined to create a complete and interactive application +--- # Introduction to Components diff --git a/solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md b/solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md index ae5766d7b..0831e9a9d 100644 --- a/solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md +++ b/solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md @@ -1,3 +1,8 @@ +--- +title: Introduction to state management in Solara +description: State management is a crucial aspect of building data-focused web applications with Solara. By effectively managing state, you can create interactive + and responsive applications that react to changes in data and user input. +--- # Introduction State management is a crucial aspect of building data-focused web applications with Solara. By effectively managing state, you can create interactive and responsive applications that react to changes in data and user input. In Solara, there are two primary ways to define state: global application state using [`solara.reactive`](/documentation/api/utilities/reactive) and local component state using [`solara.use_state`](/documentation/api/hooks/use_state) or [`solara.use_reactive`](/documentation/api/hooks/use_reactive). This article will discuss these two approaches and provide examples of how to use them in your Solara applications. diff --git a/solara/website/pages/documentation/getting_started/content/06-reference/40-static_files.md b/solara/website/pages/documentation/getting_started/content/06-reference/40-static_files.md index e9010b246..bbf0fc9c4 100644 --- a/solara/website/pages/documentation/getting_started/content/06-reference/40-static_files.md +++ b/solara/website/pages/documentation/getting_started/content/06-reference/40-static_files.md @@ -1,3 +1,7 @@ +--- +title: Using static files and resources in your Solara application +description: When using Solara, you can host static files, like images, which will then be available at /static/public, in the ../public folder. +--- # Static files Files located on your local filesystem at the `../public` directory will be served by the Solara server at `/static/public`. A typical directory layout looks like this: diff --git a/solara/website/pages/documentation/getting_started/content/06-reference/41-asset-files.md b/solara/website/pages/documentation/getting_started/content/06-reference/41-asset-files.md index 27de66f67..16028635f 100644 --- a/solara/website/pages/documentation/getting_started/content/06-reference/41-asset-files.md +++ b/solara/website/pages/documentation/getting_started/content/06-reference/41-asset-files.md @@ -1,3 +1,7 @@ +--- +title: Incorporating your assets, styles, and logos into your app +description: Solara by default looks for overrides of certain style and asset files in the assets folder. You can use these to incorporate your branding into your dashboard or app +--- # Assets files Asset files are special files with are loaded by Solara-server and thus have a special meaning, and come with defaults. Current supported assets files are: diff --git a/solara/website/pages/documentation/getting_started/content/06-reference/60-static-site-generation.md b/solara/website/pages/documentation/getting_started/content/06-reference/60-static-site-generation.md index 78e2c473e..b424a8fe8 100644 --- a/solara/website/pages/documentation/getting_started/content/06-reference/60-static-site-generation.md +++ b/solara/website/pages/documentation/getting_started/content/06-reference/60-static-site-generation.md @@ -1,3 +1,7 @@ +--- +title: Generating a static site version of your app or dashboard +description: Solara's static site generation (SSG) feature allows you to pre-render HTML for your app or dashboard, improving the user experience by providing quick page loads +--- ## Static Site Generation ## Introduction Solara's static site generation (SSG) feature allows you to pre-render HTML for your website, improving the user experience by providing quick page loads. When a user requests a page, the pre-rendered HTML is served directly to the user. After the page is displayed, the Solara server will connect and take over rendering to make the page interactive. diff --git a/solara/website/pages/documentation/getting_started/content/06-reference/70-search.md b/solara/website/pages/documentation/getting_started/content/06-reference/70-search.md index 08ef850d9..275327e88 100644 --- a/solara/website/pages/documentation/getting_started/content/06-reference/70-search.md +++ b/solara/website/pages/documentation/getting_started/content/06-reference/70-search.md @@ -1,3 +1,7 @@ +--- +title: Incorporating search into your Solara application +description: If you are using static site generation (SSG) in your Solara application, you can make use of our search feature for it too! +--- # Search Solara can provide search, if [SSG](/documentation/getting_started/reference/static-site-generation) is enabled. This allows you to add a search box to you website, which performs a full-text search to provide quick access to pages. The solara website itself uses the diff --git a/solara/website/pages/documentation/getting_started/content/06-reference/80-reloading.md b/solara/website/pages/documentation/getting_started/content/06-reference/80-reloading.md index e387b7c0a..76633fa7f 100644 --- a/solara/website/pages/documentation/getting_started/content/06-reference/80-reloading.md +++ b/solara/website/pages/documentation/getting_started/content/06-reference/80-reloading.md @@ -1,3 +1,7 @@ +--- +title: Automatic reloading of source files when developing with Solara +description: Solara automatically detects changes in certain source file types, and hot reloads your application when you save them. +--- # Reloading ## Reloading of Python files diff --git a/solara/website/pages/documentation/getting_started/content/06-reference/90-notebook-support.md b/solara/website/pages/documentation/getting_started/content/06-reference/90-notebook-support.md index 1f5f5fe39..50d599c0e 100644 --- a/solara/website/pages/documentation/getting_started/content/06-reference/90-notebook-support.md +++ b/solara/website/pages/documentation/getting_started/content/06-reference/90-notebook-support.md @@ -1,4 +1,7 @@ - +--- +title: Using Solara within notebooks +description: Solara can be used to generate an interactive app directly from your notebook file by running just one command +--- # Notebook support We also support notebooks, simply assign to the `Page` variable in a code cell, save your notebook, and run `$ solara run myapp.ipynb`. If you widget or component is called differently, run like `$ solara run myapp.ipynb:myobject.nested_widget`. diff --git a/solara/website/pages/documentation/getting_started/content/06-reference/95-caching.md b/solara/website/pages/documentation/getting_started/content/06-reference/95-caching.md index 16cfa8fbd..de294fc26 100644 --- a/solara/website/pages/documentation/getting_started/content/06-reference/95-caching.md +++ b/solara/website/pages/documentation/getting_started/content/06-reference/95-caching.md @@ -1,3 +1,8 @@ +--- +title: Caching resources for your solara application or dashboard +description: Solara has a dict-like object at `solara.cache.storage` that can be used to store objects in under a key. So we can use this global + object as normal dict +--- # Caching Solara has a dict-like object at `solara.cache.storage` that can be used to store objects in under a key. So we can use this global diff --git a/solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md b/solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md index 4a719842b..ad5c38322 100644 --- a/solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +++ b/solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md @@ -1,3 +1,7 @@ +--- +title: Overview of how to deploy your Solara application or dashboard +description: Solara apps can be easily either self hosted, or hosted on a variety of cloud platforms +--- # Deploying a solara app A Solara app can be [self hosted](/documentation/getting_started/deploying/self-hosted) or [cloud hosted](/documentation/getting_started/deploying/cloud-hosted). diff --git a/solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md b/solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md index 196fdc2b8..6f650ff0d 100644 --- a/solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md +++ b/solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md @@ -1,3 +1,7 @@ +--- +title: Deploying and hosting your own Solara app +description: Solara is compatible with many different hosting solutions, such as Flask, Starlette, FastAPI, and Voila. +--- # Self hosted deployment * [Flask](#flask) diff --git a/solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md b/solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md index 9259e4f03..643cb2ad2 100644 --- a/solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md +++ b/solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md @@ -1,3 +1,7 @@ +--- +title: Hosting your Solara app on the cloud +description: Solara apps can be easily hosted either through our service, or via Ploomber cloud. +--- # Cloud hosted ## Integrated solution (in development) diff --git a/solara/website/pages/documentation/getting_started/content/08-lab/00-what-is-lab.md b/solara/website/pages/documentation/getting_started/content/08-lab/00-what-is-lab.md index 9b4907f74..af4890009 100644 --- a/solara/website/pages/documentation/getting_started/content/08-lab/00-what-is-lab.md +++ b/solara/website/pages/documentation/getting_started/content/08-lab/00-what-is-lab.md @@ -1,3 +1,7 @@ +--- +title: What is Solara.lab? +description: Solara lab is a subpackage in solara containing Components, hooks and parts of Solara that are slightly experimental. +--- # What is Solara lab? Solara lab is a subpackage in solara containing Components, hooks and parts of Solara that are slightly experimental. diff --git a/solara/website/pages/documentation/getting_started/content/80-what-is-lab.md b/solara/website/pages/documentation/getting_started/content/80-what-is-lab.md new file mode 100644 index 000000000..af4890009 --- /dev/null +++ b/solara/website/pages/documentation/getting_started/content/80-what-is-lab.md @@ -0,0 +1,7 @@ +--- +title: What is Solara.lab? +description: Solara lab is a subpackage in solara containing Components, hooks and parts of Solara that are slightly experimental. +--- +# What is Solara lab? + +Solara lab is a subpackage in solara containing Components, hooks and parts of Solara that are slightly experimental. diff --git a/solara/website/pages/documentation/getting_started/content/90-troubleshoot.md b/solara/website/pages/documentation/getting_started/content/90-troubleshoot.md index a9b766cec..e571e72b8 100644 --- a/solara/website/pages/documentation/getting_started/content/90-troubleshoot.md +++ b/solara/website/pages/documentation/getting_started/content/90-troubleshoot.md @@ -1,3 +1,7 @@ +--- +title: Troubleshoot issues with your Solara application +description: It is common to run into some issues when developing your application. See here for best practices for troubleshooting anything you run into +--- # Troubleshoot ## Issues in Jupyter