bubble-web
==========

Bubble frontend VueJS web application

The initial basis for the bubble-web frontend was Jason Watmore's wonderfully well-written
[Vue/Vuex Registration and Login Example](https://jasonwatmore.com/post/2018/07/14/vue-vuex-user-registration-and-login-tutorial-example).
The [LICENSE](vue-vuex-registration-login-example-docs/LICENSE) and [README.md](vue-vuex-registration-login-example-docs/README.md)
files for this code are in the [vue-vuex-registration-login-example-docs](vue-vuex-registration-login-example-docs) directory.

# Install Requirements
If you've ever built the Bubble API jar, you have already run `npm install` and can skip this step.

If you're not sure, it's safe to run again. In the `bubble-web` directory, run:
```shell script
npm install
```

# Build the Webapp
Bubble uses [npm](https://www.npmjs.com/) and [webpack](https://webpack.js.org/)
to build the Bubble VueJS webapp.

In the `bubble-web` directory, run this to build the webapp:
```shell script
npm run build
```
The output files will be in the `bubble-web/dist` directory.

To perform a development build (for example, so the VueJS firefox/chrome plugin will work), run:
```shell script
npm run dev-build
```

# Run Webapp with a Remote Bubble API Server
To connect to a remote Bubble API, set the `BUBBLE_API` environment variable and run:
```shell script
BUBBLE_API=https://bubble-api.example.com/api npm run start
```
This will run a local web server where you can use the webapp. The local web server will
proxy API calls to the remote Bubble API server.

# Run Webapp with a Local Bubble API Server
To run the backend API locally, run this from the `bubble` directory (one level above `bubble-web`):
```shell script
./bin/run.sh
```
If this is the first time you have run the Bubble API, you will need to
[activate](https://git.bubblev.org/bubblev/bubble/src/branch/master/docs/activation.md) it.

## Enable Hot Reloading
If you have a Bubble API running locally, you can update the web UI without restarting
the server.

Set the `BUBBLE_ASSETS_DIR` environment variable in the Bubble environment file to be the
path to the `bubble-web/dist` directory, then start the API server. It will serve static
assets from that directory, so you can update the webapp just by overwriting those files
via `webpack`.

To enable hot reloading: in your `${HOME}/.bubble.env` file, add this line (fix the path
to point to the correct location of your `bubble-web/dist` directory):
```shell script
export BUBBLE_ASSETS_DIR=/path/to/bubble-web/dist
```

You can now use and test the frontend.

If you make changes to the frontend code, you can simply run `webpack` again and
reload the page in your browser.
