Files
uzdb/doc/features.md
loveuer 5a83e86bc9 feat: Initial project setup - uzdb database client
Initialize complete Wails (Go + React) database management tool

## Project Structure
- Frontend: React 18 + TypeScript + Vite
- Backend: Go 1.23 + Gin + GORM + SQLite + Zap
- Desktop: Wails v2

## Features Implemented

### UI/UX Design
- Complete design system with colors, typography, spacing
- Wireframes for all major screens
- User flows and interaction specifications
- Layout design with 3-panel architecture

### Frontend Components
- ConnectionPanel: Database connection sidebar with status indicators
- AppLayout: Resizable main layout framework
- MenuBar & ToolBar: Navigation and quick actions
- QueryEditor: SQL editor with syntax highlighting support
- DataGrid: Sortable, filterable, editable data table
- TableStructure: Table metadata viewer
- StatusBar: Connection info and query statistics
- StatusIndicator: Animated connection status component

### Backend Services
- Wails bindings: 15+ methods exposed to frontend
- Connection management: CRUD operations with connection pooling
- Query execution: SQL execution with result handling
- Table metadata: Schema introspection
- Encryption service: AES-256-GCM password encryption
- HTTP API: RESTful endpoints for debugging/integration

### Documentation
- Design system specification
- Feature requirements document
- Wireframes and user flows
- API testing guide
- Project README

## Technical Details
- Password encryption using AES-256-GCM
- Thread-safe connection manager with sync.RWMutex
- Unified error handling and logging
- Clean architecture with dependency injection
- SQLite for storing user data (connections, history)

🤖 Generated with Qoder
2026-03-29 06:49:23 -07:00

8.3 KiB

uzdb Feature Specification

Overview

uzdb is a lightweight database management tool built with Wails (Go + React). It provides essential database operations without the complexity of enterprise tools like DBeaver or Navicat.


Target Users

  1. Developers - Need quick database access for debugging and development
  2. Small Teams - Want a simple, fast tool for daily database tasks
  3. Students/Learners - Need an easy-to-use SQL client for learning

Supported Databases (MVP)

Phase 1 (Initial Release)

  • MySQL 5.7+ / 8.0+
  • PostgreSQL 12+
  • SQLite 3.x

Phase 2 (Future)

  • MariaDB 10.3+
  • Microsoft SQL Server
  • MongoDB (basic support)

Core Features

1. Connection Management

1.1 Create Connection

Priority: P0
Description: Users can create new database connections
Requirements:

  • Support MySQL, PostgreSQL, SQLite
  • Store connection details securely
  • Test connection before saving
  • Support SSH tunneling (Phase 2)

UI Components:

  • Connection dialog with form fields
  • Database type selector
  • Test connection button
  • Advanced options accordion

1.2 Connection List

Priority: P0
Description: View and manage saved connections
Requirements:

  • Display all saved connections
  • Show connection status (connected/disconnected)
  • Quick connect double-click
  • Right-click context menu

UI Components:

  • Sidebar connection tree
  • Status indicators
  • Context menu

1.3 Edit/Delete Connection

Priority: P0
Description: Modify or remove existing connections
Requirements:

  • Edit connection properties
  • Duplicate connection
  • Delete with confirmation
  • Cannot delete active connection

2. Schema Explorer

2.1 Database Navigation

Priority: P0
Description: Browse database structure in sidebar
Requirements:

  • Expand/collapse databases
  • Show schemas (PostgreSQL)
  • List tables, views, procedures
  • Icon differentiation by object type

UI Components:

  • Tree view component
  • Lazy loading for large schemas
  • Search/filter capability (Phase 2)

2.2 Table Metadata

Priority: P0
Description: View table structure and information
Requirements:

  • Column list with types and constraints
  • Indexes display
  • Foreign keys relationships
  • Triggers list

UI Components:

  • Right sidebar panel
  • Tabbed interface for different metadata types

3. Query Editor

3.1 SQL Editor

Priority: P0
Description: Write and execute SQL queries
Requirements:

  • Syntax highlighting (SQL keywords, strings, comments)
  • Line numbers
  • Basic autocomplete (table/column names)
  • Multiple tabs support
  • Query history (Phase 2)

UI Components:

  • Monaco Editor or CodeMirror
  • Tab bar for multiple queries
  • Toolbar with run/save buttons

3.2 Query Execution

Priority: P0
Description: Execute SQL and view results
Requirements:

  • Execute selected text or full query
  • Show execution time
  • Display row count
  • Cancel long-running queries
  • Error message display with line number

Keyboard Shortcuts:

  • Ctrl+Enter: Execute query
  • Ctrl+R: Refresh results

3.3 Query Snippets

Priority: P2
Description: Save and reuse common queries
Requirements:

  • Save query as snippet
  • Organize snippets by category
  • Insert snippet into editor
  • Share snippets (Phase 3)

4. Data Grid

4.1 Results Display

Priority: P0
Description: Show query results in tabular format
Requirements:

  • Virtual scrolling for large datasets
  • Column resizing
  • Sort by clicking headers
  • Fixed header row
  • Alternating row colors

Performance:

  • Render 1000+ rows smoothly
  • Load data in chunks (100 rows at a time)

4.2 Data Editing

Priority: P1
Description: Edit cell values inline
Requirements:

  • Double-click to edit
  • Validate data types
  • Show NULL indicator
  • Commit on blur or Enter
  • Escape to cancel

Cell Editors:

  • Text input for strings
  • Number input for integers/decimals
  • Date picker for dates
  • Checkbox for booleans
  • Dropdown for enums

4.3 Pagination & Navigation

Priority: P0
Description: Navigate through result sets
Requirements:

  • Page size selector (25, 50, 100, 500)
  • Jump to page input
  • First/Previous/Next/Last buttons
  • Total row count display
  • Limit/offset in query

5. Data Export/Import

5.1 Export Data

Priority: P0
Description: Export table/query results to file
Requirements:

  • Formats: CSV, JSON, SQL INSERT
  • Select destination path
  • Configure export options
  • Show progress for large exports

Export Options (CSV):

  • Delimiter selection (comma, semicolon, tab)
  • Include/exclude headers
  • Quote character
  • Encoding (UTF-8 default)

Export Options (JSON):

  • Pretty print vs compact
  • Array of objects vs arrays

5.2 Import Data

Priority: P1
Description: Import data from files
Requirements:

  • Import CSV/JSON to table
  • Map columns
  • Preview before import
  • Handle errors gracefully
  • Transaction support (rollback on error)

6. Additional Features

6.1 Find in Results

Priority: P1
Description: Search within query results
Requirements:

  • Case-sensitive toggle
  • Match whole word
  • Highlight matches
  • Navigate between matches

6.2 Query History

Priority: P2
Description: Track executed queries
Requirements:

  • Store last 100 queries per connection
  • Search history
  • Re-execute from history
  • Pin important queries

6.3 Bookmarks

Priority: P2
Description: Save frequently used queries
Requirements:

  • Bookmark query with name
  • Organize in folders
  • Quick access from sidebar

Non-Functional Requirements

Performance

  • App startup: < 2 seconds
  • Connection open: < 1 second (local)
  • Query results render: < 100ms for 100 rows
  • Memory usage: < 200MB idle

Security

  • Passwords stored encrypted (keyring/keystore)
  • No plain-text credentials in config files
  • SSL/TLS support for connections
  • Sanitize SQL inputs to prevent injection in logs

Accessibility

  • WCAG 2.1 AA compliance
  • Keyboard navigation throughout
  • Screen reader support
  • High contrast mode (Phase 2)

Internationalization

  • English (initial)
  • Chinese (Simplified) (Phase 2)
  • Spanish (Phase 3)

Technical Architecture

Frontend (React + TypeScript)

src/
├── components/
│   ├── Sidebar/
│   │   ├── ConnectionTree.tsx
│   │   └── SchemaExplorer.tsx
│   ├── Editor/
│   │   ├── QueryEditor.tsx
│   │   └── SQLEditor.tsx
│   ├── Grid/
│   │   ├── DataGrid.tsx
│   │   └── CellEditor.tsx
│   ├── Dialogs/
│   │   ├── ConnectionDialog.tsx
│   │   └── ExportDialog.tsx
│   └── common/
│       ├── Button.tsx
│       ├── Input.tsx
│       └── Modal.tsx
├── hooks/
│   ├── useQuery.ts
│   └── useConnection.ts
├── stores/
│   ├── connectionStore.ts
│   └── queryStore.ts
└── utils/
    ├── formatters.ts
    └── validators.ts

Backend (Go)

internal/
├── database/
│   ├── mysql.go
│   ├── postgres.go
│   ├── sqlite.go
│   └── connection.go
├── models/
│   ├── connection.go
│   ├── query.go
│   └── table.go
└── handlers/
    ├── connection_handler.go
    ├── query_handler.go
    └── export_handler.go

Out of Scope (for MVP)

Visual query builder
ER diagrams
Database comparison/sync
User management
Backup/restore
Query profiling/optimization
Multi-tab result sets
Stored procedure debugger
Real-time collaboration


Success Metrics

  1. Usability: New user can connect and run query in < 2 minutes
  2. Performance: Query results load in < 500ms for typical queries
  3. Stability: < 1 crash per 100 hours of usage
  4. Adoption: 100+ GitHub stars in first month

Future Roadmap

Phase 2 (v0.2)

  • MariaDB support
  • SSH tunneling
  • Query history
  • Data import
  • Dark theme

Phase 3 (v0.3)

  • SQL Server support
  • Visual query builder (basic)
  • Snippet sharing
  • Plugin system

Phase 4 (v1.0)

  • MongoDB support
  • ER diagram viewer
  • Team features (shared connections)
  • Auto-update