{"id":42082187,"url":"https://github.com/cloudify-cosmo/cloudify-stage","last_synced_at":"2026-01-26T10:06:58.360Z","repository":{"id":37418126,"uuid":"68003459","full_name":"cloudify-cosmo/cloudify-stage","owner":"cloudify-cosmo","description":"Cloudify's New UI Framework","archived":false,"fork":false,"pushed_at":"2025-09-13T07:44:15.000Z","size":159792,"stargazers_count":40,"open_issues_count":54,"forks_count":22,"subscribers_count":27,"default_branch":"master","last_synced_at":"2025-09-13T09:45:27.345Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudify-cosmo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-09-12T11:32:27.000Z","updated_at":"2024-11-21T13:01:02.000Z","dependencies_parsed_at":"2023-09-29T04:02:42.803Z","dependency_job_id":"c3033e14-daec-4059-8381-e5cb351a963a","html_url":"https://github.com/cloudify-cosmo/cloudify-stage","commit_stats":null,"previous_names":[],"tags_count":122,"template":false,"template_full_name":null,"purl":"pkg:github/cloudify-cosmo/cloudify-stage","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-stage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-stage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-stage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-stage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudify-cosmo","download_url":"https://codeload.github.com/cloudify-cosmo/cloudify-stage/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-stage/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28774299,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T09:42:00.929Z","status":"ssl_error","status_checked_at":"2026-01-26T09:42:00.591Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-26T10:06:58.305Z","updated_at":"2026-01-26T10:06:58.353Z","avatar_url":"https://github.com/cloudify-cosmo.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cloudify Console \n\nThe Cloudify Console provides User Interface for managing and analyzing [Cloudify Manager](https://cloudify.co).\n\n![Cloudify Console screenshot](./doc/screenshot.png)\n\n\n## Requirements\n\nThe following requirements should be met prior starting the application:\n\n- [Node.js](https://nodejs.org) (version 16.x, at least 16.14.0) installed\n    - With [NVM](https://github.com/nvm-sh/nvm) installed just execute `nvm use` to set Node.js version compatible with this project\n- [PostgreSQL](https://www.postgresql.org/) (version \u003e= 9.5.x) installed and configured\n- [Cloudify Manager](https://cloudify.co/download) (version \u003e= 6.x) accessible from your local machine\n\nThe following platforms are supported for development:\n* Linux\n* MacOS\n* Windows with WSL 2.0\n\n## Setup\n\nTo setup development environment and start the application follow the steps below.\n\n1. **Cloudify Manager installation**\n\n    There are many ways to install Cloudify Manager:\n\n     - [Production docker premium image installation](https://docs.cloudify.co/staging/dev/trial_getting_started/set_trial_manager/trial_install/#step-1-install-the-cloudify-manager-as-a-docker-container)\n     - [Production docker community image installation](https://docs.cloudify.co/staging/dev/trial_getting_started/set_trial_manager/download_community/#step-1-install-the-cloudify-manager-as-a-docker-container)\n     - [Development docker premium image installation](https://cloudifysource.atlassian.net/wiki/spaces/RD/pages/2459238401/Setting+up+an+environment+using+Docker)\n     - [Production or development AMI image installation](https://cloudifysource.atlassian.net/wiki/spaces/RD/pages/2406187011/Setting+up+an+environment+in+AWS+EC2)\n\n1. **Configuration**\n   \n   * Create `conf/me.json` file basing on `conf/me.json.template`.\n   * Change `\u003cMANAGER_IP\u003e` into real IP of your Cloudify Manager in that file.\n\n1. **Dependencies installation**\n\n   Run `npm run beforebuild` to install application dependencies.\n\n1. **Database setup**\n\n   Running postgres database locally make sure that:\n    - You have a database named `stage` \n    - You have a user named `cloudify` with `cloudify` as password\n\n \n   You can do this easily by:\n      ```bash\n      docker pull postgres\n      docker run --name postgres-cfy -e POSTGRES_PASSWORD=cloudify -e POSTGRES_USER=cloudify -e POSTGRES_DB=stage -p 5432:5432 -d postgres\n      ```\n   Run `cd backend \u0026\u0026 npm run db-migrate` to initialize database.\n\n1. **Application start**\n\n   You can run the application by starting the stage backend server and starting [webpack dev server](https://webpack.js.org/configuration/dev-server/) serving client side:\n   * In `backend` folder, run `npm run devStart` to start backend server   \n     **NOTE**: you will need to have write permissions to `/var/log/cloudify/stage`). \n     For more information and troubleshooting visit [backend](./backend).\n   \n   * And also run `npm run devServer` to start webpack dev server.\n\nAt this point you should have development environment configured and running. Open [http://localhost:4000](http://localhost:4000) page in your web-browser to see if application is running.\n\nChanges in the source code shall be loaded to the development version of the application: \n- for changes in [app](./app) and [widgets](./widgets) directory you need to reload page to see your updates,\n- for changes in [backend](./backend) directory you don't need to reload page as backend server will automatically be restarted.\n\n\n### License\n\nFirst time you run Cloudify Manager you would be asked about the license (see [Activating Cloudify Manager and License Management](https://docs.cloudify.co/staging/dev/install_maintain/installation/manager-license/) for more details).\n  You can find [the license here](https://github.com/cloudify-cosmo/cloudify-build-system/blob/master/pipelines-k8s/system-ui-tests/license/cfy-license.yaml). The access to the license is restricted.\n\n\n## TypeScript support in IDEs\n\nThe project is written in TypeScript and is using\n[project references](https://www.typescriptlang.org/docs/handbook/project-references.html) to speed up type-checking\nof multiple subprojects.\n\nCompilation results are stored in the `tsc-dist` directory. Keep in mind those are only used by the TypeScript compiler\nand are not used in the UI application. Keeping those files serves as a cache to speed up subsequent compilations.\n\nWhen developing, make sure your IDE TypeScript plugin supports project references and is using the main `tsconfig.json`\nfile as the configuration file. If your IDE uses project-specific `tsconfig.json` files\n(e.g. [`app/tsconfig.json`](./app/tsconfig.json) for files in the `app` directory), your IDE will be doing unnecessary\nwork compiling subprojects multiple times.\n\nIDEs known to work with project references:\n1. VSCode\n1. WebStorm\n1. neovim LSP\n\n   It requires a project-specific config or some other way to point to the main `tsconfig.json`.\n   See \u003chttps://github.com/neovim/nvim-lspconfig/issues/940#issuecomment-848902408\u003e\n\n## Package\n\nYou can create application package and deploy it on a remote Cloudify Manager server.\n\n### Package creation\n\nYou can create either tarball package or RPM package.\n\n#### Tarball package\n\nTo create tarball package:  \n1. Create production build by running: `npm run build`.\n1. Pack all necessary files into archive by running: `npm run zip`. \n1. Application package will be in `stage.tar.gz` file in repository main directory.\n\n#### RPM package\n\nTo create RPM package:  \n1. Push branch with your changes to the remote.\n1. Your RPM package will automatically be created by [CircleCI](https://circleci.com/gh/cloudify-cosmo/cloudify-stage) (check Artifacts tab on the `build-rpm` job).\n\n### Package upload\n\nTo upload the package to the remote Cloudify Manager:\n1. Copy private SSH key to access Cloudify Manager to `~/.ssh/cloudify.key` or explicitly define path to it: `export SSH_KEY_PATH=\u003cPATH\u003e`.\n1. Define Cloudify Manager IP address by specifying `manager.ip` in `conf/me.json` or by exporting environment variable: `export MANAGER_IP=\u003cMANAGER_IP\u003e`.\n1. Make sure tarball package (`stage.tar.gz`) is built or explicitly define path to the tarball or RPM package: `export STAGE_PACKAGE=\u003cPATH\u003e`.\n1. Run uploading script: `npm run upload`.\n1. Open browser and go to page `http://\u003cMANAGER_IP\u003e` to see if application is running.\n\n### Package content\n\n#### Tarball package\n\nPackage tarball archive contains the following resources:\n\n* `backend` - Stage Backend - whole [backend](./backend) folder\n* `conf` - configuration files (see [Configuration](./conf/README.md) for details)\n* `dist` - Stage Frontend - directory created by Webpack according to the [production configuration](./webpack.config.ts)\n  * `appData` - built-in application data\n    * `widgets` - built-in widgets\n      * `\u003cwidget-name\u003e` - every widget has its own folder \n        * `widget.js` - minified widget bundle file (+ gzip-compressed widget bundles)\n        * `widget.js.gz` - (optional) gzip-compressed `widget.js`\n        * `README.md` - documentation file\n        * `widget.png` - widget thumbnail\n      * ...\n    * `templates` - built-in templates - whole [templates](./templates) folder\n      * `pages` - built-in pages - whole [templates/pages](./templates/pages) folder\n      * `page-groups` - built-in page groups - whole [templates/page-groups](./templates/page-groups) folder\n  * `static` - static files\n    * `images` - image files\n    * `fonts` - font files\n    * `js` - JavaScript bundles\n      * `main.bundle.js` - bundle created from client-side application source code (+ gzip-compressed bundle)\n      * `main.bundle.js` - gzip-compressed `main.bundle.js`\n      * `vendor.bundle.js` - bundle created from client-side application external dependencies\n      * `vendor.bundle.js.gz` - gzip-compressed `vendor.bundle.js`\n    * `index.html` - main HTML file (created from [app/index.tmpl.html](./app/index.tmpl.html))\n  * `userData` - user application data (empty in clean package)\n    * `widgets` - custom widgets (empty in clean package)\n    * `templates` - custom templates (empty in clean package)\n      * `pages` - custom pages (empty in clean package)\n\n#### RPM package\n\nRPM package has all the files present in tarball package. In addition all files from [packaging/files](./packaging/files) directory are installed. \n\n### Docker images\n\nStage uses two docker images - the backend app server, and the frontend static files server.\nYou can use them together with any Cloudify Manager RESTService and database, however usually you will want a nginx proxy in front.\n\nTo build them, refer to:\n* [The frontend Dockerfile](./Dockerfile)\n* [The backend Dockerfile](./Dockerfile.backend)\n\n## Tests\n\nGo to [test/README.md](./test/README.md).\n\n## Documentation \n\n1. Source Code documentation\n   * [Frontend](./app/README.md) - client-side of the application\n   * [Backend](./backend/README.md) - servers-side of the application\n   * [Widgets](./widgets/README.md) - widgets documentation (including custom widget development)\n   \n2. Documentation way-of-work\n   \n   See [this](./doc/README.md) to learn how this project is documented.\n\n## Support\n\nTo get community support join [Cloudify Community Slack](https://cloudify.co/slack/). \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudify-cosmo%2Fcloudify-stage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudify-cosmo%2Fcloudify-stage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudify-cosmo%2Fcloudify-stage/lists"}