Giter Site home page Giter Site logo

genghis's Introduction

The single-file MongoDB admin app, by Justin Hileman.

Build Status Dependency Status

Genghis

There are more ways to run Genghis than you can shake a stick at

Standalone

If you installed Genghis as a Ruby gem, running Genghis standalone is easy:

$ genghisapp

Now that it's running, you can use genghisapp --kill to stop it.

Windows users: Due to this bug Genghis always runs in foreground mode.

If you didn't go the gem route, you can still run genghis.rb standalone:

$ ruby genghis.rb

genghis.php can also be run as a PHP 5.4 CLI SAPI standalone server:

$ php -S localhost:8000 genghis.php

In your LAMP stack

Simply drop genghis.php in a web-accessible directory on a LAMP server. Don't forget .htaccess for pretty URLs!

With nginx and PHP-fpm (and friends)

You'll need some fancy config action, but it's fairly straightforward.

In an existing Rack app

For a super basic Rack config, use a config.ru file like this:

require 'genghis'

run Genghis::Server

If you want to load Genghis on a subpath, possibly alongside other apps, it's easy to do with Rack's URLMap:

require 'genghis'

run Rack::URLMap.new \
  '/'        => Your::App.new,
  '/genghis' => Genghis::Server.new

With Rails 3

You can even mount Genghis on a subpath in your existing Rails 3 app by adding require 'genghis' to the top of your routes file (or in an initializer) and then adding this to routes.rb:

mount Genghis::Server.new, :at => '/genghis'

Genghis Dependencies

PHP

You will need at least PHP 5.2 and the PECL MongoDB driver.

Ruby

Genghis requires Ruby 1.8 or awesomer.

The easiest way to install Genghis and all dependencies is via RubyGems:

$ gem install genghisapp

Or you could check out a local copy of the Git repo and install dependencies via Bundler:

$ gem install bundler
$ bundle install

Configuration

Check the Genghis wiki for additional configuration information.

License

Genghis uses a number of amazing open source libraries, distributed under the following licenses

genghis's People

Contributors

bobthecow avatar butsjoh avatar craigerm avatar o avatar pborreli avatar redexp avatar slykar avatar tylerbrock avatar ys 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  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  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

genghis's Issues

"Couldn't get a file descriptor referring to the console" when starting genghis on Ubuntu

On Ubuntu, I see the following when starting up genghis:

user@host:~$ genghisapp 
[2012-09-26 16:08:58 -0400] Starting 'genghisapp'...
[2012-09-26 16:08:58 -0400] trying port 5678...
Couldn't get a file descriptor referring to the console

Some quick web searches leads me to believe that the command being used to attempt to launch my web browser with the URL of the newly started genghis isn't quite right for Ubuntu. This is further evidenced by the fact that the browser launch never happens.

Saving a document with a date field in it causes the date value to revert to epoch time

Hello, I'm also having a problem with dates. Whenever I try and save a document containing a date, the date seems to reset to what seems like UNIX epoch time:

ISODate("1969-12-31T17:00:00-07:00")

When saving the document, I see that the response contains an error:

Warning: MongoDate::__construct() expects parameter 1 to be long, string given in /[...]/genghis.php on line 18

I am using MAMP (PHP 5.3.6), Mongo 2.2.0, and the version of the PHP driver I'm using is 1.2.12.

_id: null

Genghis fails to handle objects that have null for id, e.g. {_id: null}

I put in a bad host and now it's stuck

I checked ~/.vegas/genghisapp for any clues, but restarting the server hasn't helped. It's just spinning waiting for the hosts to load.

I'm not sure what was bad about my connection but it got stuck after a new one. How can I reset genghis to default?

HTML entities

Genghis (2.0) html entities escaping is broken.

Object stored in mongodb: { test:"<html></html>" }

Expected view in genghis: { test: "<html></html>" }

Actual view: { test: "&lt;html&gt;&lt;/html&gt;" }

error "DateTime is not currently supported" when saving edited document

steps to reproduce (genghis version 2.1.2 with MongoDB v2.2.1-rc0):

  1. display a document containing at least one DateTime
  2. start editing document (not modifying any DateTime)
  3. save document (triggering PUT)

document does not get saved, Firebug shows error with status code 500:

{
"error":"DateTime is not currently supported; use a UTC Time instance instead.",
"status":500
}

and rails console reports:

BSON::InvalidDocument - DateTime is not currently supported; use a UTC Time instance instead.: .../gems/bson-1.7.0/lib/bson/bson_c.rb:24:in serialize' ..... /gems/genghisapp-2.1.2/genghis.rb:245:inupdate'

"Add Server" adds server to list, but then genghis can't connect to it

When I add a server via the "Add Server" button with an IP address or hostname (e.g. "pegasus" or "192.168.1.20"), the server is added to the list. However, the databases column in the list is blank, and the size column displays NaN undefined. If I refresh the page, the server is no longer on the list. If I tail the log while adding the server, I see the following error and trace:

localhost - - [28/Sep/2012:08:28:45 EDT] "POST /servers HTTP/1.1" 500 93
http://localhost:5678/ -> /servers
NameError - undefined local variable or method `name' for #<Genghis::Server:0x007f4c3403bda8>:
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/genghisapp-2.0.2/genghis.rb:502:in `add_server'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/genghisapp-2.0.2/genghis.rb:607:in `block in <class:Server>'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:in `call'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:in `block in compile!'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in `[]'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in `block (3 levels) in route!'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:851:in `route_eval'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in `block (2 levels) in route!'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:872:in `block in process_route'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:870:in `catch'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:870:in `process_route'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:834:in `block in route!'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:833:in `each'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:833:in `route!'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:936:in `dispatch!'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:769:in `block in call!'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:in `block in invoke'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:in `catch'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:in `invoke'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:769:in `call!'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:755:in `call'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in `call'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in `call'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in `call'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in `call'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in `call'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in `call'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:99:in `call'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:1389:in `block in call'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:1471:in `synchronize'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/sinatra-1.3.3/lib/sinatra/base.rb:1389:in `call'
    /home/matt/.rvm/gems/ruby-1.9.3-p194@genghis/gems/rack-1.4.1/lib/rack/handler/webrick.rb:59:in `service'
    /home/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
    /home/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
    /home/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'

Authentication Support?

When I add a user with mongodb://user:pass@host:port it shows the power database and size, however when I click the server I get:

If you think you've reached this message in error, please press 0 to speak with an operator. Otherwise, hang up and try again.

Is there a special way to add servers using auth?

Support for extra_opts in connection string (like {:ssl => true, :... => ...})

Since we run all our MongoDB instances with SSL it would be nice, if there is a possibility to specify these extra_options in the connection string:

http://docs.mongodb.org/manual/administration/ssl/

Since genghis uses Mongo::Connection.from_uri this should be an easy task ;-)

http://www.rubydoc.info/github/mongodb/mongo-ruby-driver/master/Mongo/Connection#from_uri-class_method

Connection options and extra options of the mongo driver (GENERIC_OPTS and CONNECTION_OPTS):

http://api.mongodb.org/ruby/current/Mongo/Connection.html

Example of a working connection string:

con = Mongo::Connection.from_uri('mongodb://dummy:[email protected]/admin', :ssl => true)

Thanks for this great app!

Don't auto-expand large documents

I've noticed that with some collections I have which contain either a large number of properties or fairly large embedded arrays, genghis will pretty much freeze up for sometimes up to a minute while it renders the JSON. It would be nice if there was a way to limit the number of expanded items, or disabled auto expanding completely.

Not really an issue but ...

This is the first mongo browser I've tried that I liked straight away. Nice work!!

Hopefully this random compliment filed as an issue won't bother you too much. It's meant to promote happiness and satisfaction.

Key 'class'

Rendering weirdness again. Whenever there's a key with a key class it gets quoted.

Data: {class: "foo"}

Expected render:

{
    class: "foo"
}

Actual render:

{
    "class": "foo"
}

Weird object render

Another minor glitch in js. Not sure what causes this but I think it's 2 consecutive fields with arrays.
Data:
{ _id: ObjectId("5074285671d82f2f61000000"), foo: [ { data: "data" } ], bar: [] }

Expected render:

{
    _id: ObjectId("5074285671d82f2f61000000"),
    foo: [
        {
            data: "data"
        }
    ],
    bar: []
}

Actual render:

{
        _id: ObjectId("5074285671d82f2f61000000"),
        foo: [
        {
            data: "data"
        }
    ],
        bar: []
}

Non-SSL connection causing mixed-content warning

When Genghis retrieves a font from fonts.googleapis.com, it does it over a connection not secure by SSL. This causes a mixed-content / partial-encryption warning in browsers when Genghis is served from an SSL source.

fonts.googleapis.com allows https://, which eliminates the warning.

Unable to run genghis

When trying to execute, the following shows up in the error log:

2012/06/27 03:02:51 [error] 29021#0: *1 FastCGI sent in stderr: "PHP Notice:  Use of undefined constant __COMPILER_HALT_OFFSET__ - ass
umed '__COMPILER_HALT_OFFSET__' in /srv/www/web/genghis/genghis.php on line 13
PHP Stack trace:
PHP   1. {main}() /srv/www/web/genghis/genghis.php:0
PHP   2. Genghis_App->run() /srv/www/web/genghis/genghis.php:25
PHP   3. Genghis_App->route() /srv/www/web/genghis/genghis.php:13
PHP   4. Genghis_App->renderTemplate() /srv/www/web/genghis/genghis.php:13
PHP   5. Genghis_App->initAssets() /srv/www/web/genghis/genghis.php:13
PHP Warning:  file_get_contents() expects parameter 4 to be long, string given in /srv/www/web/genghis/genghis.php
on line 13
PHP Stack trace:
PHP   1. {main}() /srv/www/web/genghis/genghis.php:0
PHP   2. Genghis_App->run() /srv/www/web/genghis/genghis.php:25
PHP   3. Genghis_App->route() /srv/www/web/genghis/genghis.php:13
PHP   4. Genghis_App->renderTemplate() /srv/www/web/genghis/genghis.php:13
PHP   5. Genghis_App->initAssets() /srv/www/web/genghis/genghis.php:13
PHP   6. file_get_contents() /srv/www/web/genghis/genghis.php:13
PHP Notice:  Undefined index: index.html.mustache in /srv/www/web/genghis/genghis.php on line 13
PHP Stack trace:
PHP   1. {main}() /srv/www/web/genghis/genghis.php:0
PHP   2. Genghis_App->run() /srv/www/web/genghis/genghis.php:25
PHP   3. Genghis_App->route() /srv/www/web/genghis/genghis.php:13
PHP   4. Genghis_App->renderTemplate() /srv/www/web/genghis/genghis.php:13" while reading response header from upst
ream, client: 80.72.154.10, server: , request: "GET /genghis/genghis.php HTTP/1.1", upstream: "fastcgi:/127.0.0.1:9
000", host: "example.com"

I'm running on nginx 1.1.7, with php:
PHP 5.3.2-1ubuntu4.7ppa5~lucid1 (fpm-fcgi) (built: Jan 14 2011 13:40:51)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
with Xdebug v2.0.5, Copyright (c) 2002-2008, by Derick Rethans
with Suhosin v0.9.29, Copyright (c) 2007, by SektionEins GmbH

Any clues what might be wrong?

101 line bug

When editing long documents, only 101 lines are drawn. Other lines can be seen only after clicking/scrolling below the rendered content

[feature req] textarea for larger queries

First, thanks for the building this great client. It's the simplest and best looking client I've used so far. In addition to a text area for larger queries, I'd also love to see support for map/reduce queries and additional advanced query support.

Thanks!

doen't work

sudo gem install bson_ext
Building native extensions.  This could take a while...
Successfully installed bson_ext-1.7.0
1 gem installed

and still I have:

MongoDB driver C extension not found.
Install this extension for better performance: gem install bson_ext`

Empty array and object field values are displayed the same

This is likely a shortcoming of the PECL driver, not Genghis, but I wanted to run it by you anyway. I have two records in Mongo that have an array and object for a particular field.

> db.program.find(ObjectId("4eefe2977cdec12246000474"), {foo:1});
{ "_id" : ObjectId("4eefe2977cdec12246000474"), "foo" : [ ] }
> db.program.find(ObjectId("4f5152f122f0e15429001078"), {foo:1});
{ "_id" : ObjectId("4f5152f122f0e15429001078"), "foo" : { } }

Genghis happens to render both instances of foo as [] when displaying the documents, although MongoDB's JS console will properly differentiate.

Non-Functional Genghis.php

I thought it was just because I'd left out the src and assets folder from the git repo, but even after adding them this is the only thing on the screen: http://puu.sh/x5TW

I'd thought that a majority of the functionality and css/js assets were packed into genghis.php, but as this screen shows it isn't exactly giving stellar results.

NGINX + PHP5-FPM + Mongo 1.2.10

Be able to shutdown/restart app from web interface

When I checked the app now, it said there's a new version. But I had to grep for the pid to shut it down after updating the gem. It would be nice to just be able to restart/shutdown the app from the web interface.

"Unexpected token ILLEGAL" on document Save

If I click "Edit" on a document when viewing the contents of a collection and then click "Save", sometimes I get an "Unexpected token ILLEGAL" error even if I didn't make any changes to the document. Based on the line number called out by the error, this seems to be caused by [ ... ] showing up where it shouldn't.

When viewing such a document in the non-edit view, there is an array field with a large number of values that is collapsed and displayed like:

fieldname: [ ... ],

When I click edit, the field is not collapsed, and is displayed like:

fieldname: [
    {
        anotherfield: "somevalue"
    },
    {
        anotherfield: "somevalue"
    }
][ ... ],

It seems to me that the [ ... ] shouldn't be there.

Support read-only view of secondary replica set nodes

This is a wishlist item:

It would be handy to be able to connect genghis to secondary replica set nodes for a read-only view. I don't know know how involved this might be; at the very least, it will require executing the equivalent of "rs.slaveOk()" after connecting.

Config with Server data

I liked to be able to store the connection details in an optional config to not have to enter it every time.

My genghis is restricted in access by http_auth, so it's not a security issue.

I know that this would break the single file mentality, that's why it should be optional.

Searching/querying does not work if magic quotes enabled

Awesome app, very happy using it so far.

For some reason, I'm not able to run queries properly from the search field. The query is sent in the headers to the server, but the response just includes all documents in the collection.

For example, I have a users collection, and a specific document containing the attribute "firstName" with the value "Ajay". Searching { firstName: "Ajay" } returns all documents in the users collection.

What makes this issue even weirder is that if I simply type in a document id in the search field and hit the search button, that correctly returns the specified document.

I am running the current version of Genghis (2.1.2) on MAMP (PHP 5.3.6).

404s and empty pages on single-document views (when ids are not Mongo-generated?)

I get 404s and empty pages when going into the "detailed" single-document view (e.g. http://localhost/genghis/servers/localhost/databases/amazon_product/collections/similarities/documents/0060517123) though I know these documents exist (they're listed in the "list" view, for one).

Not sure why, but this seems to only happen on collections where ids were not autogenerated by MongoDB (those are barcode-like natural ids).

Negative numbers and line 101

Trying to save an object which contains a field with a negative number gives an UnaryExpression error on line 18 (even if the object is 3 lines long).
E.g. { foo: -1} will be impossible to save

Another issue: when editing long documents, only 101 lines are drawn. The others can be seen only after clicking/scrolling below the rendered content.

genghisapp bin crashes on launch

I type genghisapp into the terminal after a successful gem install and this is what I get:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': /Library/Ruby/Gems/1.8/gems/genghisapp-2.1.0/genghis.rb:644: odd number list for Hash (SyntaxError)
          error(status, {error: message, status: status}.to_json)
                               ^
/Library/Ruby/Gems/1.8/gems/genghisapp-2.1.0/genghis.rb:644: syntax error, unexpected ':', expecting '}'
          error(status, {error: message, status: status}.to_json)
                               ^
/Library/Ruby/Gems/1.8/gems/genghisapp-2.1.0/genghis.rb:644: syntax error, unexpected ':', expecting '='
          error(status, {error: message, status: status}.to_json)
                                                ^
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from /Library/Ruby/Gems/1.8/gems/genghisapp-2.1.0/bin/genghisapp:9
    from /usr/bin/genghisapp:19:in `load'
    from /usr/bin/genghisapp:19

Suggestions?

Read-only mode

Is it possible to implement a read-only mode when viewing a mongo server so I can allow other users to view the server without accidentally deleting documents or collections?

Upgrade to latest Backbone version

I'm currently in the process of learning Backbone. I noticed that Genghis uses a slightly old version of Backbone. Would you say it is still a good app I could learn Backbone from? Are you considering upgrading Backbone to a newer version?

Add keyboard shortcuts

You call this an app? What kind of app doesn't have any hotkeys?

Let's start with these

App-wide

  • ? — Keyboard shortcut cheat sheet — implemented in 906e15b
  • s — Go to Servers — implemented in f919908
  • u — Go up one level — implemented in 950ae38

Servers

  • c — Create a new server — implemented in 0596c67

Databases

  • c — Create a new database — implemented in 0596c67

Collections

  • c — Create a new collection — implemented in 0596c67

Documents

  • c — Create a new document — implemented in 0596c67
  • / — Search — implemented in 88bc4b4
  • n / p — Next/previous page — implemented in 692d356
  • + / - — Collapse / expand all documents
  • alt+0-9 — Collapse / expand all documents to the given level

Single-document

  • / — Search — implemented in 88bc4b4
  • + / - — Collapse / expand document
  • alt+0-9 — Collapse / expand document to the given level

PHP standards

Genghis is failing on servers where php warnings/notices are displayed. Call to /geghis.php/servers spews out this:

Notice: Undefined index: databases in genghis.php on line 14

Warning: array_map(): Argument #2 should be an array in genghis.php on line 14

Notice: Undefined index: totalSize in genghis.php on line 14

Usually this is harmless but because the js part is expecting JSON these messages brake the script.

Possible sollutions: following strict standards or error_reporting(0);

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.