Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/esh2n/spanner-gui

๐Ÿš€ A simple and user-friendly GUI client for Google Cloud Spanner, built with Next.js and Tauri.
https://github.com/esh2n/spanner-gui

nextjs spanner tauri

Last synced: 4 months ago
JSON representation

๐Ÿš€ A simple and user-friendly GUI client for Google Cloud Spanner, built with Next.js and Tauri.

Awesome Lists containing this project

README

        

# ๐ŸŒ Spanner GUI SQL Client

๐Ÿš€ A simple and user-friendly GUI client for Google Cloud Spanner, built with Next.js and React.

## ๐ŸŒŸ Features

- ๐Ÿ” Easy navigation of Spanner instances and databases
- โšก Execute SQL queries
- ๐Ÿ“Š View query results in a clean, tabular format
- ๐Ÿ“œ Query history for quick access to past operations
- ๐ŸŽจ Syntax highlighting and query formatting
- ๐Ÿ“ฑ Responsive design for desktop and mobile use

## ๐Ÿ“ฆ Installation

```bash
git clone https://github.com/esh2n/spanner-gui.git
cd spanner-gui
bun install
bun run dev.tauri
```

## ๐Ÿš€ Quick Start

### 1. Set up Google Cloud credentials

Ensure you have set up your Google Cloud credentials. You can do this by setting the `GOOGLE_APPLICATION_CREDENTIALS` environment variable to point to your service account key file.

```shellscript
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
```

### 2. Run the development server

```shellscript
bun run dev.tauri
```

## ๐Ÿ–ฅ Usage

1. Enter your Google Cloud Project ID and click "Initialize"
2. Select a Spanner instance from the dropdown
3. Choose a database from the selected instance
4. Write your SQL query in the editor
5. Click "Execute" to run the query
6. View results in the table below
7. Access query history in the "History" tab

## ๐Ÿ›  API Reference

### POST /api/spanner

Handles all Spanner-related operations.

#### Request Body

```typescript
{
type: 'instances' | 'databases' | 'query',
projectId: string,
instanceId?: string,
databaseId?: string,
query?: string
}
```

#### Response

- For `instances`: Array of instance names
- For `databases`: Array of database names
- For `query`: Array of result rows

## ๐Ÿค Contributing

We welcome contributions! Here's how you can help:

1. ๐Ÿด Fork the repository
2. ๐ŸŒฟ Create your feature branch: `git checkout -b my-new-feature`
3. ๐Ÿ’พ Commit your changes: `git commit -am 'Add some feature'`
4. ๐Ÿš€ Push to the branch: `git push origin my-new-feature`
5. ๐ŸŽ‰ Submit a pull request

## ๐Ÿ“ TODO

- ๐Ÿ”’ Implement user authentication
- ๐Ÿ“Š Add visual query plan explanation
- ๐Ÿ”„ Support for DML operations (INSERT, UPDATE, DELETE)
- ๐Ÿ“ˆ Query performance metrics
- ๐ŸŒ“ Dark mode support
- ๐Ÿงช Comprehensive unit and integration testing

## ๐Ÿ“œ License

MIT

## ๐Ÿ™ Acknowledgements

- [Next.js](https://nextjs.org/)
- [React](https://reactjs.org/)
- [Tauri](https://tauri.app/)
- [Google Cloud Spanner](https://cloud.google.com/spanner)
- [Tailwind CSS](https://tailwindcss.com/)
- [shadcn/ui](https://ui.shadcn.com/)