Files
uzdb/README.md
loveuer 9874561410 refactor: Flatten directory structure
Move project files from uzdb/ subdirectory to root directory for cleaner project structure.

Changes:
- Move frontend/ to root
- Move internal/ to root
- Move build/ to root
- Move all config files (go.mod, wails.json, etc.) to root
- Remove redundant uzdb/ subdirectory nesting

Project structure is now:
├── frontend/        # React application
├── internal/        # Go backend
├── build/           # Wails build assets
├── doc/             # Design documentation
├── main.go          # Entry point
└── ...

🤖 Generated with Qoder
2026-04-04 07:14:00 -07:00

229 lines
6.1 KiB
Markdown

# uzdb - Lightweight Database Client
A modern, lightweight database management tool inspired by DBeaver and Navicat, built with Wails (Go + React).
## 🚀 Features
- **Multi-Database Support**: MySQL, PostgreSQL, SQLite
- **Modern UI**: Clean interface with dark/light themes
- **SQL Editor**: Syntax highlighting, autocomplete, query history
- **Data Grid**: Sortable, filterable, editable data view
- **Connection Management**: Secure credential storage with encryption
- **Fast & Lightweight**: Minimal resource usage, quick startup
## 🛠️ Tech Stack
### Frontend
- **Framework**: React 18 + TypeScript
- **Build Tool**: Vite
- **Styling**: CSS Variables + Modern CSS
- **Icons**: Lucide Icons
### Backend
- **Language**: Go 1.23+
- **Web Framework**: Gin
- **ORM**: GORM
- **Database**: SQLite3 (for app data)
- **Logging**: Zap
- **Desktop**: Wails v2
## 📁 Project Structure
```
uzdb/
├── frontend/ # React application
│ ├── src/
│ │ ├── components/ # UI components
│ │ ├── mock/ # Mock data for development
│ │ └── index.css # Global styles
│ └── package.json
├── internal/ # Go backend (private packages)
│ ├── app/ # Wails bindings
│ ├── config/ # Configuration management
│ ├── models/ # Data models
│ ├── database/ # Database connections
│ ├── services/ # Business logic
│ ├── handler/ # HTTP handlers
│ ├── middleware/ # HTTP middleware
│ └── utils/ # Utility functions
├── doc/ # Design documentation
│ ├── features.md # Feature specifications
│ ├── design-system.md # Visual design system
│ ├── wireframes.md # UI wireframes
│ ├── user-flows.md # User interaction flows
│ └── layout-design.md # Layout specifications
├── main.go # Application entry point
└── go.mod # Go dependencies
```
## 🚦 Getting Started
### Prerequisites
- **Go** 1.23 or higher
- **Node.js** 18 or higher
- **Wails CLI** (`go install github.com/wailsapp/wails/v2/cmd/wails@latest`)
### Installation
1. **Clone the repository**
```bash
git clone https://github.com/your-org/uzdb.git
cd uzdb
```
2. **Install Go dependencies**
```bash
go mod tidy
```
3. **Install frontend dependencies**
```bash
cd frontend
npm install
cd ..
```
### Development
#### Option 1: Run with Wails Dev Server (Recommended)
```bash
wails dev
```
This starts both the Go backend and React frontend with hot reload.
#### Option 2: Run Components Separately
**Frontend only:**
```bash
cd frontend
npm run dev
```
**Backend HTTP API only:**
```bash
go run . -http-port 8080
```
Then access API at `http://localhost:8080/api`
### Building for Production
```bash
wails build
```
The compiled binary will be in `build/bin/`.
## 📖 Usage
### Connecting to a Database
1. Click **"New Connection"** in the left sidebar
2. Select database type (MySQL, PostgreSQL, or SQLite)
3. Fill in connection details:
- **Name**: Friendly name for the connection
- **Host**: Database server hostname
- **Port**: Database port (default: 3306 for MySQL, 5432 for PostgreSQL)
- **Username/Password**: Authentication credentials
- **Database**: Default database name
4. Click **"Test Connection"** to verify
5. Click **"Save & Connect"**
### Executing Queries
1. Select a connection from the left sidebar
2. Open a new query tab (Ctrl+T)
3. Write your SQL query
4. Press **Ctrl+Enter** or click **Run** to execute
5. View results in the data grid below
### Keyboard Shortcuts
| Action | Shortcut |
|--------|----------|
| New Connection | Ctrl+N |
| New Query Tab | Ctrl+T |
| Execute Query | Ctrl+Enter |
| Save Query | Ctrl+S |
| Find | Ctrl+F |
| Close Tab | Ctrl+W |
| Settings | Ctrl+, |
## 🔌 API Reference
The application exposes both Wails bindings (for the desktop app) and HTTP API (for debugging/integration).
### Wails Bindings (JavaScript)
```javascript
// Get all connections
const connections = await window.go.app.GetConnections();
// Execute a query
const result = await window.go.app.ExecuteQuery(connectionId, sql);
// Get table data
const data = await window.go.app.GetTableData(connectionId, tableName, limit, offset);
```
### HTTP API
See [API_TEST.md](./API_TEST.md) for detailed API documentation.
## 🔒 Security
- All database passwords are encrypted using AES-256-GCM before storage
- Encryption key is derived from a master password (future feature) or system keyring
- No credentials stored in plain text
- SSL/TLS support for database connections
## 📊 Supported Databases
| Database | Version | Status |
|----------|---------|--------|
| MySQL | 5.7+, 8.0+ | ✅ Supported |
| PostgreSQL | 12+ | ✅ Supported |
| SQLite | 3.x | ✅ Supported |
| MariaDB | 10.3+ | 🔄 Planned |
| SQL Server | 2019+ | 🔄 Planned |
## 🤝 Contributing
Contributions are welcome! Please follow these steps:
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
### Development Guidelines
- Follow existing code style
- Add tests for new features
- Update documentation as needed
- Ensure linting passes (`go vet`, `npm run lint`)
## 📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
## 🙏 Acknowledgments
- [Wails](https://wails.io/) - Desktop framework
- [Gin](https://gin-gonic.com/) - Web framework
- [GORM](https://gorm.io/) - ORM library
- [React](https://react.dev/) - UI library
- [DBeaver](https://dbeaver.io/) - Inspiration
- [Navicat](https://www.navicat.com/) - Inspiration
## 📞 Support
- **Issues**: [GitHub Issues](https://github.com/your-org/uzdb/issues)
- **Discussions**: [GitHub Discussions](https://github.com/your-org/uzdb/discussions)
- **Documentation**: `/doc` directory
---
**Built with ❤️ using Go + React**