Initial contents
* Basic .gitignore * specification folder with * README.md * v1_problems.md * v2_scope.md * v2_tech_stack.md
This commit is contained in:
parent
d5fef7e868
commit
fb88a0c12d
1 changed files with 245 additions and 0 deletions
59
specification/v1_problems.md
Normal file
59
specification/v1_problems.md
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# Inspector V1 Problems
|
||||
|
||||
### [Brief](README.md) | V1 Problems | [V2 Scope](v2_scope.md) | [V2 Tech Stack](v2_tech_stack.md)
|
||||
|
||||
## Table of Contents
|
||||
* [Monolithic components](#monolithic-components)
|
||||
* [Monolithic hooks](#monolithic-hooks)
|
||||
* [Environment variable explosion](#environment-variable-explosion-)
|
||||
* [Disparate OAuth flows](#disparate-oauth-flows-)
|
||||
* [CLI version combined with UI version](#cli-version-combined-with-ui-version-)
|
||||
|
||||
## Monolithic components
|
||||
* Hard to read and maintain
|
||||
* Deeply custom:
|
||||
* Divs all the way down,
|
||||
* Strewn with hundreds of css classes
|
||||
### Solution
|
||||
* Make a kit of small, reusable components that are already styled for use anywhere in the app
|
||||
* Easier to reason about than inline-customized primitives
|
||||
* Minimize css for inline customization
|
||||
* Only pass state
|
||||
* Define functions to use as handlers rather than writing inline in code
|
||||
* Makes component instantiation markup smaller and easier to understand
|
||||
* Separates code from markup
|
||||
|
||||
## Monolithic hooks
|
||||
* E.g., `useConnection` is nearly 1k lines long
|
||||
|
||||
### Solution
|
||||
* Extract inline logic out to function libraries / classes that are easier to reason about and test in isolation
|
||||
|
||||
## Environment variable explosion
|
||||
* We have a configuration file but it is for servers, not things like request timeouts, etc
|
||||
* The addition of a new environment variable for everything someone wants to configure is problematic.
|
||||
* It’s easy to misspell the variable name and the names
|
||||
* Often not named in the best way
|
||||
* Lots of touch points to update for a new variable
|
||||
|
||||
### Solution
|
||||
* A JSON configuration file would be a better approach.
|
||||
* Hierarchical groups of settings could be used
|
||||
* Different files for different configurations
|
||||
* Expanding the format to include other settings
|
||||
* A configuration file could be validated, so misspelled keys would be caught at startup
|
||||
|
||||
## Disparate OAuth flows
|
||||
* We often have deviations of behavior between basic flow, quick flow, and guided flow
|
||||
* Each flow has independent code paths that can break or behave differently from the others
|
||||
|
||||
### Solution
|
||||
* Use a single auth flow mechanism that operates in all three states while supporting different configurations
|
||||
|
||||
## CLI version combined with UI version
|
||||
* Both projects are not kept in parity and do not share significant overlap as to belong in the same repo
|
||||
|
||||
### Solution
|
||||
* Refactor/extract the CLI Inspector to a separate repo for ongoing development
|
||||
|
||||
|
||||
Loading…
Reference in a new issue