Initial vibecoded proof of concept

This commit is contained in:
Alex Selimov 2025-10-05 20:16:33 -04:00
parent 74812459af
commit 461318a656
Signed by: aselimov
GPG key ID: 3DDB9C3E023F1F31
61 changed files with 13306 additions and 0 deletions

View file

@ -0,0 +1,43 @@
# Research: Relational Document System for Neovim
## SQLite Integration
**Decision**: Use lsqlite3 for SQLite database operations
**Rationale**: lsqlite3 is the most mature and widely used SQLite binding for Lua, with excellent Neovim compatibility and minimal dependencies
**Alternatives considered**:
- lua-sqlite3 (less mature, fewer updates)
- Custom file-based indexing (limited query capabilities)
## YAML Parsing
**Decision**: Use lyaml for YAML header parsing
**Rationale**: lyaml provides robust YAML parsing with proper error handling for malformed headers, essential for document reliability
**Alternatives considered**:
- Custom regex parsing (brittle, fails with complex YAML)
- yaml.lua (less maintained than lyaml)
## Virtual Buffer Management
**Decision**: Use Neovim's native nvim_buf_ API
**Rationale**: Native API provides the most seamless integration with Neovim's buffer system, ensuring compatibility with existing plugins and user workflows
**Alternatives considered**:
- Floating windows (less persistent, not ideal for editing)
- External terminal buffers (breaks Neovim integration)
## Query Syntax Design
**Decision**: Custom block syntax similar to code blocks
**Rationale**: Block syntax is familiar to markdown users and provides clear delimiters for query parsing while maintaining readability
**Alternatives considered**:
- Inline syntax (cluttered, hard to parse)
- Special comments (not intuitive for query visualization)
## Performance Optimization
**Decision**: Hybrid indexing approach (SQLite + in-memory cache)
**Rationale**: SQLite provides persistent storage and complex query capabilities, while in-memory caching ensures sub-100ms response times for frequently accessed data
**Alternatives considered**:
- Pure file-based indexing (slow for large document sets)
- Pure in-memory (data loss on restart)
## Testing Framework
**Decision**: busted with nvim-test plugin
**Rationale**: busted provides comprehensive testing capabilities with good async support, while nvim-test enables Neovim-specific testing scenarios
**Alternatives considered**:
- luaunit (limited Neovim integration)
- Custom testing harness (maintenance overhead)