This is the base Reflex template - installed when you run reflex init
.
If you want to use a different template, pass the --template
flag to reflex init
.
For example, if you want a more basic starting point, you can run:
reflex init --template blank
This template has the following directory structure:
├── README.md ├── assets ├── rxconfig.py └── {your_app} ├── __init__.py ├── components │ ├── __init__.py │ ├── navbar.py │ └── sidebar.py ├── pages │ ├── __init__.py │ ├── about.py │ ├── index.py │ ├── profile.py │ ├── settings.py │ └── table.py ├── styles.py ├── templates │ ├── __init__.py │ └── template.py └── {your_app}.py
See the Project Structure docs for more information on general Reflex project structure.
In this template, the pages in your app are defined in {your_app}/pages/
.
Each page is a function that returns a Reflex component.
For example, to edit this page you can modify {your_app}/pages/index.py
.
See the pages docs for more information on pages.
In this template, instead of using rx.add_page
or the @rx.page
decorator,
we use the @template
decorator from {your_app}/templates/template.py
.
To add a new page:
{your_app}/pages/
. We recommend using one file per page, but you can also group pages in a single file. @template
decorator, which takes the same arguments as @rx.page
. {your_app}/pages/__init__.py
file and it will automatically be added to the app. {your_app}/components/sidebar.py
and {your_app}/components/navbar.py
. In order to keep your code organized, we recommend putting components that are
used across multiple pages in the {your_app}/components/
directory.
In this template, we have a sidebar component in {your_app}/components/sidebar.py
.
As your app grows, we recommend using substates to organize your state.
You can either define substates in their own files, or if the state is specific to a page, you can define it in the page file itself.