Monorepo for Boundary UIs and addons.

Overview

Boundary UI Monorepo

Validate Monorepo

This monorepo contains multiple projects, including UIs and addons, used by Boundary.

This top-level repository provides limited common tasks, such as installation and commit assistance. However, most tasks must be executed from within a subproject, e.g. running or testing.

Table of Contents generated with DocToc

Prerequisites

You will need the following things properly installed on your computer.

Installation

  • git clone this repository
  • cd boundary-ui
  • yarn install

Yarn Commands

List of available project commands. yarn run

Command Description
build Builds Admin UI.
test Runs tests in CI mode.
commit Replaces git commit, ensures compliance, audit, lint, and test checks pass before commit is allowed and normalizes commit messages across authors.
lint Runs ember-template-lint on all of the hbs, js, and sass files.
compliance:audit Checks for issues using yarn audit with moderate and above criticality.
compliance:licenses Checks that all dependencies have OSS-compatible licenses.
doc:toc Automatically generates a table of contents for the README file.

Contributing

Branching

We follow GitHub Flow.

Building ToC

To autogenerate a ToC (table of contents) for this README, run yarn doc:toc. Please update the ToC whenever editing the structure of README.

Building Admin UI for Production

See ui/admin/README.md Building for Production for more information on how to build the Admin UI. Be sure to set build-related environment variables as necessary for your target environment, as described in the Admin UI readme.

To quickly produce a production build of Admin UI, run from this folder:

yarn install
yarn build

Assets are saved to ui/admin/dist/.

Building with a Container

Optionally, you may build the UI within a container. Execute the following command:

docker-compose -f docker-compose-embedding.yml run build

Assets are saved to ui/admin/dist/.

Building Desktop UI for Production

See ui/desktop/README.md Building for Production for more information on how to build the Desktop UI. Be sure to set build-related environment variables as necessary for your target environment, as described in the Desktop UI readme.

To quickly produce a production build of Desktop UI, run from this folder:

yarn install
yarn build:ui:desktop

In windows, UI is generated using docker to provide a stable UI across platforms.

yarn install
docker-compose -f docker-compose-embedding.yml run build-desktop-production 
yarn build:ui:desktop:app

To provide a signing identify for macOS build, use BOUNDARY_DESKTOP_SIGNING_IDENTITY environment variable to set signing certificate name (e.g Developer ID Application: * (*)) when building desktop app using yarn build:ui:desktop:app.

Assets are saved to ui/desktop/electron-app/out/make/. DMG packaged desktop UI is available at asset location as boundary.dmg. EXE archived desktop UI is available at asset location under zip folder.

Connect Boundary UI to Boundary local instance

This describes how to connect local Boundary UI to your local instance of Boundary.

This assumes you already have up and running a Boundary dev instance in your local environment with a listener 127.0.0.1:9200 (default behaviour). Learn how to start a local Boundary dev instance.

For admin

This assumes you are within boundary-ui/ui/admin.

You will need to turn off mirage, tell the UI where to find Boundary and run it: $ ENABLE_MIRAGE=false API_HOST=http://localhost:9200 yarn start.

Following terminal instructions, open in your browser: http://localhost:4200/.

Once you open the UI you will see the login screen, authenticate using generated admin login name and password.

For desktop

This assumes you are within boundary-ui/ui/desktop.

You will need to turn off mirage and run it: $ ENABLE_MIRAGE=false yarn start:desktop.

In login screen, authenticate using generated admin login name and password.

Enter the origin of your Boundary dev instance, by default is: http://localhost:9200.

Committing

Instead of the default git commit, we prescribe a custom command that ensures linting and other checks pass before a commit may be completed. It also ensures that all contributors author consistent commit messages. To get started with a commit, stage your files as usual. Then run yarn commit and follow the on-screen instructions to author your message.

License Checking

The licenses of dependencies are checking against an allowlist before every commit. This helps catch undesirable licenses sooner (e.g. GPL). If your commit fails due to a non-allowlisted license, you may add it to the allowlist in package.json as long as it is not a GPL variant or UNLICENSED. The change will be verified upon PR. GPL variants and UNLICENSED dependencies will not be accepted.

Comments
  • Make UI reverse proxy path compatible

    Make UI reverse proxy path compatible

    Hi, I'm running the boundary in my infrastructure, where I have a reverse proxy and an FQDN(myorg.com) with a valid SSL certificate. So theoretically I should be able to access boundary UI and the API server behind the proxy with a path like myorg.com/boundary, which will offload tasks like maintaining another domain/SSL etc. API will work with myorg.com/bounday but UI won't; because when the initial request for /index.html is passed, the response has all resources pointing to the root path /style.css rather than /boundary/style.css which will pass the request to another root ( because proxy will forward all request to /boundary to my boundary instance, and / to default app)

    So if there is any way to prepend the proxy_path then the reverse proxy can pass the requests to /boundary/<resource>

    image

    ui desktop admin 
    opened by rjshrjndrn 12
  • feat: 🎸 Auto-populate hcp cluster id

    feat: 🎸 Auto-populate hcp cluster id

    ✅ Closes: ICU-6200

    :tickets: Jira ticket

    Description

    This PR attempts at a front end only solution for auto-populating the HCP cluster ID. Ideally we would have an API we could hit that could return what the current cluster is and any other meta data but in the absence of that, we can attempt a best effort solution. This currently just pulls the guid from the URL and auto-populates the cluster ID.

    Some other ideas I considered was passing a query string or saving the ID from the cluster in local storage from the HCP side but that requires navigation from the portal or a specific link; this is the simplest way to auto populate the ID from just a normal url.

    There was some talk in the future (see this thread) that we might allow CNAME-ing so customers will have more friendly URLs. This wouldn't work in those scenarios but it would just revert to the current functionality and the user would have to manually fill it out.

    Cleaned up the form: there was an unused @cancel and I had to pull the route action up to a parameter so it can be integration-tested easier.

    Unfortunately this can't be easily tested but I included some integration tests to show what kind of URLs it will populate. Take a look here if you want to play around with the regex yourself or want an explanation of it.

    ui addons admin 
    opened by ZedLi 9
  • feat: 🎸 Re-enabling footer for Boundary Admin UI

    feat: 🎸 Re-enabling footer for Boundary Admin UI

    Re-enable global footer and fix styling

    ✅ Closes: ICU-6454

    :tickets: Jira ticket

    Description

    The global footer should be visible to bring Boundary into alignment with other products

    :technologist: Admin preview

    :rose: Rose preview

    :desktop_computer: Desktop preview

    Screenshots (if appropriate):

    image image

    enhancement ui addons addons/styles admin styles-addon 
    opened by dvonanderson 8
  • libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)

    libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)

    On a fresh build in Linux the ember app tries to start but then immediately reports an error and crashes. Not what version of libva is expected but mine worked earlier:

    Your Ember app (or other code) in the main window has crashed.
    This is a serious issue that needs to be handled and/or debugged.
    libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
    libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
    libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
    [93416:1226/161547.973073:FATAL:gpu_data_manager_impl_private.cc(415)] GPU process isn't usable. Goodbye.
    

    vainfo:

    $ vainfo
    libva info: VA-API version 1.13.0
    libva info: Trying to open /usr/lib64/dri/nvidia_drv_video.so
    libva info: Found init function __vaDriverInit_1_12
    libva info: va_openDriver() returns 0
    vainfo: VA-API version: 1.13 (libva 2.13.0)
    vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
    vainfo: Supported profile and entrypoints
          VAProfileMPEG2Simple            : VAEntrypointVLD
          VAProfileMPEG2Main              : VAEntrypointVLD
          VAProfileMPEG4Simple            : VAEntrypointVLD
          VAProfileMPEG4AdvancedSimple    : VAEntrypointVLD
          <unknown profile>               : VAEntrypointVLD
          VAProfileH264Main               : VAEntrypointVLD
          VAProfileH264High               : VAEntrypointVLD
          VAProfileVC1Simple              : VAEntrypointVLD
          VAProfileVC1Main                : VAEntrypointVLD
          VAProfileVC1Advanced            : VAEntrypointVLD
    
    opened by jboero 8
  • Upgrade to Flight icons

    Upgrade to Flight icons

    This PR replaces structure icons and Boundary-custom icons with Flight, the new icon system from HashiCorp. All known instances are migrated and structure-icons is removed as a dependency.

    Since Flight is not yet released in an easy Node-consumable package, icons are manually copied into Rose. These are namespaced (e.g. flight/plus-circle-16) to ensure a simple migration path when Flight is officially released.

    Please review the Vercel deployments. Screenshot samples below.

    Screenshot 2021-08-18 at 13 37 49 Screenshot 2021-08-18 at 13 37 57 Screenshot 2021-08-18 at 13 37 42 Screenshot 2021-08-18 at 13 38 13 Screenshot 2021-08-18 at 13 38 18 ui addons desktop admin styles-addon 
    opened by randallmorey 8
  • Add Storybook metadata.json

    Add Storybook metadata.json

    WAS:

    The Boundary /metadata.json was being read as HTML like the Vault metadata.json in this pic. That caused the Boundary Storybook to not be read in Storybook composition (like the Vault one has the error rn on http://design-system-website.vercel.app/)

    image


    IS:

    WIth the Boundary /metadata.json, Boundary is visible in external Storybook.

    image


    Follow-on to https://github.com/hashicorp/boundary-ui/pull/798 and replaces closed https://github.com/hashicorp/boundary-ui/pull/800

    addons styles-addon 
    opened by amyrlam 7
  • New Header Component

    New Header Component

    Header component provides ability to configure a logo, navigation items, and settings.

    menu menu-small-screen

    @randallmorey , I was thinking of wrapping rose-icon as logo component, with buttons being provided in navigation-item to give the component more control. Thoughts?

    opened by gsusmi 7
  • chore: display sync interval seconds on host-set plugin forms

    chore: display sync interval seconds on host-set plugin forms

    This pr displays sync_interval_seconds on host-set Azure and AWS forms

    Azure: https://boundary-ui-ej4eghf2c-hashicorp.vercel.app/scopes/s_xk1i4dk50v2/host-catalogs/host-catalog-id-3/host-sets/host-set-id-11

    AWS: https://boundary-ui-ej4eghf2c-hashicorp.vercel.app/scopes/s_xk1i4dk50v2/host-catalogs/host-catalog-id-5/host-sets/host-set-id-15 Screen Shot 2022-03-17 at 12 27 15 PM

    Screen Shot 2022-03-17 at 12 27 11 PM ui addons admin 
    opened by DhariniJeeva 6
  • Show user

    Show user "account name" wherever users are listed (if possible)

    This PR addresses feedback that, when an OIDC user has no associated name, it is displayed as a bare ID in user listings. Users do come with information about their primary account: email, full name, and login_name. We now display this account name when possible. Closes hashicorp/boundary#1467.

    users-index group-members group-add-members role-principals role-add-principals ui addons admin api-addon styles-addon 
    opened by randallmorey 6
  •  New Rose Component: Card Link

    New Rose Component: Card Link

    Component:

    card-link-component

    Component usage in project overview page:

    projects-overview-with-card-link-component

    Simple card component to wrap anchor tag with title and description.

    TODO:

    • [x] Add subtitle - to be able to show project id in card
    opened by gsusmi 6
  • chore: 🤖 Update electron to latest version

    chore: 🤖 Update electron to latest version

    :tickets: Jira ticket

    Description

    Upgraded electron to 21.2.0 Went through the stable releases and breaking changes to make sure there's nothing that affects us.

    The original ticket was originally for testing each major version but with electron's current versioning system (a new major version bump ~2 months), it would be prohibitive to do full testing for each major version right now, especially as most major versions don't have that many significant changes. We can jump to the latest and make sure everything works and discuss how we would like to handle keeping electron up to date for the future (maybe use dependabot?)

    Tested with windows and m1 mac builds that all the normal functionality works.

    ui desktop 
    opened by ZedLi 5
  • Chore/cleanup filter attribute

    Chore/cleanup filter attribute

    Description

    This PR aims to cleanup the last usage of attributes_{field} for error handling.

    The issue with using filter as the field name is it conflicts with the filter function for arrays. Therefore I renamed them to filter_string to avoid the collision and serialize it back to filter.

    Also open to different naming suggestions.

    ui addons admin api-addon 
    opened by ZedLi 1
  • Icu 6680 UI code editor for secrets

    Icu 6680 UI code editor for secrets

    :tickets: Jira ticket

    Description

    This is the code editor that will be used for editing the json_object attribute for a JSON credential. This is my first time creating a component so please don't hold back on the feedback. Below is a video walking through the 4 different states this editor can be in.

    1. Actual code editor during initial creation of credential
    2. Detail screen view with message confirming secret was saved
    3. Edit screen view with button to take the user back to the code editor
    4. Editing screen view but the actual code editor now

    This SecretEditor is currently only going to be used within the JSON Credential form component so it lives very close to it for that reason.

    Usage:

      <Form::Credential::Json::SecretEditor
        @isNew={{@model.isNew}}
        @isEditing={{form.isEditable}}
        @value={{@model.json_object}}
        @onInput={{this.onInput}}
      />
    

    NOTE: I had to mock the JSON form to test this component but it does not exist in this branch. So pulling this branch and testing locally won't work without some mocking.

    Screenshots (if appropriate):

    https://user-images.githubusercontent.com/29386339/203649712-5f25a53d-e633-4d66-bb64-48617397e437.mp4

    ui addons admin styles-addon 
    opened by cameronperera 1
  • feat: 🎸 create form for json credentials

    feat: 🎸 create form for json credentials

    ✅ Closes: ICU-6682

    :tickets: Jira ticket

    Description

    Form for creating json credentials Just a draft for now because I need to add code editor, info field comp., and hds radio cards. :technologist: Admin preview

    ui addons admin api-addon 
    opened by lisbet-alvarez 1
  • feat: 🎸 Custom information field

    feat: 🎸 Custom information field

    ✅ Closes: ICU-6881 ICU-6957

    :tickets: ICU-6881, ICU-6957

    Description

    Create custom information component for views that need read-only information listed.

    :technologist: Admin preview

    Screenshots (if appropriate):

    Previous look gave us a disabled radio card.

    image

    New info-field component.

    image

    If needed we can add a icon next to the label text

    image ui ui/admin/app admin 
    opened by dvonanderson 3
  • refactor: 💡 Upgrade Ember to 4.4 LTS within addons/api

    refactor: 💡 Upgrade Ember to 4.4 LTS within addons/api

    Description

    Be aware:

    • This merges to refactor-upgrade-ember-4 long living branch.
    • This PR does NOT pass the test at the moment. Working on resolving an uknown Ember issue.
    addons api-addon 
    opened by calcaide 1
Releases(v1.5.0)
Owner
HashiCorp
Consistent workflows to provision, secure, connect, and run any infrastructure for any application.
HashiCorp
:chart_with_upwards_trend: Monitors Go MemStats + System stats such as Memory, Swap and CPU and sends via UDP anywhere you want for logging etc...

Package stats Package stats allows for gathering of statistics regarding your Go application and system it is running on and sent them via UDP to a se

Go Playgound 163 Nov 10, 2022
James is your butler and helps you to create, build, debug, test and run your Go projects

go-james James is your butler and helps you to create, build, debug, test and run your Go projects. When you often create new apps using Go, it quickl

Pieter Claerhout 56 Oct 8, 2022
GoThanks automatically stars Go's official repository and your go.mod github dependencies, providing a simple way to say thanks to the maintainers of the modules you use and the contributors of Go itself.

Give thanks (in the form of a GitHub ★) to your fellow Go modules maintainers. About GoThanks performs the following operations Sends a star to Go's r

psampaz 114 Nov 21, 2022
A simple Cron library for go that can execute closures or functions at varying intervals, from once a second to once a year on a specific date and time. Primarily for web applications and long running daemons.

Cron.go This is a simple library to handle scheduled tasks. Tasks can be run in a minimum delay of once a second--for which Cron isn't actually design

Robert K 215 Nov 19, 2022
Library to work with MimeHeaders and another mime types. Library support wildcards and parameters.

Mime header Motivation This library created to help people to parse media type data, like headers, and store and match it. The main features of the li

Anton Ohorodnyk 25 Nov 9, 2022
The new home of the CUE language! Validate and define text-based and dynamic configuration

The CUE Data Constraint Language Configure, Unify, Execute CUE is an open source data constraint language which aims to simplify tasks involving defin

null 3.2k Nov 28, 2022
Hack this repo and add your name to the list above. Creativity and style encouraged in both endeavors.

Hack this repo and add your name to the list above. Creativity and style encouraged in both endeavors.

Danger 2 Oct 1, 2021
A comprehensive training, nutrition, and social platform for martial artists and combat sport athletes

COMHRAC Comhrac (Gaelic for "Combat") is a comprehensive training, nutrition, and social platform for martial artists and combat sport athletes. Devel

Jack Hegarty 0 Oct 17, 2021
Purpose: dump slack messages, users and files using browser token and cookie.

Slack Dumper Purpose: dump slack messages, users and files using browser token and cookie. Typical usecase scenarios: You want to archive your private

Rustam 250 Nov 21, 2022
Package buildinfo provides basic building blocks and instructions to easily add build and release information to your app.

Package buildinfo provides basic building blocks and instructions to easily add build and release information to your app. This is done by replacing variables in main during build with ldflags.

null 1 Nov 14, 2021
Phalanx is a cloud-native full-text search and indexing server written in Go built on top of Bluge that provides endpoints through gRPC and traditional RESTful API.

Phalanx Phalanx is a cloud-native full-text search and indexing server written in Go built on top of Bluge that provides endpoints through gRPC and tr

Minoru Osuka 292 Nov 18, 2022
Highly extensible, customizable application launcher and window switcher written in less than 300 lines of Golang and fyne

golauncher A go application launcher A simple, highly extensible, customizable application launcher and window switcher written in less than 300 lines

Ettore Di Giacinto 45 Aug 21, 2022
Go package and associated command line utility to generate random yet human-readable names and identifiers

namegen | What's this? Go package and associated command line utility to generate random yet human-readable names and identifiers. Somewhat inspired b

Anand Varma 6 Oct 19, 2022
An application dedicated to the trivial and boring task of meal planning 📅 and generating shoppings list 🛒.

An application dedicated to the trivial and boring task of meal planning ?? and generating shoppings list ??.

Anders Wiggers 1 Mar 1, 2022
Proc-peepin - Capture process cpu and memory and send it off to influx

proc-peepin Capture process cpu and memory and send it off to influx Running loc

Brennon Loveless 0 Feb 13, 2022
Go-keymap - Generate keymap.c, layers.h and keymap.svg from visual keymaps defined through keymaps.json and .layer files

generating keymap.c This utility can generate a keymap.c, layers.h and keymap.sv

Jur93n 1 Feb 15, 2022
Antch, a fast, powerful and extensible web crawling & scraping framework for Go

Antch Antch, inspired by Scrapy. If you're familiar with scrapy, you can quickly get started. Antch is a fast, powerful and extensible web crawling &

null 240 Nov 9, 2022
Easily create & extract archives, and compress & decompress files of various formats

archiver Introducing Archiver 3.1 - a cross-platform, multi-format archive utility and Go library. A powerful and flexible library meets an elegant CL

Matt Holt 3.7k Nov 22, 2022
captcha of base64 and diversity

A flexible and various captcha package Base64captcha supports any unicode character and can easily be customized to support Math Chinese Korean Japane

mojocn 1.6k Nov 22, 2022