added plan for future stuff, roadmap.md.

This commit is contained in:
Kalzu Rekku
2025-10-05 20:17:07 +03:00
parent 3ae9395f9d
commit d69240913a

86
roadmap.md Normal file
View File

@@ -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
<name>`, `group add-member <group-uuid> <user-uuid>`, and `group members <group-uuid>`.
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 <key>`, `metadata set-owner <key> <user-uuid>`, and `metadata chmod <key> <permissions>`.
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 <path>`, 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<tab>`
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.