All Projects → remko → dsadmin

remko / dsadmin

Licence: MIT License
Google Cloud Datastore Emulator Administration UI

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language
go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to dsadmin

botkit-storage-datastore
Google Cloud Datastore storage module for Botkit
Stars: ✭ 13 (-59.37%)
Mutual labels:  google-cloud-datastore
viur-vi
Visual administration interface for ViUR as web-app, with the ability to generate its input masks and data structures automatically from the underlying data model.
Stars: ✭ 18 (-43.75%)
Mutual labels:  administration-interface
activemodel-datastore
Ruby on Rails with Active Model and Google Cloud Datastore. Extracted from Agrimatics Aero.
Stars: ✭ 47 (+46.88%)
Mutual labels:  google-cloud-datastore
datastore-emulator-docker
Google Datastore Emulator Docker Image
Stars: ✭ 18 (-43.75%)
Mutual labels:  google-cloud-datastore
clojure-app-engine
A skeleton to get started with Clojure on Google App Engine
Stars: ✭ 13 (-59.37%)
Mutual labels:  google-cloud-datastore
laravel-admin
Laravel Admin panel with theme , modules ,artisan commands and helper classess.Laravel admin boilerplate with theme and modules
Stars: ✭ 22 (-31.25%)
Mutual labels:  administration-interface
MongoDB-PHP-GUI
Open-source graphical interface for MongoDB database. Written in PHP, JavaScript, HTML & CSS.
Stars: ✭ 100 (+212.5%)
Mutual labels:  administration-interface
cms
🛠️ Simple smart CMS for Nette and Vue.js
Stars: ✭ 12 (-62.5%)
Mutual labels:  administration-interface
gSlack
Get Slack notifications from Google Cloud Platform
Stars: ✭ 69 (+115.63%)
Mutual labels:  google-cloud-datastore

DSAdmin: Google Cloud Datastore Emulator Admin UI

Build

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 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 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

Entity editor Kinds Entity creator

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 dsadmin

Using 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.

Start using the environment from the emulator:

eval $(gcloud beta emulators datastore env-init --data-dir=DATA-DIR)
./dsadmin

Start 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:

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-project

volumes:
  datastore_data:

💻 Development

Start all development servers (datastore emulator, proxy, and frontend build):

npm 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.mjs
npm start-build

or using command-line arguments:

./bin/dsadmin.mjs --project=my-datastore-project --datastore-emulator-host=localhost:8081
npm start-build

🔋 Powered by ...

This project uses some great open source projects. Check them out if you don't know them.

React Query    React Table    ko    ESBuild    Wouter
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].