Hi All,
We are in the process of developing $subject. Tentatively this webapp
server is named as "Carbon UI Server".
# Major goals of this webapp server are following:
- Enforcing security measures.
- Setting proper cache headers
- Setting recommended security related HTTP headers
- Protection against file system navigation through URLs
- Defining a structure for webapps.
- Requirement is to properly define places to put page(s), themes, UI
extensions, and internalization language files in the webapp.
- Proper routeing for SPA apps.
- For SPA apps, index.html should be served for any request for a
page.
# Proposing directory structure:
- Webapps will be placed in <carbon_home>/wso2/<runtime>/
deployments/reactapps/
- Structure of a webapp:
<app_name>
├── configuration.yaml
│
├── extensions
│ ├── widgets
│ │ ├── line-chart/
│ │ ├── bar-chart/
│ │ └── calendar/
│ │ ├── bundle.js
│ │ ├── styles.css
│ │ └── widget.json
│ │
│ └── device-types
│ ├── andoid/
│ ├── ios/
│ └── ardino/
│ └── ports.json
├── i18n
│ ├── fr.properties
│ └── en.properties
│
├── pages
│ └── index.html
│
├── public
│ ├── images
│ │ └── logo.png
│ ├── css
│ │ └── styles.css
│ └── js
│ └── bundle.js
│
└── themes
├── dark/
└── light
├── js
│ └── some.js
└── css
└── styles.css
- configuration.yaml will contain configurations of the web app (e.g. app
context path, custom security headers). These configurations should be able
to add/override through the deployment.yaml file.
- extensions directory contains UI extensions. There can be multiple types
of extensions and they are categorized accordingly into sub-directories
inside the extensions directory. Each extension should be wrapped with a
directory (the name of the directory will be the name of the extension),
and placed inside the relevant type. Thus, the fully qualified name of an
extension will be <type>:<name> (e.g. widgets:line-chart)
- i18n directory will bear the internalization language files.
- public directory contains any client-side resources of the app.
- themes directory contains the themes of the app. Each theme should be put
inside a sub-directory.
# URL patterns:
- Pages
- <app_context_path>/path/to/page (e.g. https://localhost:9292/pets-
store/home)
- Resources of the app
- <app_context_path>/public/app/<path-relative-to-public-directory>
(e.g. https://localhost:9292/pets-store/public/app/images/logo.png)
- Resources of an extension
- <app_context_path>/public/extensions/<type>/<name>/<
path-relative-to-extension-directory> (e.g.
https://localhost:9292/pets-store/public/extensions/
widgets/calendar/styles.css
<https://localhost:9292/pets-store/public/extensions/widgets/calendar/styles.css>
)
- Resources of a theme
-
<app_context_path>/public/themes/<name>/<path-relative-to-theme-directory>
(e.g. https://localhost:9292/pets-store/public/themes/light/css/
styles.css)
WDYT?
Thanks.
--
Sajith Janaprasad Ariyarathna
Senior Software Engineer; WSO2, Inc.; http://wso2.com/
<https://wso2.com/signature>
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture