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
This commit is contained in:
loveuer
2026-03-29 06:49:23 -07:00
commit 5a83e86bc9
91 changed files with 16488 additions and 0 deletions

377
doc/features.md Normal file
View File

@@ -0,0 +1,377 @@
# 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