Coder Social home page Coder Social logo

cubic-js / cubic Goto Github PK

View Code? Open in Web Editor NEW
16.0 16.0 3.0 8.6 MB

📦 Easy to scale, zero-config, real-time focused app platform for node.js

License: MIT License

JavaScript 90.94% Shell 1.03% Vue 4.23% HTML 0.35% SCSS 3.45%
lightweight modular nodejs-framework restful-api websockets

cubic's People

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

cubic's Issues

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this 💪.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit to the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


Invalid npm token.

The npm token configured in the NPM_TOKEN environment variable must be a valid token allowing to publish to the registry https://registry.npmjs.org/.

If you are using Two-Factor Authentication, make configure the auth-only level is supported. semantic-release cannot publish with the default auth-and-writes level.

Please make sure to set the NPM_TOKEN environment variable in your CI with the exact value of the npm token.


Good luck with your project ✨

Your semantic-release bot 📦🚀

Error Verbosity

From @Kaptard on April 24, 2017 7:37

Invalid requests return no information about rejection reason.

To fix: Return Error Object with proper reason. If return value instance of error -> send error back.

Copied from original issue: nexus-devs/NexusHub#9

Manual production setup too difficult

Manual setup is way too difficult and involves too many steps. See below:

  • Generate RSA keypair*
  • Load RSA keys at relevant nodes in index.js
  • Create Users with root permission (optimally for each node)*
  • Add user key/secret at relevant nodes in index.js
  • Also: Keys may need to be copied to different servers when running cross-server environments

* could be automated
Index.js modifications could be automated too, but might be a bit too hacky


Possible Solutions:

  • CLI tool to automate these things
  • (Preferrably) Automate from within the framework.
    -> RSA keypairs are generated automatically if given value is empty (update default config for this)
    -> No index.js editing necessary, we'd just update the blitz.config
    -> Have a service in the blitz.js loader which is activated in production and generates keys for each
    loaded core node type
    -> Again no index.js editing necessary, just modify the keys and pass new config to worker
    initialization in loader

Note: For the second solution, the generated data needs to be written to config anyway, which makes me think we could do this by default, even during development. However this would require to allow any connections on /token calls in development since the default user will be overwritten and databases with the new users might get dropped.

Cluster broken

Clustering modules currently broken.

  1. child_process.fork(/path/to/server.js) still causes EADDRINUSE errors
  2. API-Node requires common place to handle all connected Core-Nodes. Otherwise some api-nodes won't have any core-node to send requests to.
  3. There's currently no mechanism to prevent single request being processed by multiple core-nodes, since requests are merely broadcasted in /root nsp. Suggestion: Send "req" to nodes -> First node to answer with "ok" is passed the actual request to.

Adapt readme to 0.4.0 changes

0.4.0 moves all loader logic into blitz-js-loader and serves as a wrapper for the main modules (api, core, auth, view) instead.

Add log level 'overview' or 'monitor'

Shows status of active nodes. Which nodes are running? How many nodes are alive? How many connections are present on each node? How much CPU/RAM does each node take? Also add node specific information, eg:

  • Requests/s on API node
  • Clients on API node
  • Availability of core nodes
  • etc

Implement as CLI or web-page, although Web-Page seems easier to maintain. MVP would include very basic information and should work as 'status page' for public use as well.

Logger improvements

Attach logger to global blitz object. Use to determine log levels. E.g. blitz.log.silly("smth").
Adjustable via config.

Provide a 0-config quickstart method with all important nodes.

Having a function that can be used for a 0-config setup, which automatically generates example files unless already present, would likely make the framework much more accessible. It would also create a basis for quick prototyping, which I could've used personally a couple of times already.

Refactor UI backend

Vue 3 is coming out soon with some nice stuff, for example faster SSR and native suspense. Migrate to Vue 3 once it's out of beta and switch from Webpack to Rollup once there's a Vue 3 plugin for it.

Scale initial connect timeout

So, instead of having a hardcoded timeout of 500ms/1000ms, it should scale by 100ms * 2 every reconnect attempt.

This way we'll ensure that low bandwidth connections can still reach the API.

Get rid of clustering mechanism

The current clustering mechanism with multiple spawned child processes is pointless when the same can be done much more easily through docker. It also reduces the code base, improves performance and enhances reliability.

tl;dr, remove clustering, there are no downsides.

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this 💪.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit to the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


Invalid npm token.

The npm token configured in the NPM_TOKEN environment variable must be a valid token allowing to publish to the registry https://registry.npmjs.org/.

If you are using Two-Factor Authentication, make configure the auth-only level is supported. semantic-release cannot publish with the default auth-and-writes level.

Please make sure to set the NPM_TOKEN environment variable in your CI with the exact value of the npm token.


Good luck with your project ✨

Your semantic-release bot 📦🚀

api node sometimes doesn't receive check response

See http://imgur.com/a/lbvVN for reference.
Check is sent, core node should have responded, at least it logs the incoming check, but API considers the node busy. That would mean the timeout set in before the response got back.

Edit: After further investigation, publish and cache transmissions take way longer than their initial request resolve. The more these 'pile up', the more likely that the API gets no response.

Edit2: Check acknowledged returns in a similar bulk. Must be something with Socket.io.

Automated testing

Main framework and all modules require automated testing. Different connection/authorization combinations. Malformed requests on every single route. Etc.

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this 💪.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit to the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


Invalid npm token.

The npm token configured in the NPM_TOKEN environment variable must be a valid token allowing to publish to the registry https://registry.npmjs.org/.

If you are using Two-Factor Authentication, make configure the auth-only level is supported. semantic-release cannot publish with the default auth-and-writes level.

Please make sure to set the NPM_TOKEN environment variable in your CI with the exact value of the npm token.


Good luck with your project ✨

Your semantic-release bot 📦🚀

Handle errors during requests

Right now, if an error occurs on either the API or Core node, it simply doesn't respond. Instead, we should put a try/catch around it on both the API and Core node, and return the error in plaintext in development, or encrypted in production.

direct method access to workers not working on linux

tested on ubuntu 16.04.

0|index    | /var/www/live/warframe-nexus/node_modules/blitz-js-api/index.js:49
0|index    |         this.server.use(route, fn, "GET")
0|index    |                    ^
0|index    |
0|index    | TypeError: Cannot read property 'use' of undefined
0|index    |     at api.get (/var/www/live/warframe-nexus/node_modules/blitz-js-api/index.js:49:20)
0|index    |     at process.on.msg (/var/www/live/warframe-nexus/node_modules/blitz-js-util/index.js:44:44)
0|index    |     at emitTwo (events.js:106:13)
0|index    |     at process.emit (events.js:194:7)
0|index    |     at process.nextTick (internal/child_process.js:766:12)
0|index    |     at _combinedTickCallback (internal/process/next_tick.js:73:7)
0|index    |     at process._tickCallback (internal/process/next_tick.js:104:9)

API caching

Add caching for the API to pull in case of a lot of requests

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on all branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.

Since we didn’t receive a CI status on the greenkeeper/initial branch, it’s possible that you don’t have CI set up yet. We recommend using Travis CI, but Greenkeeper will work with every other CI service as well.

If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/.

Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please delete the greenkeeper/initial branch in this repository, and then remove and re-add this repository to the Greenkeeper App’s white list on Github. You'll find this list on your repo or organization’s settings page, under Installed GitHub Apps.

Doc for initial redis setup?

There's no documentation about it, but the initial setup presented in README.md causes errors if you don't have a local Redis instance set up.

Might just need a mention that it is required. (Along with others that I'll list below as I find them)

  • Redis
  • MongoDB

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this 💪.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit to the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


Invalid npm token.

The npm token configured in the NPM_TOKEN environment variable must be a valid token allowing to publish to the registry https://registry.npmjs.org/.

If you are using Two-Factor Authentication, make configure the auth-only level is supported. semantic-release cannot publish with the default auth-and-writes level.

Please make sure to set the NPM_TOKEN environment variable in your CI with the exact value of the npm token.


Good luck with your project ✨

Your semantic-release bot 📦🚀

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.