Hi Sajith,

+1 for the web server. We will be able to replace the MS4J service inside
carbon-apimgt with this one when it's available.

Following are some of my suggestions and thoughts.

Can we put the public/images/logo.png and public/css/styles.css in the
default theme ?

I believe the extensions are stand alone js files. In APIM case it will be
useful to add a new page to the store app. But we will have to write the
react app client side routing to pick the extension as a new route.


thanks,
Chanaka

On Mon, Sep 11, 2017 at 3:35 PM, SajithAR Ariyarathna <[email protected]>
wrote:

> 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>/d
> eployments/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
>       <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/st
>       yles.css)
>
>
> WDYT?
>
> Thanks.
> --
> Sajith Janaprasad Ariyarathna
> Senior Software Engineer; WSO2, Inc.;  http://wso2.com/
> <https://wso2.com/signature>
>



-- 
Chanaka Jayasena
Associate Tech Lead,
email: [email protected]; cell: +94 77 4464006
blog: http://chanaka3d.blogspot.com
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to