diff --git a/roadmap.md b/roadmap.md new file mode 100644 index 0000000..0459ee2 --- /dev/null +++ b/roadmap.md @@ -0,0 +1,86 @@ +## Roadmap + +### Configuration file for persistent profiles +Save user profiles (tokens, user UUIDs, server URLs) to a local configuration file +(e.g., `~/.kvs/config.json`) that persists across shell sessions. This eliminates +the need to re-enter authentication details every time the shell starts. The file +should be stored with restricted permissions (0600) to protect sensitive token data. +Include commands like `profile save` and `profile load` to manage the persistence +layer. + +### Management of local KVS instance configuration file +Provide commands to read, edit, and validate the KVS server's `config.yaml` file +directly from the shell. This would allow administrators to modify server settings +(ports, data directories, cluster secrets, feature flags) without manually editing +YAML files. Include syntax validation, preview changes before applying, and the +ability to restart the local KVS instance after configuration changes. This is particularly +useful for development and testing workflows. + +### Batch operations from file +Execute multiple KVS commands from a script file, similar to SQL's source command +or MongoDB's load(). Support both sequential execution and parallel batch operations +for improved performance when uploading large datasets. Include error handling options +(continue on error vs. abort on first error) and progress reporting. This enables +data migration, testing scenarios, and automated setup workflows. + +### Export/import functionality +Export entire key ranges or specific key patterns to JSON, CSV, or custom backup +formats that preserve UUIDs and timestamps. Import these files back into the same +or different KVS instances while handling conflicts appropriately. Support filtering +during export (by key prefix, timestamp range, or pattern matching) and transformation +during import (key remapping, data modification). This is critical for backup/restore +operations and cross-environment data synchronization. + +### Group management commands +Implement full CRUD operations for groups through the shell: create groups, add/remove +members, list all groups, and view group details. Include commands like `group create +`, `group add-member `, and `group members `. +This complements the existing user management commands and enables complete administration +of the authorization system. Support bulk operations for adding multiple members +at once. + +### Metadata management +Expose the resource metadata API (owner UUID, group UUID, permissions, TTL) through +intuitive shell commands. Allow viewing and modifying POSIX-inspired permission +bits for any key, changing ownership, and setting TTLs. Include commands like `metadata +get `, `metadata set-owner `, and `metadata chmod `. +Display permissions in both numeric (e.g., 3840) and symbolic formats (e.g., `rwxr--r--`) +for usability. + +### Query filtering and pagination +Add support for filtering keys by prefix, timestamp range, or pattern matching when +listing or searching. Implement pagination for large result sets with commands like +`list --prefix users/ --limit 50 --offset 100`. Include sorting options (by key name, +timestamp, or data fields) and output formatting (table, JSON, compact). This makes +it practical to explore and manage large datasets without overwhelming the terminal +with output. + +### TLS/SSL support +Enable secure HTTPS connections to KVS servers with proper certificate validation. +Support custom CA certificates for self-signed deployments and client certificate +authentication for mutual TLS. Include commands to configure TLS settings: `tls +enable`, `tls cert `, and `tls verify on/off`. Display connection security +status in the prompt (e.g., `kvs(secure)>`) to provide visual confirmation of encrypted +connections. + +### Shell scripts execution +Create a scripting language or format for automating complex workflows that combine +multiple KVS operations with conditional logic and variables. Scripts could include +loops, conditionals, error handling, and variable substitution (e.g., `$UUID`, `$TIMESTAMP`). +Support both embedded scripts (via heredoc syntax) and external script files. Include a +library of common scripts for tasks like data migration, testing, and bulk updates. + +### Tab completion for keys +Implement intelligent tab completion that fetches existing keys from the server +and suggests completions as you type. Cache key prefixes locally to minimize server +requests while typing. Support completion for key paths (e.g., typing `users/a` +would suggest `users/alice`, `users/admin`). Include fuzzy matching and recent key +history to speed up navigation of frequently accessed keys. + +### Transaction support +Provide multi-key atomic operations through a transaction API, allowing users to +group multiple get/put/delete operations that either all succeed or all fail together. +Use syntax like `begin`, `commit`, and `rollback` commands to demarcate transaction +boundaries. Support read-your-writes consistency within a transaction and optimistic +concurrency control with conflict detection. This would require backend support +for transactions, which may need to be implemented in the KVS server first. \ No newline at end of file