Welcome. We maintain a docusaurus site containing all the details of the project. Why not get started there:
https://vuu.finos.org/desktop/docs/introduction/intro
This repo contains the source code for the Vuu server as well as a suite of UI library packages. You can use some or all of these UI packages when building a UI application that consumes data from a Vuu server. Additionally, there is a sample application with both a Vuu server implementation and a UI. The instructions below provide guidance for building and starting both.
Note: the Vuu server includes an http server, this hosts both a websocket endpoint and a https rest endpoint, both of which are required to establish a client Vuu session (e.g. from a UI).
When the build for the UI sample application is run, the static files created by the build are written to the deployed_apps folder. As a convenience for runnng the sample application, the Vuu server can also serve these static files. This is handy for a demo or when experimenting with the code, but is not intended for production use. By default, the Vuu server sample implementation is configured to serve these files from the deployed_apps folder (the webRoot property is used for this). This means that out of the box, the sample application can be run buy following the instructions below.
The UI build should be run before starting up the Vuu server, as the server is configured to use the deployed_apps folder as a webRoot, and that folder is only created when the UI build runs.
See the Docs for Java versions and dependencies you need.
#In your favourite code directory...
git clone https://github.com/finos/vuu.git
#cd into the repository
cd vuu
#run the maven compile step
mvn install
#cd into vuu, child in repo
cd example/main
#The server can now be started on your machine
mvn exec:execthis should be the same as Linux & macos just with windows adjusted pathsYou may prefer to run the backend using the IntelliJ IDE, if so, you will need to follow the Client Installation above to ensure that the project has built correctly.
- Install the Scala plugin: file -> settings -> plugins
- Set project SDK version to 17: file -> project structure -> select an SDK -> require version 17
- Enable 'Use plugin registry': file -> settings -> build, execution, deployment -> Maven
- Open Maven tab on the right and click install on vuu-parent -> lifecycle -> install
- In the terminal, navigate to
vuu-ui/sample-apps/app-vuu-example- Run
npm install
npm run build- In IntelliJ, select 'SimulMain' config and click run
- If you get a 'certificate-unknown' error, set 'Allow invalid certificates for resources loaded from localhost' to 'Enabled' in your chrome settings
The UI scripts all run from the vuu/vuu-ui directory.
#from top-level vuu repo (not vuu child directory in repo)
cd vuu-ui
npm install
npm run build
npm run build:appThe first build step (npm run build) builds the UI library packages, the packages are written to the dist folder.
The second step (npm run build:app) builds the sample application. Application bundles are written to deployed_apps. The UI library packages are dependencies of the application.
You can now open the demo app in your browser at https://127.0.0.1:8443/index.html
Alternative demo configuration - build,deploy and run the Vuu server and Sample UI application independently.
While it is initially very convenient to be able to serve the Sample UI application directly from the Vuu server, in real-world scenarios the Vuu server is likely to be deployed independently of any UI. The demo can also be run in such a mode. The sample application has a modular architecture. The core functionality is driven by metadata provided by the connected Vuu server. This means it can be useful to run the sample application in a more realistic deployment setup or even when a real-world Vuu server implementation is under development. The sample application can be used to display and query the data tables from a running Vuu server instance. (This is only possible of course, with a vuu server instance that is not locked down for production with a full authentication solution).
To run the sample application this way, first deploy and start a Vuu server, then run the client build as described above. The Vuu server can be on a different machine , it will not be used to serve the client UI code.
Next use the following script to serve the sample UI application, it assumes the app is deployed at ./deployed_apps. For the purposes or this illustration, we assume that the Vuu server is running on the local machine, on the default ports, though this is not required.
npm run launch:app -- --authurl https://localhost:8443/api --wsurl wss://localhost:8090/websocket
A Login screen will be displayed. The authurl will be used to sign in to the Vuu server with the credentials entered and will yield an auth token. The auth token will then be used to open a websocket connection at wsurl. This works with the default example implementation of the Vuu server, because it performs no checks on the login credentials. The UI application is served by a local http server which proxies the auth request to the Vuu server to avoid CORS issues. Cross domain websocket requests are not subject to same domain restrictions.
Work In Progress!
For any questions, bugs or feature requests please open an issue.
To submit a contribution:
- Fork it (https://github.com/finos/vuu/fork)
- Create your feature branch (
git checkout -b feature/fooBar) - Read our contribution guidelines and Community Code of Conduct
- Commit your changes (
git commit -am 'Add some fooBar') - Push to the branch (
git push origin feature/fooBar) - Create a new Pull Request
NOTE: Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool (or EasyCLA). Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA.
Need an ICLA? Unsure if you are covered under an existing CCLA? Email help@finos.org
Copyright 2022 venuu-io
Distributed under the Apache License, Version 2.0.
SPDX-License-Identifier: Apache-2.0