Skip to content

Firebot V6 Design Refinement (08 2022)

Erik Bigler edited this page Aug 7, 2022 · 2 revisions

Package updates since design doc:

  • Electron v12 -> v20
  • Drop blueprintjs

Backend:

  • Use internal HTTP API & Websocket to communicate with frontend to make translation to web hosted version easier

    • Authenticate internal api used by UI
    • Use Fastify
  • NestJS

    • Reject will look into the tooling for this
  • Adopt some level of domain driven design?

    • Yes, but don't get into the weeds.
    • Define our ubiquitous language
    • Determine app layers
      • API
      • Domain
      • Infrastructure

Variables:

  • make event data more friendly for variables
  • make fancy text field/area component that supports variables in a more intuitive fashion and saves text + variables as json

Data storage:

  • configuration data: json files
    • app settings
    • trigger configurations
  • larger databases: fast, embeddable database. Sqlite3 as last resort if no tenable alternatives are found
    • viewer database
    • stats database?

Frontend:

  • Drop blueprintjs. We can just roll our own custom react UI components built entirely with TailwindCSS + Headless.UI.

  • Frontend shouldn't access hard disk or interact with Electron APIs at all. It should act as a traditional frontend client.

  • Consolidate all pages for triggers (Commands, Events, Timers, Preset Lists, etc) under a single pages called "Triggers"

    • Don't consolidate into single page, instead create some sort of concept of global tags/collections. Regroup when we are ready to tackle this as we don't want to cause confusion with sets vs tags vs collections
  • Don't use fontawesome paid icons anymore. Free/opensource icon sets only.

    • material design icons
    • heroicons
    • fontawesome brand / free icons

Actions:

  • Rename Effects to Actions
  • Improve UI for actions, especially for nested ones like Random, Sequential, etc.

Misc:

  • Avoid modals, especially nested ones.
  • Support command line arguments
    • to set data dir (see app.setPath in Electron docs)
    • to run headless
    • future networking options
  • make sure to keep streaming platform types abstracted so we can more easily support multiple platforms
  • unicode everything
  • Move Emulate Control action + Robot.js into a plugin to simplify setup of main codebase
Clone this wiki locally