feat: Add more base component to UI
This commit is contained in:
116 files changed
+10379
-3473
No files matched your search
@@ -12,10 +12,13 @@ Quetza provides an architectural foundation that transforms feature development
|
||||
## The Core Philosophy
|
||||
|
||||
### The Problem
|
||||
|
||||
Traditional monolithic bots suffer from brittleness. Adding features requires modifying core logic, intertwining dependencies, and managing growing codebases that are difficult to test or change.
|
||||
|
||||
### The Solution
|
||||
|
||||
Quetza treats modules as plugins.
|
||||
|
||||
- **Zero-Touch Extension:** Add features by creating a folder. No core code modification required.
|
||||
- **Isolation:** Modules operate independently.
|
||||
- **Composition:** Enable/disable features by simply adding or removing module folders.
|
||||
@@ -31,28 +34,33 @@ Quetza consists of three primary layers:
|
||||
## Key Concepts
|
||||
|
||||
### Mental Model
|
||||
|
||||
To work effectively with Quetza, adopt this framework:
|
||||
|
||||
* **Modules are Plugins:** Independent folders discovered at runtime.
|
||||
* **Commands are Endpoints:** Stateless handlers acting like REST API endpoints.
|
||||
* **Events are Observers:** Reactive logic subscribing to Discord lifecycle events.
|
||||
* **Controllers are Services:** Stateful managers bridging the gap between stateless commands and persistent behavior.
|
||||
- **Modules are Plugins:** Independent folders discovered at runtime.
|
||||
- **Commands are Endpoints:** Stateless handlers acting like REST API endpoints.
|
||||
- **Events are Observers:** Reactive logic subscribing to Discord lifecycle events.
|
||||
- **Controllers are Services:** Stateful managers bridging the gap between stateless commands and persistent behavior.
|
||||
|
||||
### System Boundaries
|
||||
|
||||
Understanding constraints is critical for design:
|
||||
* **No Persistence:** In-memory state is lost on restart. External storage is required for persistence.
|
||||
* **No Inter-Module Communication:** Modules cannot directly invoke each other, ensuring loose coupling.
|
||||
* **No Dynamic Loading:** Modules are loaded only at startup.
|
||||
|
||||
- **No Persistence:** In-memory state is lost on restart. External storage is required for persistence.
|
||||
- **No Inter-Module Communication:** Modules cannot directly invoke each other, ensuring loose coupling.
|
||||
- **No Dynamic Loading:** Modules are loaded only at startup.
|
||||
|
||||
## Architectural Invariants
|
||||
|
||||
Quetza trades flexibility for predictability through strict conventions:
|
||||
|
||||
* **Convention-Based Discovery:** Modules *must* follow the directory structure (`module.ts`, `commands/`, `events/`) to be loaded.
|
||||
* **Single-Phase Initialization:** All loading happens before the Discord connection is established.
|
||||
* **Interface Compliance:** All commands and events must export specific interfaces to be registered.
|
||||
- **Convention-Based Discovery:** Modules _must_ follow the directory structure (`module.ts`, `commands/`, `events/`) to be loaded.
|
||||
- **Single-Phase Initialization:** All loading happens before the Discord connection is established.
|
||||
- **Interface Compliance:** All commands and events must export specific interfaces to be registered.
|
||||
|
||||
---
|
||||
|
||||
**See also:**
|
||||
|
||||
- [Discord.js Documentation](https://discord.js.org/)
|
||||
- [TypeScript Documentation](https://www.typescriptlang.org/)
|
||||
Reference in new issue
Block a user