Code Monkey home page Code Monkey logo

amityapp's Introduction

Amity Database Manager

NPM

Amity - a web-based database admin interface

PROGRESS REPORT

Amity is currently only useful as a MongoDB Viewer. Full editing capabilities are in the works.

After making a JavaScript app duplicating functionality of the mongo-express project, I realized the potential for this app is far greater than just a MongoDB manager. I started the year off with a grand-slam feature creep: Amity will manage multiple servers of different types (SQL, MongoDB, then more). If you need a MongoDB manager right away, please use mongo-express.

Screenshots

Amity uses Node.js and FeathersJS on the server, CanJS and Steal on the client.

It currently only supports MongoDB.

Features & Development Plan

  • Connect to multiple servers. v0.1
  • Support for replica set connections v0.1
  • Add databases over API without server restart. v0.1
  • Upgrade Server to use FeathersJS. v0.1
  • Realtime socket communication - using FeathersJS v0.1
  • Flexible service setup v0.1
  • Dead-simple setup. No more config files! v0.1
  • Add databases from the browser without server restart. v0.2
  • Create new Feathers service upon adding a new server.
  • Make more NPM friendly as sub-module. v0.2
  • Add tests for test-assisted development v0.3
  • Allow standalone mode? (Use an internal Feathers server) v0.4
  • Create MySQL service for FeathersJS v0.5
  • Custom Adapter API (server side) v0.7
  • SQL Adapter based on API v0.8
  • Security Release v1.0
  • User authentication for app linked to DB credentials. v1.0
  • Token Auth/Login v1.0
  • Ready for public server. v1.0
  • Database blacklist/whitelist - Show/hide dbs. v1.0

MongoDB Support

  • Authenticate to MongoDB as admin to view all databases. v0.1
  • Connect and authenticate to individual MongoDB databases. v0.1
  • Handle bad auth v0.2
  • CRUD for Databases - v0.2
    • View Databases, based on permissions.
    • Create Databases
    • Create new Feathers service upon database creation.
    • Rename Databases
    • Drop Databases
  • CRUD for Collections - v0.2
    • View Collections
    • Create Collections
    • Create new Feathers service upon collection creation.
    • Rename Collections
    • Delete Collections
  • CRUD for Documents - v0.2
    • View Documents
    • Create Documents
    • Modify Documents
    • Delete Documents
  • Use BSON data types in documents v0.2
  • Add/Remove Users from DB - v0.3
  • Customizeable document._id property v0.5
  • GridFS support?

MongoDB UI Features:

  • JSON Editor view. v0.1
  • Grid view. - Select which fields to show for quick comparison. v0.4
  • Color-coded database tiles. v0.4
  • Drag and Drop support
    • Drag and Drop documents between databases/collections.
    • Drag and Drop image/logos onto db tile. Link or Upload to S3 or Dropbox(?) v0.4
    • Drag and Drop entire collections between databases.
  • Enable/Disable Trash Implementation for delete. v0.2
  • When running the server without a configuration store, change the UI color to show that we're running in volatile mode. Shutting down the server without exporting the running-config will cause changes to be lost. v0.6
  • Web-based command-line MongoDB interface (Client Module) v1.5

The Configuration Store

If an adapter is passed in the amity() function at startup, it will automatically be setup as the configuration store.

Mind Map of Current Plans

Limitations

  • Until version 1.0, this shouldn't be installed on a publicly-accessible server.

Amity should only be used privately, for development purposes. The web interface can be used for executing malicious javascript on the MongoDB server. This will be improved by version 1.0.

You can still access remote database servers, but it is highly recommended that your local machine is not available for remote web access while Amity is running.

Installation

##1. Download

From Github - recommended

git clone https://github.com/marshallswain/amity Amity

From NPM:

Not recommended, yet.

npm install amity

Currently, you'll have to copy the module from the node_modules directory to the project directory and set up your config file and package.json. This will be improved in the future.

2. Configure

A config file is no longer necessary. Use a MongoDB adapter, and pass it a connection string.

'use strict';

var feathers = require('feathers'),
  amity = require('amity'),
  bodyParser = require('body-parser');

// Prep the Feathers server.
var app = feathers()
  .use(feathers.static(__dirname + '/public'))
  .use(bodyParser.json())
  .use(bodyParser.urlencoded({extended: true}))
  .configure(feathers.socketio())
  .configure(feathers.rest());

// The config object is optional. Default prefix is 'api'.
var config = {apiPrefix:'api/v1'};
// Start Amity with the Amity MongoDB Adapter as a configuration store.
amity.start(app, config, new amity.adapters.MongoDB('mongodb://localhost:27017'));

// Start the server.
var port = 8081;
app.listen(port, function() {`````
  // app.use('/api/tasks', require('./services/tasks'));
  console.log('Feathers server listening on port ' + port);
});

3. Start the Server

node server

Visit http://localhost:8081

About Contributing

This project uses Gulp, StealJS, and can-compile for its build setup.

Once you have the server up and running, open another terminal tab and run gulp. It will watch for changes in the public/main directory and rebuild the files in the public/assets directory. This will be further simplified in the near future when CanJS adds built-in support for StealJS.

License

MIT

Author

Marshall Thompson

Inspired by mongo-express by Chun-hao Hu

amityapp's People

Contributors

marshallswain avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

Forkers

neotim

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.