Giter VIP home page Giter VIP logo

kuzzleio / kuzzle-admin-console Goto Github PK

View Code? Open in Web Editor NEW
60.0 13.0 24.0 25.45 MB

A SPA to administrate your Kuzzle: index and collection management, document creation, realtime subscription and permissions management

Home Page: http://console.kuzzle.io

License: Apache License 2.0

JavaScript 19.31% Vue 64.52% Shell 0.26% CSS 1.52% Dockerfile 0.03% HTML 1.70% TypeScript 11.08% SCSS 1.57% Batchfile 0.01%
kuzzle kuzzle-admin-console vuejs single-page-applications hacktoberfest

kuzzle-admin-console's Introduction

Kuzzle Admin Console

The Kuzzle Admin Console allows you to manage your Kuzzle instances. It allows you to manage your data, subscriptions and security (users, profiles and roles).

About Kuzzle

Kuzzle is an open-source backend solution shipping out-of-the-box features like real-time subscriptions, geofencing, security, and advanced search.

Kuzzle provides a secure API which can be accessed through a wide range of protocols such as REST, Websocket or Message Queuing.

About the Admin Console

The Kuzzle Admin Console is a web application that connects to your Kuzzle instances. This means that your Kuzzle stack must be accessible from the computer running the Kuzzle Admin Console. To connect to Kuzzle you will need to provide your Kuzzle host (name or IP) and the port (default: 7512).

Hosted Console

We host a running Admin Console here (or if you're using Kuzzle through SSL, you can use the https version), but you can also build your own local copy (see below).

Local build

To build the Kuzzle Admin Console on your computer, follow these instructions:

  • git clone https://github.com/kuzzleio/kuzzle-admin-console (clone this repository)
  • npm install (install dependencies)
  • npm run build : (build the Admin Console)
  • Serve the dist directory via your favorite HTTP server (e.g. http-server dist)
  • Access the served files in your favorite browser

kuzzle-admin-console's People

Contributors

alexandrebouthinon avatar anthonysendra avatar appacea avatar aschen avatar barroudjo avatar benoitvidis avatar berthieresteban avatar dbengsch avatar etrousset avatar imgbotapp avatar jenow avatar jsatge avatar leodau avatar morgandruesne avatar njuelle avatar rolljee avatar samniisan avatar scottinet avatar stafyniaksacha avatar thomas-mauran avatar xbill82 avatar yoann-abbes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kuzzle-admin-console's Issues

The 1-second problem is back?

I create a document and I don't see it immediately in the list... If I refresh some seconds later I see it. Sounds like the 1-second ES problem, right?

Roles and Profiles CRUD UX + UI dev

Currently, the CRUD of Roles and Profiles is available via a poor JSON textarea.
We need a more structured interface with field selection in order to guide the user through the creation of such complex entities.

Add dependency with G++

I was building the app without docker, but I was missing g++ while running npm install.

Don't forget to add it as dependency when using a non-docker stack. :)

Let the user manage the Kuzzle Environment from the UI

Direct evolution of #122

The user should be able to switch the Kuzzle environment she wants to manage from the back-office directly from the back-office UI.

Something like a dropdown should be available on the header bar to let the user switch the environment.
The same dropdown should enable the user to create a new environment.
An environment can store the following parameters

  • The name of the environment
  • The color associated with the environment (the choice is proposed among 5 or 6 colors)
  • Kuzzle server/proxy http address
  • Kuzzle Socket.io port
  • Kuzzle WebSocket port
  • The JWT token associated with the environment to be set after switching

Kuzzle Server Plugins Management

We need a view to enable the user to manage the plugins server-side. Including

  • adding a new plugin
  • showing currently installed plugins
  • enabling/disabling an installed plugin
  • removing an installed plugin
  • accessing/editing an installed plugin's configuration

Warning While developing these features, remember that Kuzzle Server needs to be restarted after every update

Updating a document gets stuck on the same route

Clicking on the "Update" button in the Document Update page doesn't succeed in transitioning to the next page. The console shows the following errors from the vue-router (the browser is actually stuck and busy probably doing endless loops before showing the errors)

[vue-router] Uncaught error during transition:
Uncaught TypeError: room.unsubscribe is not a function
Uncaught TypeError: Cannot read property 'length' of null

Steps to reproduce:

  • Pick a document and click on the pencil to edit it
  • edit (or not) any of the fields
  • click "Update"
  • See the magic (LOL)

Kuzzle configuration management

We need a view that allows the user to display and edit each Kuzzle Server node's configuration. Currently we have no idea of the UX.

Improve error reporting

Indexes:

  • access to an un-existing index
  • create: add text to explain restrictions (can not have uppercase letters / nor begin with _ / ...)

Collections:

  • access to an un-existing collection (index exists)
  • access to an un-existing collection (index does not exists)
  • create/update: display a bloc message instead a toast

CRUDL Documents/Users/Profiles/Roles:

  • create/update: bad mapping error (trying to set a field with another type that needed)
    • may we can display the mapping on the JSON mode ?
  • search with bad filers: actually there is no errors

CRUDL Profiles/Roles:

  • create/update: binding with bad document (profile -> roles, user->profiles)

Watch:

  • Subscribe with bad filters (Uncaught Error: Error during Kuzzle subscription: Unknown filter with name ...)

Login:

  • Bad credentials
  • Error from backend on login (error on the auth plugin)

Token expired causes weird behavior

I didn't really take the time to investigate this but, when the token expires, the BO sometimes shows the modal and sometimes it doesn't.

Generate dist/ folder

In order to deploy easily on production server without docker, we have to build the dist/ folder with travis on merge on branch master

(just like SDK JS)

Check index/collection exists

On Data, we must check if index/collection exists and display an error if not when we trying to access to indexes list and collections list

Warning tooltip delete index still here after click

How to reproduce:

  • go to /data
  • click on index dropdown
  • click on delete
  • fill the input with index name
  • click on DELETE

-> The modal is closed but the message "Be careful. This action can not be undone" is still here.

Special character in document _id

When a document contains special characters (in example : "/"), the url of the edit view of the document is malformed and points to a 404.

User password field as password field

It could be nice to have a password field instead of the regular one into the user creation form.
Best: have a password field with an eye button to (un)hide the typed password

Form goes wrong for some reason

{
  "origin": "toto.txt",
  "domain": null,
  "conditions": {
    "queryString": {
      "not": false,
      "val": "cat=129"
    }
  },
  "source": {
    "not": false,
    "val": "^/abc\\.aspx",
    "flags": ""
  },
  "result": {
    "code": 301,
    "destination": "/?"
  },
  "index": 145
}

with mapping:

{
  "conditions": {
    "properties": {
      "headers": {
        "type": "object",
        "enabled": false
      },
      "host": {
        "properties": {
          "flags": {
            "type": "string",
            "index": "not_analyzed"
          },
          "not": {
            "type": "boolean"
          },
          "val": {
            "type": "string",
            "index": "not_analyzed"
          }
        }
      },
      "method": {
        "properties": {
          "flags": {
            "type": "string",
            "index": "not_analyzed"
          },
          "not": {
            "type": "boolean"
          },
          "val": {
            "type": "string",
            "index": "not_analyzed"
          }
        }
      },
      "port": {
        "properties": {
          "flags": {
            "type": "string",
            "index": "not_analyzed"
          },
          "not": {
            "type": "boolean"
          },
          "val": {
            "type": "string",
            "index": "not_analyzed"
          }
        }
      },
      "queryString": {
        "properties": {
          "flags": {
            "type": "string",
            "index": "not_analyzed"
          },
          "not": {
            "type": "boolean"
          },
          "val": {
            "type": "string",
            "index": "not_analyzed"
          }
        }
      },
      "url": {
        "properties": {
          "flags": {
            "type": "string",
            "index": "not_analyzed"
          },
          "not": {
            "type": "boolean"
          },
          "val": {
            "type": "string",
            "index": "not_analyzed"
          }
        }
      }
    }
  },
  "count": {
    "type": "long"
  },
  "domain": {
    "type": "string",
    "index": "not_analyzed"
  },
  "index": {
    "type": "long"
  },
  "origin": {
    "type": "string",
    "index": "not_analyzed"
  },
  "result": {
    "properties": {
      "code": {
        "type": "integer"
      },
      "destination": {
        "type": "string",
        "index": "not_analyzed"
      },
      "function": {
        "type": "string",
        "index": "not_analyzed"
      }
    }
  },
  "source": {
    "properties": {
      "flags": {
        "type": "string",
        "index": "not_analyzed"
      },
      "not": {
        "type": "boolean"
      },
      "val": {
        "type": "string",
        "index": "not_analyzed"
      }
    }
  },
  "weight": {
    "type": "long"
  }
}

I get following error in console:

nhandled rejection TypeError: Cannot convert undefined or null to object
    at Array.forEach (native)
From previous event:
    at DocumentCreateOrUpdate.Vue.$emit (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:9342:22)
    at DocumentCreateOrUpdate.Vue.$broadcast (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:9373:41)
    at eval (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:2062:2), <anonymous>:1:25031)
    at Object.eval [as fn] (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:2062:2), <anonymous>:1:1245)
    at n (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:2062:2), <anonymous>:2:10006)
    at bound WrappedWebSocket.client.onmessage (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:2062:2), <anonymous>:2:8884)
From previous event:
    at DocumentCreateOrUpdate.Vue._callHook (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:8235:21)
    at DocumentCreateOrUpdate.ready (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:9464:10)
    at DocumentCreateOrUpdate.on (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:9261:10)
    at DocumentCreateOrUpdate.Vue.$emit (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:9342:22)
    at DocumentCreateOrUpdate.Vue._callHook (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:8238:10)
    at callAttach (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:8197:13)
    at Array.forEach (native)
    at DataLayout.onAttached (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:8185:22)
    at DataLayout.Vue.$emit (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:9342:22)
    at DataLayout.Vue._callHook (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:8238:10)
    at callAttach (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:8197:13)
    at Array.forEach (native)
    at Home.onAttached (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:8185:22)
    at Home.Vue.$emit (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:9342:22)
    at Home.Vue._callHook (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:8238:10)
    at insert (eval at <anonymous> (http://ec2-54-70-77-155.us-west-2.compute.amazonaws.com:3000/app.js:644:2), <anonymous>:9178:10)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.