docs: add project rules and module documentation to DESIGN.md
Co-authored-by: aider (openai/andrew.openrouter.qwen.qwen3-coder) <aider@aider.chat>
This commit is contained in:
60
DESIGN.md
60
DESIGN.md
@@ -0,0 +1,60 @@
|
|||||||
|
# PROJECT RULES - KEEP FIRST
|
||||||
|
|
||||||
|
## Code - Modules
|
||||||
|
|
||||||
|
### Main Module
|
||||||
|
- `main.rs` - Entry point, CLI argument parsing, mode dispatching
|
||||||
|
- Interacts with all mode modules based on user input
|
||||||
|
- Handles database connection setup and data directory management
|
||||||
|
|
||||||
|
### Mode Modules
|
||||||
|
- `modes/save.rs` - Save new items with tags/metadata
|
||||||
|
- `modes/get.rs` - Retrieve items by ID/tags
|
||||||
|
- `modes/list.rs` - List items with filtering and formatting
|
||||||
|
- `modes/delete.rs` - Delete items by ID
|
||||||
|
- `modes/update.rs` - Update item tags/metadata
|
||||||
|
- `modes/info.rs` - Show detailed item information
|
||||||
|
- `modes/diff.rs` - Compare two items
|
||||||
|
- `modes/status.rs` - Show system status and capabilities
|
||||||
|
- `modes/common.rs` - Shared utilities for all modes
|
||||||
|
|
||||||
|
### Database Module
|
||||||
|
- `db.rs` - SQLite database operations
|
||||||
|
- Handles items, tags, and metadata storage
|
||||||
|
- Provides query functions for all modes
|
||||||
|
- Manages database migrations
|
||||||
|
|
||||||
|
### Compression Engine Module
|
||||||
|
- `compression_engine.rs` - Trait and type definitions
|
||||||
|
- `compression_engine/gzip.rs` - GZip implementation
|
||||||
|
- `compression_engine/lz4.rs` - LZ4 implementation
|
||||||
|
- `compression_engine/none.rs` - No compression implementation
|
||||||
|
- `compression_engine/program.rs` - External program wrapper
|
||||||
|
|
||||||
|
### Digest Engine Module
|
||||||
|
- `digest_engine.rs` - Trait and type definitions
|
||||||
|
- `digest_engine/sha2.rs` - SHA-256 implementation
|
||||||
|
- `digest_engine/none.rs` - No digest implementation
|
||||||
|
- `digest_engine/program.rs` - External program wrapper
|
||||||
|
|
||||||
|
### Meta Plugin Module
|
||||||
|
- `meta_plugin.rs` - Trait and type definitions
|
||||||
|
- `meta_plugin/program.rs` - External program wrapper
|
||||||
|
- `meta_plugin/digest.rs` - Internal digest implementations
|
||||||
|
|
||||||
|
### Plugins Module
|
||||||
|
- `plugins.rs` - Shared plugin utilities
|
||||||
|
- Contains `ProgramWriter` for external process communication
|
||||||
|
|
||||||
|
## Standard Rules
|
||||||
|
|
||||||
|
1. ALWAYS keep DESIGN.md updated with any architectural or design changes
|
||||||
|
2. Follow Rust naming conventions and idioms
|
||||||
|
3. Use anyhow for error handling throughout the codebase
|
||||||
|
4. Maintain comprehensive logging with the log crate
|
||||||
|
5. Write unit tests for critical functionality
|
||||||
|
6. Document public APIs with rustdoc comments
|
||||||
|
7. Keep modules focused on single responsibilities
|
||||||
|
8. Prefer composition over inheritance
|
||||||
|
9. Handle errors gracefully and provide meaningful error messages
|
||||||
|
10. Ensure code is safe and avoids unsafe blocks where possible
|
||||||
|
|||||||
Reference in New Issue
Block a user