feat: Add more base component to UI

This commit is contained in:
deytenit committed 2026-02-01 16:24:45 +03:00
1 parent ca20310460
commit df2abc06f2
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/)