How rushikeshmalgan/brocode works
Purpose and Runtime
broCodes is a Bun/TypeScript monorepo containing a terminal CLI application. The application is implemented with TSX-based terminal UI components and launched from packages/cli/src/index.tsx; package/runtime metadata is in package.json and packages/cli/package.json.
Application Entry and Composition
packages/cli/src/index.tsx is the CLI entry point and root render/bootstrap boundary. It composes the terminal screen from primary layout components:
• packages/cli/src/components/header.tsx
• packages/cli/src/components/input-bar.tsx
• packages/cli/src/components/status-bar.tsx
packages/cli/src/components/border.tsx provides the shared visual framing primitive around terminal regions.
Provider Layer
The provider hierarchy centralizes cross-cutting application state and behaviors before UI components consume them. packages/cli/src/providers/index.tsx is the aggregation boundary for:
• Dialog state and dialog rendering: packages/cli/src/providers/dialog/index.tsx
• Keyboard event handling/shortcut dispatch: packages/cli/src/providers/keyboard-layer/index.tsx
• Theme selection and propagation: packages/cli/src/providers/theme/index.tsx
• Toast contracts: packages/cli/src/providers/toast/types.ts
This separates global interaction state from the screen-level component tree.
Command Menu Flow
The command menu is the main action-discovery and command-selection subsystem. packages/cli/src/components/commands-menu/index.tsx hosts the menu; commands are defined in packages/cli/src/components/commands-menu/commands.tsx, filtered through packages/cli/src/components/commands-menu/filter-commands.ts, and controlled by packages/cli/src/components/commands-menu/use-command-menu.ts.
Control flow is keyboard/input driven: keyboard-layer events open or navigate the menu, filtering narrows the command collection, and command selection invokes application actions such as opening dialogs or changing UI state.
Dialog and Search Boundaries
Modal interactions are modeled independently from the base screen. packages/cli/src/components/dialogs/index.tsx selects or renders concrete dialogs, including packages/cli/src/components/dialogs/theme-dialog.tsx. Dialog state is mediated through packages/cli/src/providers/dialog/index.tsx and its typed contract in packages/cli/src/providers/dialog/types.ts.
packages/cli/src/components/dialog-search-list.tsx is a reusable search/list interaction surface, likely shared by dialog-like selection experiences such as theme selection and command discovery.
Theme System
Theme data is defined at packages/cli/src/theme.ts; the theme provider at packages/cli/src/providers/theme/index.tsx owns active-theme state and makes it available to terminal UI components. The theme dialog provides the user-facing mutation path, creating a clear flow: command or keyboard action → dialog provider → theme dialog → theme provider → rerendered components.
Infrastructure and External Boundaries
The repository uses Bun, indicated by bun.lock, with TypeScript project configuration shared through tsconfig.base.json and specialized in packages/cli/tsconfig.json. No backend service, database, HTTP client, or external API integration is present in the supplied tree; the architectural boundary is a local, interactive terminal process.
Components 21
Terminal Runtime
Local Bun-powered interactive process.
- CLI bootstrap · Root render and composition boundary.
packages/cli/src/index.tsx - Bun runtime
package.json
Terminal UI
- Screen layout
packages/cli/src/index.tsx - Header
packages/cli/src/components/header.tsx - Input bar
packages/cli/src/components/input-bar.tsx - Status bar
packages/cli/src/components/status-bar.tsx - Border primitive · Shared terminal-region framing.
packages/cli/src/components/border.tsx
Providers & State
- Provider aggregation · Installs shared interaction and state layers.
packages/cli/src/providers/index.tsx - Keyboard layer · Dispatches shortcuts and keyboard interaction.
packages/cli/src/providers/keyboard-layer/index.tsx - Dialog provider · Mediates dialog state and rendering.
packages/cli/src/providers/dialog/index.tsx - Dialog contracts
packages/cli/src/providers/dialog/types.ts - Toast contracts
packages/cli/src/providers/toast/types.ts - Theme provider · Owns the active terminal theme.
packages/cli/src/providers/theme/index.tsx
Command Menu
- Command menu · Action discovery and selection surface.
packages/cli/src/components/commands-menu/index.tsx - Menu controller · Controls menu state and navigation.
packages/cli/src/components/commands-menu/use-command-menu.ts - Command definitions
packages/cli/src/components/commands-menu/commands.tsx - Command filter · Narrows commands from input.
packages/cli/src/components/commands-menu/filter-commands.ts
Dialogs & Theme
- Dialog renderer · Selects and renders concrete dialogs.
packages/cli/src/components/dialogs/index.tsx - Theme dialog · User-facing theme selection.
packages/cli/src/components/dialogs/theme-dialog.tsx - Search list · Reusable searchable selection list.
packages/cli/src/components/dialog-search-list.tsx - Theme definitions
packages/cli/src/theme.ts
Connections 24
- Bun runtime → CLI bootstrap: launches
- CLI bootstrap → Provider aggregation: wraps with
- CLI bootstrap → Screen layout: renders
- Screen layout → Header: composes
- Screen layout → Input bar: composes
- Screen layout → Status bar: composes
- Screen layout → Border primitive: frames regions with
- Provider aggregation → Keyboard layer: installs
- Provider aggregation → Dialog provider: installs
- Provider aggregation → Theme provider: installs
- Dialog provider → Dialog contracts: uses
- Provider aggregation → Toast contracts: exposes
- Keyboard layer → Command menu: opens and navigates
- Input bar → Command menu: drives
- Command menu → Menu controller: controlled by
- Command menu → Command definitions: lists
- Command menu → Command filter: filters through
- Command definitions → Dialog provider: invokes dialogs
- Dialog provider → Dialog renderer: renders
- Dialog renderer → Theme dialog: selects
- Theme dialog → Search list: uses
- Theme dialog → Theme provider: changes active theme
- Theme provider → Theme definitions: reads definitions
- Theme provider → Screen layout: propagates theme