Evox
Packaged Environment Manager - Generates packages from objects which can deploy to any framework across many languages.
WARNING: Evox is in development and has not passed testing. DO NOT USE IN LIVE ENVIRONMENTS!
Installation
$ sudo npm install -g nodemon
$ sudo npm install -g phonegap
$ sudo npm install -g evox
$ sudo evox profile https://github.com/evelution/server
$ sudo evox profile https://github.com/evelution/admin
$ sudo evox profile https://github.com/evelution/web
cd [PROJECT_DIRECTORY]
$ evox create
- Point Apache to deploy/admin
- Point Apache to deploy/web
$ evox
CLI Commands
evox - Alias for "evox help"
evox create [profile] [name] - Creates an environment
evox database - Adds a database to evox.json
evox deploy - Deploys entire build to environments
evox environment - Updates environment settings.
evox generate [name] [env] - Generates a package given the
schema.json in that same folder
evox install [link] - Installs package from remote
sudo evox profile [link] - Adds a profile
evox relate [name] - Generates a relational package given
the schema.json in that same folder
evox remove [name] - Removes package
evox watch [name] - Watches changes in [name] only
Packages
Evox applications are built using event driven packages. Packages are
objects or components used as building blocks to an application. Example
packages can be thought of as category
, post
, user
. Each package
is event driven which allows other packages to easily interactive with
each other.
In team environments it is best practice to divided members by packages. Since packages can be separately "turned of and on" bugs are easily manageable.
evox install [link]
Example
$ evox install https://github.com/evelution/address
Packages are maintained in a separate repository from evox. Valid
parameters can be exclusively the GitHub repository link or a link
to a tarball .tar.gz
file. Some premade package examples are
listed below.
- https://github.com/evelution/address
- https://github.com/evelution/auth
- https://github.com/evelution/batch
- https://github.com/evelution/block
- https://github.com/evelution/category
- https://github.com/evelution/file
- https://github.com/evelution/product
- https://github.com/evelution/post
- https://github.com/evelution/user
Alternatively a tarball file can also be used in the absence of GitHub. Some examples of tarballs are listed below.
- https://github.com/evelution/address/archive/master.tar.gz
- https://github.com/evelution/auth/archive/master.tar.gz
- https://github.com/evelution/batch/archive/master.tar.gz
- https://github.com/evelution/block/archive/master.tar.gz
- https://github.com/evelution/category/archive/master.tar.gz
- https://github.com/evelution/file/archive/master.tar.gz
- https://github.com/evelution/product/archive/master.tar.gz
- https://github.com/evelution/post/archive/master.tar.gz
- https://github.com/evelution/user/archive/master.tar.gz
evox generate [name] [env]
Packages can be auto-generated if a schema.json
is provided. A schema
is either a definition of an object or a relation. Follow the instructions
below to create an example category
package.
- Create a folder called
category
in[PROJECT_DIRECTORY]/project
- In
[PROJECT_DIRECTORY]/project/category
folder, create a file calledschema.json
- Paste in the data from here
- Run
evox generate category
Follow the instructions below to create an example category_user
relation package.
- Create a folder called
category_user
in[PROJECT_DIRECTORY]/project
- In
[PROJECT_DIRECTORY]/project/category_user
folder, create a file calledschema.json
- Paste in the data from here
- Run
evox generate category_user
Environment Profile
sudo evox profile [link]
Profiles are evnrionment platform templates used by evox to interact from a package folder to the actual deployable environments. This allows frameworks like Express or Backbone for example to interface with Evox packages seemlessly. Profiles are not limited to Node frameworks. A profile can be created from any languange. It is possible to create a profile based on Wordpress, Django, Rails for example. Some premade package examples are listed below.