L
+Its supported language list is controlled by `Volo.Abp.AdminConsole.AbpAdminConsoleOptions.LocalizationLanguages`, which is exposed to the SPA through `/admin-console/api/config`. If no languages are configured, the frontend falls back to `en`.
-
-
@L["LongWelcomeMessage"]
-
-```
+Use the admin console locale files for UI-only texts that are specific to the administration surface. Keep shared module texts in backend localization resources.
-### Angular UI
-
-Angular UI gets the localization resources from the [`application-localization`](../../framework/api-development/standard-apis/localization.md) API's response and merges these resources in the `ConfigStateService` for the localization entries/resources coming from the backend side.
-
-In addition, you may need to define some localization entries and only use them on the UI side. ABP already provides the related configuration for you, so you don't need to make any configurations related to that and instead you can directly define localization entries in the `app.config.ts` file of your angular application as follows:
-
-```ts
-import { provideAbpCore, withOptions } from '@abp/ng.core';
-
-export const appConfig: ApplicationConfig = {
- providers: [
- // ...
- provideAbpCore(
- withOptions({
- environment,
- registerLocaleFn: registerLocale(),
- localizations: [
- {
- culture: 'en',
- resources: [
- {
- resourceName: 'MyProjectName',
- texts: {
- "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information visit"
- }
- }
- ]
- }
- ]
- }),
- ),
- ],
-};
-```
+### `react-native`
-After defining the localization entries, it can be used as below:
+When mobile is enabled, the generated React Native client stores its bundled translations under `apps/mobile/react-native/src/locales`. The `LocalizationService.ts` file:
-{%{
-```html
-{{ 'MyProjectName::LongWelcomePage' | abpLocalization }}
-```
-}%}
+* registers the available locale files
+* exposes the language list used by the app
+* maps the default resource name from `Environment.ts`
-> For more information, please refer to [UI Localization section of the Angular Localization document](../../framework/ui/angular/localization.md).
+Use these locale files for mobile-specific UI strings.
## Creating a New Localization Resource
diff --git a/docs/en/solution-templates/microservice/mobile-applications.md b/docs/en/solution-templates/microservice/mobile-applications.md
index c14895b7b9..224ff906e0 100644
--- a/docs/en/solution-templates/microservice/mobile-applications.md
+++ b/docs/en/solution-templates/microservice/mobile-applications.md
@@ -1,7 +1,7 @@
```json
//[doc-seo]
{
- "Description": "Explore how to integrate mobile applications with ABP's microservice solution, featuring options like MAUI and React Native for seamless development."
+ "Description": "Understand the optional React Native mobile application in ABP Studio's modern microservice solution template."
}
```
@@ -19,162 +19,62 @@
> You must have an ABP Business or a higher license to be able to create a microservice solution.
-The ABP Studio microservice solution template comes with an optional mobile application that is completely integrated to the solution. There are two options for the mobile application:
+The current ABP Studio modern microservice solution template can optionally generate a mobile application under `apps/mobile/react-native`.
-* MAUI
-* React Native
+The modern template does not generate a MAUI mobile application. Its mobile choices are **None** and **React Native**.
-You can select the mobile application type while [creating your solution](../../get-started/microservice.md).
+## The Mobile Gateway
-## Fundamental Structures
+If you enable the mobile application, an API gateway named `MobileGateway` is added under `gateways/mobile`. The React Native client calls backend APIs through this gateway.
-The following sections explain the common structure of the mobile applications (valid for both of MAUI and React Native applications).
+See *[API Gateways](api-gateways.md)* for the shared gateway structure.
-### The Mobile Gateway
+## Authentication
-If you've selected to include the mobile application into your solution, an API Gateway, named `MobileGateway` is also added to the solution. It is located under the `gateways/mobile` in the solution folder.
+The generated React Native app is configured in `Environment.ts` with:
-You can refer to the *[API Gateways](api-gateways.md)* document to understand the structure of the mobile gateway.
+* the `AuthServer` issuer URL
+* the `MobileGateway` base URL
+* the `ReactNative` client id and scopes
-### Authentication
+At runtime, the mobile client uses the password grant to exchange credentials for access and refresh tokens at the `AuthServer` `/connect/token` endpoint, then sends bearer tokens to backend APIs through the `MobileGateway`. Account-related operations such as registration, password reset, profile picture management, and logout use the generated API client under `src/api`.
-Both of the MAUI and React Native applications are installed as native applications to the devices. So, they are using the [OpenID Connect](../../modules/openiddict.md) protocol to authenticate the users. The authentication is done by the `AuthServer` application.
+## Built-in Capabilities
-They don't run on a browser, so they can't use the [Cookie Authentication](../../modules/account.md#cookie-authentication) method. They are using the [JWT Bearer Authentication](../../modules/account.md#jwt-bearer-authentication) method.
+The generated mobile app already includes screens and flows for:
-Best way to communicate with the `AuthServer` application is using the browser. So, the mobile applications are opening a browser window to authenticate the user. Then browser redirects back to the mobile application with the authentication result.
+* sign in, registration, forgot password, and reset password
+* account and profile picture management
+* user-facing settings such as language, theme, and logout
-The following screenshot was taken from the *Login* page of the [Account](../../modules/account.md) module in the mobile application's UI:
+Localization is handled by the bundled locale files under `src/locales` and `src/services/LocalizationService.ts`. Theme handling lives under `src/theme`.
-
+## Solution Structure
+The React Native application is based on [React Native](https://reactnative.dev/) and [Expo](https://expo.dev/). The main files and folders in `apps/mobile/react-native` are:
-### User Management
+* `Environment.ts`: runtime URLs, client id, scopes, and default localization resource name.
+* `src/api`: HTTP clients for token, account, and application configuration calls.
+* `src/components`: reusable UI components.
+* `src/contexts`: shared React contexts, including localization context.
+* `src/hooks`: reusable React hooks.
+* `src/interceptors`: request and response interception for the API client.
+* `src/locales`: bundled UI translations.
+* `src/navigators`: drawer, stack, and tab navigation definitions.
+* `src/screens`: application pages such as login, home, settings, and account flows.
+* `src/services`: cross-cutting services such as localization helpers.
+* `src/store`: Redux actions, listeners, reducers, and selectors.
+* `src/theme`, `src/types`, `src/utils`: shared theming, typings, and helper utilities.
-User Management is implemented in the MAUI Application in the `Acme.CloudCrm.Maui` project with XAML and C# for MAUI and it is implemented in the React Native Application in the react-native project for React Native UI option.
+## Running the Application
-
+The React Native app is not started by the ABP Studio solution runner. Run `AuthServer`, `MobileGateway`, and the required backend services first, then start the mobile app with the standard React Native / Expo toolchain.
-
-### Profile Management
-
-Profile management allows users to view and update their personal profile picture and their passwords. It provides a seamless experience for users to manage their profiles within the mobile application without navigating to the authserver web application.
-
-The following screenshot was taken from the *Profile* page in the MAUI application:
-
-
-
-### Other Features
-
-#### Settings Page
-The settings page allows users to change the language and theme of the application, manage their profiles, change their passwords, and also to logout from the application.
-
-
-
-- **Language**: Applications implements ABP localization logic on the platforms. The language is automatically selected based on the device's language. Users can also change the language manually from the settings page.
-
-- **Dark/Light Theme**: ABP MAUI and React Native applications support both dark and light themes. The theme is automatically selected based on the device's theme. Users can also change the theme manually from the settings page.
-
-## Applications
-
-Following sections explain the structure of MAUI and React Native Applications.
-
-### The MAUI Application
-
-This is the mobile application that is built based on Microsoft's [MAUI framework](https://learn.microsoft.com/en-us/dotnet/maui). It will be in the solution only if you've selected the MAUI as your mobile application option.
-
-#### Project Structure
-Entire MAUI application is built on the AppShell pattern of MAUI. You can find the AppShell class in the `Acme.CloudCrm.Maui` project. It is the entry point of the application. It is responsible for initializing the application and registering the services. You find all the pages and routing information in the `AppShell.xaml` file.
-
-- **Pages**: Pages are located in the `Pages` folder of the project. Each page has a XAML & C# file. XAML file is responsible for the UI and C# file is responsible for the initialization of the page.
-
-- **ViewModels**: ViewModels are located in the `ViewModels` folder of the project. Each ViewModel has a C# file. ViewModels are responsible for the business logic of the pages.
-
-- **Oidc**: Oidc folder contains the logic for the authentication of the application. It contains the `MauiAuthenticationBrowser` class which manages the authentication process of the application.
-
-- **Localization**: Localization folder contains the localization logic of the application. It contains regular ABP Localization logic and the `LocalizationResourceManager` class which is wrapper for the ABP localization logic on MAUI.
-
-- **Messages**: Messages folder contains the message data for the communication inside application. Messages are used to send data between pages and viewmodels. It's designed on the [MVVM Toolkit Messenger](https://learn.microsoft.com/en-us/dotnet/communitytoolkit/mvvm/messenger) feature.
-
-- **Storage**: Storage folder contains the storage logic of the application. It contains the `IStorage` class which is wrapper for the [SecureStorage](https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/storage/secure-storage) feature. It is used to store the authentication data of the user and preferences of the application.
-
-_Rest of the folders are MAUI default folders. You can check the [.NET MAUI single project documentatipon](https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/single-project?view=net-maui-8.0) for more information._
-
-#### Running the application
-Before running the MAUI Application, rest of the applications in the solution must be running. Such as AuthServer, MobileGateway and the microservices.
-
-Make sure that you prepared devices for debugging. You can check the following documentation for each platform.
-
-- [Android](https://learn.microsoft.com/en-us/dotnet/maui/android/emulator/)
-- [iOS](https://learn.microsoft.com/en-us/dotnet/maui/ios/pair-to-mac)
-- [MacCatalyst](https://learn.microsoft.com/en-us/dotnet/maui/mac-catalyst/cli)
-- [Windows](https://learn.microsoft.com/en-us/dotnet/maui/windows/setup)
-
-##### Network
-
-All the platforms including iOS, MacCataylst and Windows, runs the applications in the same network of the host. So, you can use the `localhost` address to connect to the applications.
-
-But in the **Android Emulator**, you need to use the `adb reverse` command to connect to the applications. You can use the following command to connect to the AuthServer application:
+For Android emulators or devices, map the development ports before testing:
```bash
-adb reverse tcp:44300 tcp:44300
+adb reverse tcp: tcp:
+adb reverse tcp: tcp:
```
-> `44300` is an example port. You need to change it based on the port of the AuthServer & MobileGateway application.
-
-> You need to run the command for a running emulator. If you run the emulator after running the command, you need to run the command again.
-
-
-##### Target Framework
-
-Since MAUI Applications have multiple target frameworks, you need to select the target framework before running the application. You can select the target framework from the context menu of the Solution Runner.
-
-
-
-
-##### Running with ABP Studio
-You can start the MAUI application with the solution runner. You can click the start button of the MAUI application in the solution runner tree. It will start the application on the selected target framework. Since they're not running on a process and they're running on a device, you can't see them as running state in the solution runner. After the application is deployed, it'll be opened on the device and it'll be shown as stopped in the solution runner.
-
----
-
-#### Development on MAUI Application
-
-You can follow [Mobile Application Development Tutorial - MAUI](../../tutorials/mobile/maui) to learn how to develop on MAUI Application.
-
-### The React Native Application
-
-This is the mobile application that is built based on Facebook's [React Native framework](https://reactnative.dev/) and [Expo](https://expo.dev/). It will be in the solution only if you've selected React Native as your mobile application option.
-
-#### Project Structure
-- **Environment.ts**: file using for providing application level variables like `apiUrl`, `oAuthConfig` and etc.
-
-- **api**: The `api` folder contains HTTP request files that simplify API management in the React Native starter template
- - `API.ts:` exports **axiosInstance**. It provides axios instance filled api url.
-
-- **components**: In the `components` folder, you can reach built in react native components that you can use in your app. These components **facilitates** your list, select and etc. operations.
-
-- **contexts**: `contexts` folder contains [react context](https://react.dev/reference/react/createContext). You can expots your contexts in this folder. `Localization context provided in here`
-
-- **hocs**: this folder is added to contain higher order components. The purpose is to wrap components with additional features or properties. It initially has a `PermissionHoc.tsx` that wraps a component to check the permission grant status.
-
-- **hooks**: covers the react native hooks where you can get a reference from [the official documentation](https://react.dev/reference/react/hooks).
-
-- **interceptors**: initializes a file called `APIInterceptor.ts` that has a function to manage the http operations in a better way.
-
-- **navigators**: folder contains [react-native stacks](https://reactnavigation.org/docs/stack-navigator/). After creating a new *FeatureName*Navigator we need to provide in `DrawerNavigator.ts` file as `Drawer.Screen`
-
-- **screens**: folder has the content of navigated page. We will pass as component property to [Stack.Screen](https://reactnavigation.org/docs/native-stack-navigator/)
-
-- **store**: folder manages state-management operations. We will define `actions`, `listeners`, `reducers`, and `selectors` here.
-
-- **styles**: folder contains app styles. `system-style.ts` comes built in template we can also add new styles.
-
-- **utils**: folder contains helper functions that we can use in application
-
-#### Running the Application
-
-React Native applications can't be run with the solution runner. You need to run them with the React Native CLI. You can check the [React Native documentation](https://reactnative.dev/docs/environment-setup) to learn how to setup the environment for React Native development.
-
-Before running the React Native application, the rest of the applications in the solution must be running. Such as AuthServer, MobileGateway and the microservices.
-
-Then you can run the React Native application by following this documentation: [Getting Started with the React Native](../../framework/ui/react-native/index.md).
\ No newline at end of file
+Use the ports assigned to `MobileGateway` and `AuthServer` in your generated solution.
diff --git a/docs/en/solution-templates/microservice/overview.md b/docs/en/solution-templates/microservice/overview.md
index fc322565c3..5d1438f22c 100644
--- a/docs/en/solution-templates/microservice/overview.md
+++ b/docs/en/solution-templates/microservice/overview.md
@@ -1,7 +1,7 @@
```json
//[doc-seo]
{
- "Description": "Explore the Microservice solution template for ABP Framework, featuring pre-installed libraries and services for seamless development and production."
+ "Description": "Explore the modern ABP microservice solution template, featuring React-based web apps, API gateways, and pre-installed libraries and services for development and production."
}
```
@@ -21,6 +21,8 @@
In this document, you will learn what the Microservice solution template offers to you.
+This page describes the current modern microservice template. In this template family, the web layer supports `React` or `No UI`.
+
## The Big Picture

@@ -45,9 +47,8 @@ All the following **libraries and services** are **pre-installed** and **configu
The following features are built and pre-configured for you in the solution.
* **Authentication** is fully configured based on best practices;
- * **JWT Bearer Authentication** for microservices and applications.
- * **OpenId Connect Authentication**, if you have selected the MVC UI.
- * **Authorization code flow** is implemented, if you have selected a SPA UI (Angular or Blazor WASM).
+ * **JWT Bearer Authentication** for microservices and gateways.
+ * **OpenId Connect / authorization code flow** for the React web applications (`react`, `react-admin-console`, and `react-public-web` when enabled).
* Other flows (resource owner password, client credentials...) are easy to use when you need them.
* **[Permission](../../framework/fundamentals/authorization/index.md)** (authorization), **[setting](../../framework/infrastructure/settings.md)**, **[feature](../../framework/infrastructure/features.md)** and the **[localization](../../framework/fundamentals/localization.md)** management systems are pre-configured and ready to use.
* **[Background job system](../../framework/infrastructure/background-jobs/index.md)** with [RabbitMQ integrated](../../framework/infrastructure/background-jobs/rabbitmq.md).
@@ -98,21 +99,22 @@ There are two database provider options are provided on a new microservice solut
### UI Frameworks
-The solution comes with a main web application with the following UI Framework options:
+The current modern microservice template supports the following web options:
+
+* **None**: Doesn't include the React web applications.
+* **React**: Creates the web application set for the solution.
+
+When you select **React**, ABP Studio creates:
-* **None** (doesn't include a web application to the solution)
-* **Angular**
-* **MVC / Razor Pages UI**
-* **Blazor WebAssembly**
-* **Blazor Server**
-* **MAUI with Blazor (Hybrid)**
+* `apps/react` as the main SPA behind the `web` gateway.
+* `apps/react-admin-console` as the dedicated administration SPA.
+* `apps/react-public-web` as an additional public site when the *Public Website* option is enabled.
### The Mobile Application
-If you prefer, the solution includes a mobile application with its dedicated API Gateway. The mobile application is fully integrated to the system, implements authentication (login) and other ABP features, and includes a few screens that you can use and take as example. The following options are available:
+If you prefer, the solution includes a mobile application with its dedicated API Gateway. The mobile application is fully integrated to the system, implements authentication (login) and other ABP features, and includes a few screens that you can use and take as example. In the current modern template, the available options are:
* **None** (doesn't include a mobile application to the solution)
-* **MAUI**
* **React Native**
### Multi-Tenancy & SaaS Module
diff --git a/docs/en/solution-templates/microservice/solution-structure.md b/docs/en/solution-templates/microservice/solution-structure.md
index 90fd211136..efca1a2f44 100644
--- a/docs/en/solution-templates/microservice/solution-structure.md
+++ b/docs/en/solution-templates/microservice/solution-structure.md
@@ -1,7 +1,7 @@
```json
//[doc-seo]
{
- "Description": "Explore the folder structure of ABP Studio's microservice solution template, essential for effective project organization and development."
+ "Description": "Explore the folder structure of ABP Studio's modern microservice solution template, including its React apps, gateways, and services."
}
```
@@ -23,15 +23,17 @@ This document explains the solution and folder structure of ABP Studio's [micros
> This document assumes that you've created a new microservice solution by following the *[Quick Start: Creating a Microservice Solution with ABP Studio](../../get-started/microservice.md)* guide.
+The current modern template uses React-based web applications. Older MVC, Angular, Blazor, and MAUI web app layouts are not part of this structure.
+
## Understanding the ABP Solution Structure
When you create a new microservice solution, you will see a tree structure similar to the one below in the *Solution Explorer* panel:

-Each leaf item (e.g. `Acme.CloudCrm.IdentityService`, `Acme.CloudCrm.Web`, `Acme.CloudCrm.WebGateway`...) in the tree above is an **ABP Studio module**. An ABP Studio module can be a web application, an API gateway, a microservice, a console application or whatever .NET allows you to build. They are grouped into **folders** (`apps`, `gateways` and `services`) in that solution.
+Each leaf item in the tree above is an **ABP Studio module**. They are grouped into **folders** (`apps`, `gateways` and `services`) in that solution.
-**Each ABP Studio module has a separate .NET solution**; this allows your team to develop them individually, in keeping with the nature of the microservices architecture.
+The .NET-based modules, such as `auth-server`, gateways, and backend services, keep their own .NET solution structure. Frontend applications such as `react`, `react-admin-console`, and `react-public-web` live in their own frontend folders.
> Refer to the *[Concepts](../../studio/concepts.md)* document for a full definition of ABP Studio solution, module and package terms.
@@ -48,13 +50,21 @@ The root folder of the solution will be similar to the following:
The folder structure basically matches to the solution in ABP Studio's *Solution Explorer*:
* `.abpstudio` folder contains your personal preferences for this solution and it is not added to your source control system (Git ignored). It is created and used by ABP Studio.
-* `app` folder contains the applications that has a UI and typically used by the end users of your system.
+* `apps` folder contains the applications of the solution:
+ * `auth-server` is the authentication server based on OpenIddict.
+ * `react` is the main React SPA when the web UI is enabled.
+ * `react-admin-console` is the dedicated administration SPA when the web UI is enabled.
+ * `react-public-web` is the optional public-facing site.
+ * `mobile/react-native` is the optional mobile application.
* `etc` folder contains some additional files for the solution. It has the following sub-folders:
* `abp-studio` folder contains settings that are managed by ABP Studio. This folder is added to your source control system and shared between developers.
* `docker` folder contains docker-compose configuration to easily run infrastructure dependencies (e.g. RabbitMQ, Redis) of the solution on your local computer.
* `helm` folder contains all the Helm charts and related scripts to deploy the solution to Kubernetes.
- * `k8s` folder contains some additional files to setup *Kubernetes Dashboard* on your local machine.
-* `gateways` folder contains one or more API Gateways (the count depends on if you've selected mobile application or other applications if available). This solution implements the [BFF](https://learn.microsoft.com/en-us/azure/architecture/patterns/backends-for-frontends) (Backend for frontend pattern), that means it has a dedicated API Gateway for each different UI application.
+ * `scripts` folder contains helper scripts for initializing and running the solution.
+* `gateways` folder contains one or more API Gateways. This solution implements the [BFF](https://learn.microsoft.com/en-us/azure/architecture/patterns/backends-for-frontends) pattern, so it has a dedicated API Gateway for each different client type:
+ * `web` is the gateway for `react`.
+ * `public` is the gateway for `react-public-web`, when the public website is enabled.
+ * `mobile` is the gateway for the React Native application, when mobile is enabled.
* `services` folder contains the microservices. The microservice count varies based on the options you've selected during the solution creation. However, the following microservices are always included:
- * `administration` microservice is used to manage permissions, languages and other fundamental settings of the system.
- * `identity` microservice is used to manage users, roles and their permissions. It basically serves to the [Identity](../../modules/identity.md) module's UI (and [OpenIddict](../../modules/openiddict.md) module's UI, if selected).
\ No newline at end of file
+ * `administration` microservice manages permissions, settings, features, and other operational capabilities used by the solution.
+ * `identity` microservice manages users, roles, and related identity/OpenIddict endpoints used by the web applications.
diff --git a/docs/en/solution-templates/microservice/web-applications.md b/docs/en/solution-templates/microservice/web-applications.md
index 6c50a7801a..4e9e7eea0c 100644
--- a/docs/en/solution-templates/microservice/web-applications.md
+++ b/docs/en/solution-templates/microservice/web-applications.md
@@ -1,7 +1,7 @@
```json
//[doc-seo]
{
- "Description": "Explore the ABP Framework's microservice solution template, featuring integrated web applications and API gateways for seamless development."
+ "Description": "Explore the web applications in ABP Studio's modern microservice solution template, including react, react-admin-console, react-public-web, and AuthServer."
}
```
@@ -19,15 +19,9 @@
> You must have an ABP Business or a higher license to be able to create a microservice solution.
-The ABP Studio microservice solution template contains a few web applications. These applications are fully integrated to the solution, uses the [microservices](microservices.md) through the [API gateways](api-gateways.md).
+The current ABP Studio microservice solution template uses React-based web applications. These applications are fully integrated to the solution and use the [microservices](microservices.md) through the [API gateways](api-gateways.md).
-The following figure shows the application in the *[Solution Explorer](../../studio/solution-explorer.md)* pane of ABP Studio:
-
-
-
-
-
-Count and types of the web applications depends on the options you've selected while [creating your solution](../../get-started/microservice.md). This document introduces and explains all the pre-built web applications included in the microservice solution template.
+Count and type of the web applications depend on the options you've selected while [creating your solution](../../get-started/microservice.md). This document introduces the pre-built web applications included in the current modern microservice template.
## AuthServer
@@ -35,7 +29,7 @@ Count and types of the web applications depends on the options you've selected w
The `AuthServer` application is also used by microservices as Authority for JWT Bearer Authentication.
-> You normally do not directly browse this application. It is used by the other applications to authenticate the users and applications..
+> You normally do not directly browse this application. It is used by the other applications to authenticate users and applications.
The following screenshot was taken from the *Login* page of the [Account](../../modules/account.md) module in the application's UI:
@@ -43,40 +37,42 @@ The following screenshot was taken from the *Login* page of the [Account](../../
That application is mainly based on the [OpenIddict](../../modules/openiddict.md), the [Identity](../../modules/identity.md), and the [Account](../../modules/account.md) modules. So, it basically has login, register, forgot password, two factor authentication and other authentication related pages.
-## The Main Web Application (optional)
-
-This is the main web application of the solution. It uses the `Acme.CloudCrm.AuthServer` application as the [API gateway](api-gateways.md). It also uses the Authentication Server application to make users login.
+## `react`
-The following screenshot was taken from the *Role Management* page of the [Identity](../../modules/identity.md) module in the web application's UI:
+`apps/react` is the main authenticated React SPA of the solution. It talks to backend services through the `web` [API gateway](api-gateways.md) and uses `AuthServer` for user login.
-
+This application is the main user-facing web UI for the solution. In the generated route configuration, it can also deep-link users to the separate `react-admin-console` application for operational and administration tasks.
-The following options are provided while [creating the solution](../../get-started/microservice.md):
+If you choose `No UI` while creating the solution, ABP Studio doesn't generate `apps/react`.
-* MVC / Razor Pages UI
-* Angular
-* Blazor WebAssembly
-* Blazor Server
-* MAUI Blazor (Hybrid)
+## `react-admin-console`
-The following sections explain each of these UI types.
+`apps/react-admin-console` is the dedicated administration SPA. It uses the `/admin-console/` base path and focuses on back-office and operational capabilities such as:
-### MVC / Razor Pages Web Application
+* account management
+* users, roles, claim types, and organization units
+* tenants and editions
+* OpenIddict applications and scopes
+* settings, audit logs, and optional module UIs
-`Acme.CloudCrm.Web` module is created if you've selected the MVC / Razor Pages UI while creating the solution. It has own .NET solution that is located under the `apps/web` folder of the solution root.
+The route list is filtered by backend permissions and by which backend modules are actually available.
-### Angular Web Application
+## `Volo.Abp.AdminConsole` Backend Role
-If you've selected the Angular UI while creating your solution, a folder named `angular` is included in the `apps` folder of the solution. That folder contains the main web application of the solution that is implemented using Angular.
+`Volo.Abp.AdminConsole` is the backend-side companion for the admin console when you host it from an ASP.NET Core application. It is responsible for:
-### Blazor WebAssembly Web Application
+* serving the admin console under `/admin-console`
+* exposing runtime configuration from `/admin-console/api/config`
+* exposing module discovery from `/admin-console/api/modules`
+* applying branding, theme, localization, and customization settings for the admin console
+* optionally redirecting `/` to `/admin-console`
-If you've selected the Blazor WebAssembly UI while creating your solution, `Acme.CloudCrm.Blazor` project is included in the `apps` folder of the solution. That folder contains the main web application of the solution that is implemented using Blazor WebAssembly.
+The standalone `react-admin-console` app follows the same `/admin-console` route and OIDC conventions, so the frontend and backend pieces stay aligned.
-### Blazor Server Web Application
+## `react-public-web`
-If you've selected the Blazor Server UI while creating your solution, `Acme.CloudCrm.Blazor` project is included in the `apps` folder of the solution. That folder contains the main web application of the solution that is implemented using Blazor Server.
+When you enable the *Public Website* option, ABP Studio creates `apps/react-public-web`. This is a separate public-facing React application behind the `public` gateway.
-### MAUI Blazor (Hybrid) Web Application
+Use this application for anonymous or customer-facing traffic. Keep authenticated operational flows in `react` and `react-admin-console`.
-If you've selected the MAUI Blazor (Hybrid) UI while creating your solution, `Acme.CloudCrm.MauiBlazor` project is included in the `apps` folder of the solution. That folder contains the main desktop application of the solution that is implemented using MAUI Blazor (Hybrid) that uses existing Blazor UI Implementation.
+`react-public-web` can still participate in authentication flows when needed, but its role is different from the back-office applications: it is the public entry point, not the administration surface.
diff --git a/docs/en/solution-templates/modular-monolith/index.md b/docs/en/solution-templates/modular-monolith/index.md
new file mode 100644
index 0000000000..a49a268bc7
--- /dev/null
+++ b/docs/en/solution-templates/modular-monolith/index.md
@@ -0,0 +1,62 @@
+```json
+//[doc-seo]
+{
+ "Description": "Learn how ABP Studio's modern Modular Monolith solution template organizes a main application and reusable modules in a single deployable solution."
+}
+```
+
+# ABP Studio: Modular Monolith Solution Template
+
+````json
+//[doc-nav]
+{
+ "Previous": {
+ "Name": "Layered Solution",
+ "Path": "solution-templates/layered-web-application/index.md"
+ },
+ "Next": {
+ "Name": "Microservice Solution",
+ "Path": "solution-templates/microservice/index.md"
+ }
+}
+````
+
+ABP Studio's modern solution wizard includes a dedicated **Modular Monolith** architecture. Under the hood, it uses the modern no-layers application template for the main application, then enables modularity automatically.
+
+> **This page documents the modern modular monolith path. If you are working with the classic template family, see the [Solution Template Selection Guide](../guide.md) for the host + module composition approach.**
+
+## What ABP Studio Creates
+
+When you choose `Modular Monolith` in the modern solution wizard, ABP Studio:
+
+* creates the main application by using the modern no-layers host template.
+* locks the solution into modular mode.
+* creates a `main` folder in the solution model and moves the main application into it.
+* creates a `modules` folder for reusable module solutions.
+* lets you add additional modules during solution creation and optionally install them into the main application immediately.
+
+## Typical Layout
+
+In ABP Studio's *Solution Explorer*, the solution is organized around these areas:
+
+* `main`: the main application and its host-side assets.
+* `modules`: one module solution per business capability.
+* `etc`: shared infrastructure, run profiles, and deployment files.
+
+Additional modules are generated under the solution's `modules/` directory, while the main application remains the single deployable host.
+
+## How Modules Fit In
+
+The module solutions created for a modular monolith use the same reusable module concepts documented in the [Application Module Template](../application-module/index.md) page.
+
+Use this template when you want:
+
+* clear module boundaries without a distributed deployment model.
+* separate module solutions for teams or business domains.
+* a monolith today, with a cleaner path toward microservices later.
+
+## See Also
+
+* [Solution Template Selection Guide](../guide.md)
+* [Application Module Template](../application-module/index.md)
+* [Modular Monolith Application Development Tutorial](../../tutorials/modular-crm/index.md)