Source Code Organization
Fullstack code consists of a layered and modular
Layers
packages: The base packages required for project.packages-modules: The entry point to core application based feature. An extended features to thepackages.- It may have dependencies of
packages - It wont' have any dependency of any of other modules within
packages-modulesexcept if it is acorepackage.
- It may have dependencies of
servers: The entry point to server app for remote development.- It has dependencies of
packages-modules's packages and/orpackages
- It has dependencies of
portable-devices: The entry point to native apps like mobile and deskop.- It has dependencies of
packages-modules's packages and/orpackages.
- It has dependencies of

Target Environments
The module is partitioned into the following sub packages:
platform: Defines service injection support and the base services for the Project that are shared accross layerscore: Source code that only requires basic JavaScript APIs and run in all the other target environmentsclent: Source code that only requires basic Client APIs such asredux,redux-epic,apollo-client,hookswithout requiring Web APIs likereact,dometc.browser: Source code that requires Web APIs, eg. DOM, React- may have dependencies on:
core,client
- may have dependencies on:
server: Source code that requires Node.JS APIs- may have dependencies on:
core
- may have dependencies on:
mobile: Source code the requires React Nativeelectron: Source code that requires the Electron renderer-process APIs- may have dependencies on:
core,browser,client
- may have dependencies on:
electron-main: Source code that requires the Electron main-process APIs- may have dependencies on:
core,node
- may have dependencies on:
browser-extension: Source code that requires the Chrome Extensionextension: Source code of extension
You can add additional target environments based on the specific third party library
ant-ui: Source code that requires the antd componentschakra-ui: Source code that requires the Chakra-UI components

Build and Run
We use lerna to compile the packages. Read more about it as it is needed to run the project.