Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/remko/dsadmin
Google Cloud Datastore Emulator Administration UI
https://github.com/remko/dsadmin
administration-interface google-cloud-datastore gui ui
Last synced: 3 days ago
JSON representation
Google Cloud Datastore Emulator Administration UI
- Host: GitHub
- URL: https://github.com/remko/dsadmin
- Owner: remko
- License: mit
- Created: 2021-06-21T17:35:12.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-01-04T08:07:47.000Z (12 months ago)
- Last Synced: 2024-12-08T13:49:55.181Z (25 days ago)
- Topics: administration-interface, google-cloud-datastore, gui, ui
- Language: TypeScript
- Homepage:
- Size: 700 KB
- Stars: 64
- Watchers: 5
- Forks: 6
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DSAdmin: Google Cloud Datastore Emulator Admin UI
[![Build](https://github.com/remko/dsadmin/actions/workflows/build.yml/badge.svg)](https://github.com/remko/dsadmin/actions/workflows/build.yml)
Administration GUI for the Google Cloud Datastore Emulator.
- Supports browsing, editing, creating, deleting, querying (using GQL),
import, export, ...
- Supports formatted display of JSON properties & compressed properties
- Supports large databases
- Does not have problematic dependencies (such as gRPC, which are not
available on all platforms)
- Portable: Implemented entirely in the frontend as an SPA. Uses the
[Datastore REST
API](https://cloud.google.com/datastore/docs/reference/data/rest)
directly from the frontend. The only thing a server is used for is for
proxying to the datastore emulator (to avoid CORS problems), and to
serve the HTML and JS files. The NPM package uses a small Node.js
server. A small [self-contained binary
server](https://github.com/remko/dsadmin/releases) is also provided,
avoiding the need for any system dependencies. If for some reason you
need this to be available in a specific environment (Java, Python,
...), it should be easy to create a similar server to run this in.## 📷 Screenshots
## ❓ Why?
Since Google stopped shipping an admin interface for their Datastore
Emulator, there have been some external projects trying to fill the gap.
However, all of the ones I tried were either partially or completely
broken, lacked in core features, had performance issues, were painful to
set up, or had dependencies that prevented them from e.g. being
installed in a non-x86 Docker image.This project tries to fix all of the issues with the other Datastore
admin interfaces, and bring improvements on the original Google
interface.## 🚧 Not yet implemented
- Editing nested entities
- UI for filtering & projecting## 📖 Usage
### Using NPM
Using the environment from the emulator:
eval $(gcloud beta emulators datastore env-init --data-dir=DATA-DIR)
npx dsadminUsing command-line arguments:
npx dsadmin --project=my-datastore-project --datastore-emulator-host=localhost:8081
### Using a pre-built binary
Download the correct binary for your OS from the [Releases
page](https://github.com/remko/dsadmin/releases).Start using the environment from the emulator:
eval $(gcloud beta emulators datastore env-init --data-dir=DATA-DIR)
./dsadminStart using command-line arguments:
./dsadmin --project=my-datastore-project --datastore-emulator-host=localhost:8081
### Using Docker
docker run -p 8080:8080 ghcr.io/remko/dsadmin:latest \
--project=my-project --datastore-emulator-host=host.docker.internal:8081### Using Docker Compose
Create a `docker-compose.yml` that starts the Datastore Emulator and the
Datastore Admin container:``` yaml
version: "3.9"
services:
# DSAdmin container
dsadmin:
image: "ghcr.io/remko/dsadmin:latest"
depends_on:
- datastore
ports:
- "8080:8080"
environment:
DATASTORE_PROJECT_ID: my-datastore-project
DATASTORE_EMULATOR_HOST: "datastore:8081"# Datastore Emulator container
datastore:
image: "gcr.io/google.com/cloudsdktool/cloud-sdk:latest"
volumes:
- datastore_data:/opt/datastore/data
ports:
- "8081:8081"
command: [
"gcloud", "--quiet", "beta", "emulators" ,"datastore", "start",
"--host-port=0.0.0.0:8081", "--data-dir=/opt/datastore/data"
]
environment:
CLOUDSDK_CORE_PROJECT: my-datastore-projectvolumes:
datastore_data:
```## 💻 Development
Install all dependencies
yarn
Start all development servers (datastore emulator, proxy, and frontend
build):yarn start
If you want to run against your own running instance of the Datastore
emulator, start the backend server and the build server separately:eval $(gcloud beta emulators datastore env-init --data-dir=DATA-DIR)
./bin/dsadmin.js
yarn run start-buildor using command-line arguments:
./bin/dsadmin.js --project=my-datastore-project --datastore-emulator-host=localhost:8081
yarn run start-build## 🔋 Powered by ...
This project uses some great open source projects. Check them out if you
don't know them.