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
