Code Monkey home page Code Monkey logo

choo-cli's Introduction

choo-cli npm Build Status MIT Licensed

This is a tool for generating choo apps.

demo

To Install (you'll need at least node v6):

npm install choo-cli -g

Using choo-cli will scaffold out a project and help generate additional files like models, pages, and elements. It also generates common scripts you can use to build/test/serve your choo app.

# generate a new project folder,
# comes with package.json, readme, and recommended structure
choo new my-new-project 

# using yarn?
choo new my-new-project --yarn

# generate a new page
choo generate page my-new-page

# generate a new model
choo generate model my-new-model

# generate a new element
choo generate element my-new-element

# run your app at localhost:8080
npm start

# build your app for production
npm run build:prod

# test your app
npm test

Usage

Choo-cli runs off of node and npm, you can install choo-cli globably with the following command:

The basic signature of a choo-cli command look like this:

$ choo <command> <name> [options]

For example to create a new project skeleton we can run:

$ choo new my-project

You can now cd into my-project

$ cd my-project

Choo-cli will create a directory structure that for slim applications and reusability.

assets/        images and fonts, if you have any
elements/      standalone application-specific elements
lib/           generalized components, should be moved out of project later
models/        choo models
pages/         views that are directly mounted on the router
scripts/       shell scripts, to be interfaced with through `npm scripts`
client.js      main application entry; programmatic manifest file
package.json   manifest file

Custom templates

You can also install custom templates from Github, like this

$ choo new <project> from <github-user>/<github-repo>

Custom templates must have ejs templating syntax.

Using yarn

You can have the choo-cli use yarn over npm, like this

$ choo new <project> from <github-user>/<github-repo> --yarn
# or
$ choo new <project> --yarn
# or
$ choo new <project> --yarn from <github-user>/<github-repo>

Debug mode

Choo-cli uses debug - a popular logging framework.

Enable debug mode by adding an environment DEBUG to have choo-cli* as its value

DEBUG=choo-cli* choo new ...

Generators

You can use choo-cli to generate pieces of your project as you are developing. For example you can generate

Pages

$ choo generate page my-page

Models

$ choo generate model my-model

Elements

$ choo generate element my-element

npm scripts

Choo-cli was made for generating choo projects and code, and leverages npm scripts for certain project task. So in our project a set of npm scripts have already been generated that perform various tasks such as testing/serving/building/etc.

At any time you can review the complete list of npm scripts available by viewing package.json or by running the following command:

$ npm run

Here is complete list the the commands and their function

  • start - start dev server at localhost:8080
  • build:prod - builds your project to deploy to a server
  • test - runs unit tests, for now it will just run linting.
  • lint - runs eslint against your code

So for example you can run npm start to start a dev server. You can now see your app running at localhost:8080 first time this will pull in your node deps and start a budo server

License

MIT ©

choo-cli's People

Contributors

bertday avatar casio avatar conorcussell avatar greenkeeperio-bot avatar izumisy avatar mattmcfarland avatar pekeler avatar rollymaduk avatar ronnross avatar yerkopalma avatar zigomir 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

choo-cli's Issues

Add unit tests

[EDIT]: Need to add unit tests and cover this cli project

  • verify the files are created as expected.
  • verify directory structure is generated
  • verify generators

error on install

Expected behavior

when i npm install -g choo-cli i expect choo-cli to be installed

Actual behavior

it errors with the following message during the pre install script

/Users/gorhgorh/.nvm/versions/node/v7.3.0/bin/choo -> /Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/bin/cli.js
/Users/gorhgorh/.nvm/versions/node/v7.3.0/bin/choo-new -> /Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/bin/choo-new.js
/Users/gorhgorh/.nvm/versions/node/v7.3.0/bin/choo-generate -> /Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/bin/choo-generate.js

> [email protected] install /Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit
> node lifecycleScripts/preinstall && node lifecycleScripts/install

[nodegit] Running pre-install script
[nodegit] Configuring libssh2.
{ Error: Command failed: /Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/openssl/openssl
/Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: No crypto library found!
Try --with-libssl-prefix=PATH
 or --with-libgcrypt-prefix=PATH
 or --with-wincng on Windows

    at ChildProcess.exithandler (child_process.js:211:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:885:16)
    at Socket.<anonymous> (internal/child_process.js:334:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at Pipe._handle.close [as _onclose] (net.js:501:12)
  killed: false,
  code: 1,
  signal: null,
  cmd: '/Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/openssl/openssl' }
/Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: No crypto library found!
Try --with-libssl-prefix=PATH
 or --with-libgcrypt-prefix=PATH
 or --with-wincng on Windows

[nodegit] ERROR - Could not finish preinstall
{ Error: Command failed: /Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/openssl/openssl
/Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: No crypto library found!
Try --with-libssl-prefix=PATH
 or --with-libgcrypt-prefix=PATH
 or --with-wincng on Windows

    at ChildProcess.exithandler (child_process.js:211:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:885:16)
    at Socket.<anonymous> (internal/child_process.js:334:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at Pipe._handle.close [as _onclose] (net.js:501:12)
  killed: false,
  code: 1,
  signal: null,
  cmd: '/Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/Users/gorhgorh/.nvm/versions/node/v7.3.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/openssl/openssl' }
/Users/gorhgorh/.nvm/versions/node/v7.3.0/lib
└── (empty)

Steps to reproduce behavior

npm install -g choo-cli on my mac.
osx : 10.12.4
node : v7.3.0 (tried on 7.10 too)

full npm log here

Add build script

npm run build is currently missing - we should add it!

I am thinking all that we need for the build script is:

  • browserify to dist

Some things to consider,

We might want to follow the same pattern we made with generator choo:
https://github.com/trainyard/generator-choo/blob/master/generators/app/templates/scripts/build-prod.sh

#!/usr/bin/env bash

NODE_ENV=production browserify -e client.js -o dist \
  -t envify \
  -t sheetify/transform \
  -g yo-yoify \
  -g unassertify \
  -g es2040 \
  -g uglifyify | uglifyjs

Though I'm not sure if we want to have that much complexity.

Replace nodegit with a more stable solution

nodegit is causing some installation errors, as mentioned in issues #114 and #105

We need to remove and replace it with something which does the same thing (git clone basically) to avoid the installation problem.

If anyone picks this issue up, please assign it to yourself.

Add an option to use yarn

Expected behavior

Be able to use yarn instead of npm

Actual behavior

choo-cli always installs with npm

Steps to reproduce behavior

choo new

Details

So as in #54, I'd prefer to use yarn instead of npm, but of course in a new folder you can't implicitly check out if it's yarn. I guess a --yarn argument would make sense in this case, since there isn't a global configuration object or something like that.

If that's considered out of scope, a flag to disable installing would be the closest thing to what I want.

Input in template needs to be closed

In home.js from the generated project input

<input
      type="text"
      oninput=${(e) => send('update', { value: e.target.value })} >

Should be closed.

inconsistent signature

The signature for reducers is inconsistent. The comment says (data, state) but the example says (action, state).

how to use/import external css files in choo components ?

Hi,
I've been looking around for info on how to use/import external css files in choo.js components and can't find anything clear on this topic unfortunately and choo-cli is not making this clear either.
Please can someone clarify with an example ?

Many thanks!

Improve custom templates

Expected behavior

choo-cli should handle possible errors in custom templates and enforce good templates

Actual behavior

There's a lot of errors and edge cases that are unhandled yet:

  • If one of the underscored files isn't present the generator will crash.
  • If there's a change in a folder or file name, the rest of the generators won't work. For example: if instead of pages some template has views the page generator won't work.
  • The generator only clones a repo, without checking it's content.

Proposed solutions

  • Define as required only the choo.yaml and package.json files.
  • Define some way to change the name of all generated components in the choo.yaml file, so the generator will pick it automatically. Something like
projectName: <%= projectName %>
pages:
  name: views
elements:
  present: false

will have this behaviour in the cli

$ choo generate page about
# would generate an about.js in the views folder

$choo generate element something
'element' is disabled in this template
# show some message and skip generation
  • After cloning, check that the package.json file has choo as a dependency.

note: This is a remynder of things to be fixed. I will fix this as soon as I can, but if anyone want to help is more than welcome, also if you find anything else to improve in custom templates please comment it here.

Enhance UX

So both plop and yeoman have some pretty interfaces. I'm thinking it might be nice to have some colors (maybe using chalk library) and list out files that were updated or modified.

Add gif to README

Might be cool to add a gif to the readme of the CLI in action; give people an idea of how easy it is to generate new projects with 😁

live reload

Any reason why npm start doesn't use budo --live?

[v1.0.0-rc1] node 7 & linux `npm install` fails

Expected behavior

Given the environment of nodejs v7 using a linux operating system, npm install should succeed.

Actual behavior

npm install fails.

> [email protected] install /home/travis/build/trainyard/choo-cli/node_modules/nodegit
> node lifecycleScripts/preinstall && node lifecycleScripts/install
[nodegit] Running pre-install script
[nodegit] Configuring libssh2.
[nodegit] Running install script
node-pre-gyp
ERR! Tried to download(403): https://nodegit.s3.amazonaws.com/nodegit/nodegit/nodegit-v0.16.0-node-v51-linux-x64.tar.gz 
node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v51 ABI)

Steps to reproduce behavior

Please see https://travis-ci.org/trainyard/choo-cli/jobs/177145450, the steps are outlined in the build logs at travis-ci

Add e2e test

Create an e2e test that:

  • pulls the repo in,
  • performs cli commands
  • runs budo server
  • confirms pages load as expected.

This could easily done using snap.ci

Add style example to generated project?

Expected behavior

I personally would like to see an example of a stylesheet being used in the generated project.

I understand we probably don't want to force someone into using sheetify, but would it be better to provide some sort of example? I asked myself these questions and wanted to see how other's feel.

Do most other cli projects include styles?
Is it easier to remove them or add them ?

Actual behavior

No css being used in currently generated project.

Steps to reproduce behavior

run choo new <project>

Local dev server crashes when it's opened in the browser

So after runnint npm start I'm getting this
choo-1

As soon as I open localhost in the browser it crashes like so
choo-2

After the crash, seems that bankai keeps reloading:
choo-3

Sometimes after running npm start it just exits the cmd.

Any suggestions?

Thanks!

Add choo badge to the generated readme file

Add the choo badge to the generated readme file found in generators/app/template

[![built with choo v3](https://img.shields.io/badge/built%20with%20choo-v3-ffc3e4.svg?style=flat-square)](https://github.com/yoshuawuyts/choo)

Which looks like this:

built with choo v3

Demo App uses wrong property

Expected behavior

Demo app should return value of input

Actual behavior

It returns nothing (probably undefined)

Steps to reproduce behavior

Running node v6.10.0. Just generate a new app. I'm not sure where this code lives, otherwise I'd try to fix it, but this:

    update: function (state, data) {
      return { title: data.value }
    }

needs to change to:

    update: function (state, data) {
      return { title: data }
    }

Add contributing.md

Add contributing file to help facilitate the free and open sourceness of this project.

This will contain instructions on using git with the project to stay up to date and using npm to test and to run it as well.

Generators doesn't validate names

Expected behavior

Should add only valid functions in generators

Actual behavior

Doesn't validate, so it generate functions that will throw exceptions

Steps to reproduce behavior

In any choo generated project run

$ choo generate page 404

and will generate a file exporting a function 404 () which is invalid

Build failing

Expected behavior

Build should pass

Actual behavior

Build fails

Steps to reproduce behavior

run npm test - need to fix unit tests!

Generators fail to generate templates in windows

Expected behavior

Generator should generate corresponding templates in commandline
choo generate page newpage or
choo generate element newElement
should trigger generator build

Actual behavior

generator fails to generate templates but rather it throws an error in windows console.

C:\Program Files (x86)\Nodist\bin\node_modules\choo-cli\bin\choo-generate.js:36
  throw e
  ^
AssertionError: Trying to copy from a source that does not exist: C:\Users\rolly_000\WebstormProjects\CWCSProject\client\elements\C:\Program Files (x86)\Nodist\bin\node_modules\choo-cli
\generators\element\template.js
    at EditionInterface.exports._copySingle (C:\Program Files (x86)\Nodist\bin\node_modules\choo-cli\node_modules\mem-fs-editor\lib\actions\copy.js:45:3)
    at EditionInterface.exports.copy (C:\Program Files (x86)\Nodist\bin\node_modules\choo-cli\node_modules\mem-fs-editor\lib\actions\copy.js:23:17)
    at EditionInterface.module.exports [as move] (C:\Program Files (x86)\Nodist\bin\node_modules\choo-cli\node_modules\mem-fs-editor\lib\actions\move.js:4:8)
    at mv (C:\Program Files (x86)\Nodist\bin\node_modules\choo-cli\lib\utils.js:35:28)
    at generate (C:\Program Files (x86)\Nodist\bin\node_modules\choo-cli\lib\utils.js:38:3)
    at Object.module.exports [as element] (C:\Program Files (x86)\Nodist\bin\node_modules\choo-cli\generators\element\index.js:8:3)
    at Object.<anonymous> (C:\Program Files (x86)\Nodist\bin\node_modules\choo-cli\bin\choo-generate.js:33:23)
    at Module._compile (module.js:556:32)
    at Object.Module._extensions..js (module.js:565:10)
    at Module.load (module.js:473:32)
C:\Program Files (x86)\Nodist\bin\node_modules\choo-cli\lib\exec.js:10
      throw new Error('Error code: ' + code)
      ^

Error: Error code: 1
    at ChildProcess.exec.on.code (C:\Program Files (x86)\Nodist\bin\node_modules\choo-cli\lib\exec.js:10:13)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at ChildProcess.cp.emit (C:\Program Files (x86)\Nodist\bin\node_modules\choo-cli\node_modules\cross-spawn\lib\enoent.js:40:29)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)

Steps to reproduce behavior

enter choo generate command in command line e.g
choo generate page newPage

Installation error related to libssh2

Expected behavior

choo-cli successfully gets installed

Actual behavior

In installation process, npm install -g choo-cli puts this error log.

izumisy@Seiya-no-MacBook-Air:~/devs
 $ npm install -g choo-cli
/Users/izumisy/.nvm/versions/node/v6.5.0/bin/choo-new -> /Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/bin/choo-new.js
/Users/izumisy/.nvm/versions/node/v6.5.0/bin/choo-generate -> /Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/bin/choo-generate.js
/Users/izumisy/.nvm/versions/node/v6.5.0/bin/choo -> /Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/bin/cli.js

> [email protected] install /Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit
> node lifecycleScripts/preinstall && node lifecycleScripts/install

[nodegit] Running pre-install script
[nodegit] Configuring libssh2.
{ Error: Command failed: /Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/openssl/openssl
/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2':
configure: error: C compiler cannot create executables
See `config.log' for more details

    at ChildProcess.exithandler (child_process.js:206:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:877:16)
    at Socket.<anonymous> (internal/child_process.js:334:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at Pipe._handle.close [as _onclose] (net.js:493:12)
  killed: false,
  code: 77,
  signal: null,
  cmd: '/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/openssl/openssl' }
/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2':
configure: error: C compiler cannot create executables
See `config.log' for more details

[nodegit] ERROR - Could not finish preinstall
{ Error: Command failed: /Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/openssl/openssl
/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2':
configure: error: C compiler cannot create executables
See `config.log' for more details

    at ChildProcess.exithandler (child_process.js:206:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:877:16)
    at Socket.<anonymous> (internal/child_process.js:334:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at Pipe._handle.close [as _onclose] (net.js:493:12)
  killed: false,
  code: 77,
  signal: null,
  cmd: '/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/Users/izumisy/.nvm/versions/node/v6.5.0/lib/node_modules/choo-cli/node_modules/nodegit/vendor/openssl/openssl' }
/Users/izumisy/.nvm/versions/node/v6.5.0/lib
└── (empty)

Steps to reproduce behavior

Just run npm install -g choo-cli
My environment is Node 6.5.0 with npm 3.10.3 on OSX El Capitan 10.11.6

Cannot find module '../build/Debug/nodegit.node'

Expected behavior

The same as document describes.

Actual behavior

Error: Cannot find module '../build/Debug/nodegit.node'

Steps to reproduce behavior

  1. npm install choo-cli -g
  2. choo new my-first-choo-app

npm: '4.2.0',node: '7.10.0', mac os 10.11.6

choo new --help creates an app

Expected behavior

I was expecting to have some help info displayed.

Actual behavior

a directory was created "help" and within it a new app was created

Steps to reproduce behavior

npm install -g choo-cli
choo new --help

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.