About VERIFI

August 4, 2026 ยท View on GitHub

Build Status Latest Release Issues Pull Requests Contributors Last Commit

VERIFI is a tool that is a member of Oak Ridge National Laboratory's Industrial Resources suite of applications. It can be used to to track, visualize, and analyze facility utility data in industrial settings. Development plans for the tool are to incorporate, modernize and expand upon several existing DOE tools (EnPI, EnPI Lite, Energy Footprint Tool, Plant Energy Profiler), most of which currently are excel-based or excel-add ons.

VERIFI, like it's sibling applications MEASUR and JUSTIFI, is developed as a web application but is also packaged and distributed as an installable desktop application.

The latest web version of the application can be found at https://verifi.ornl.gov

Installable versions of the application can be found under the releases section of this repository.

Alternatively, downloads and additional information about ORNL's suite of tools can be found at ORNL's Industrial Resources site.

๐Ÿ“‹ Project Board

Track our progress and planned work on the VERIFI GitHub Project Board.

Details For Developers

This tool is written in the Angular framework (TypeScript) and uses Electron for cross-platform desktop builds.

If you plan to contribute code changes to this repository, please review the contributing guidelines first.

AI-assisted contributors should also start with the repository agent guide, architecture overview, and agent documentation index.

Getting Started

  • We are using NodeJS nodejs.org. See package.json for currently supported version.
  • This project was generated with Angular CLI, and is typically updated to latest versions of angular as often as is reasonable.
  • To install all required packages from the lockfile: npm ci
  • When developing for web, run npm run start for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Electron Development

  • It is recommended to develop using the web version of the application unless you want to add an Electron specific feature.
  • When developing in the Electron window, use npm run build-watch and a re-build will trigger on save of changes.
  • After the app is built using the command above, you will have to start the Electron app in a second terminal window. To start the Electron app use npm run electron. You will have to kill and restart the Electron app after changes are made.

Build

  • Built artifacts will be stored in the /dist directory.
  • General build for Electron: npm run build
  • Production Web Build: npm run build-prod
  • Production Electron Build: npm run build-prod-electron

Testing

VERIFI uses Vitest for fast unit tests and Playwright with Chromium for tests that require native browser APIs such as IndexedDB and Web Workers.

  • Run fast unit tests in watch mode: npm test
  • Run fast unit tests once: npm run test:ci
  • Install Chromium before running browser tests locally: npx playwright install chromium
  • Run browser tests in Chromium: npm run test:browser
  • Run browser tests once in headless Chromium: npm run test:browser:ci
  • Run the complete CI test suite: npm run test:all:ci
  • Generate informational scoped coverage: npm run test:coverage

Fast tests use the .spec.ts suffix. Tests that require a real browser use .browser.spec.ts and are kept out of the fast jsdom suite.

Behavior-changing pull requests should add the lowest-cost meaningful automated coverage, or document why focused manual evidence is more appropriate. Creation-only specs do not count as coverage. Pull requests targeting master or develop run both the fast and browser suites in GitHub Actions.

See the testing guide for the risk-based pull-request policy, test-layer decision table, coverage policy, and executable examples.

Native Installers

  • npm run dist will create Electron installers for your operating system.
  • Installer will be created in an ./output/ directory.

Mac Code Signing

  • Run electron-builder -m to build and sign your mac dmg.

  • Run xcrun altool --notarize-app --primary-bundle-id "com.ornl.verifi" --username "<APPLE USERNAME>" --password "<APPLE APP PASSWORD>" --file VERIFI-x.x.x-x.dmg -itc_provider "<CERT UID>" --verbose to notarize your signed dmg.

  • Run xcrun stapler staple VERIFI-x.x.x-x.dmg to staple the notarization.

Note: APPLE APP PASSWORD is an app-specific password (not your Apple ID password).

License

This project is licensed under the MIT License. See LICENSE for details.