This is the core SCEPTER application and base for starting your projects using the SCEPTER framework
Contributors welcome! Email [email protected] for questions about how to contribute.
SCEPTER is useful for organizing various micro-services and user interfaces within and across projects. The goal of SCEPTER is to provide a framework for quickly setting up modern applications of any type based on a serverless architecture while promoting modularity and service reuse. While using SCEPTER, it may be possible to deploy to multiple cloud service providers with a single command.
SCEPTER depends heavily on Serverless.com for rapid cross-service setup and deployment, as well as production ready boilerplate code such as react-boilerplate. SCEPTER commands are designed to simplify the coordinated deployment of these services and user interfaces as well as try to ease some of the difficulties of working with git submodules
Currently this project has been tested primarily with /bin/bash for Ubuntu 16.04 and powershell for Windows 10. We would like to eventually support a wider number of systems and contributions to this effect are welcome.
git
at least version 1.9 should be installed, as well as yarn
.
See the Serverless framework provider specific limitations for which version of nodejs to install as different providers have different limitations. We recommend using nvm to switch between different versions of nodejs on your machine if you can.
It is also a good idea to familiarize yourself with Git Submodules as the framework relies heavily on them, although much effort has been made to simplify some of the submodule commands.
This project makes use of the Serverless Framework
If you are running the commands via powershell, be sure to install the windows-build-tools with the following command:
npm install --global --production windows-build-tools
To setup, fork this repository and then clone onto your machine. We recommend using the --recursive flag. Alternatively you can clone the repository directly and then change the remote to point to your (empty) project repository. Here is an example:
git clone --branch 1.0.2 [email protected]:source4societyorg/SCEPTER-Core --recursive
If you do not use the --recursive
flag, be sure to run git submodule update --init
to clone the submodule repositories. This will pull down the default commands. Once your project is setup, run yarn install
to pull node dependencies and yarn test
for good measure.
Start by running the node bin/scepter project:initialize
command to setup your project configuration which will be centralized in the config
directory. You can replace node bin/scepter
with yarn scepter
for simplicity.
At this point, you can start by developing the services and user interfaces associated with your project. Some useful commands can be found below:
Use the following commands to get started with your project. These commands are pulled into your project by default as part of the SCEPTER framework, and custom command plugins can be created as well:
The command engine allows for the creation of custom plugins.
node ./bin/scepter.js list:all
See SCEPTER-command-list This command will list all of the installed commands and print out their description/usage instructions
node ./bin/scepter.js ui:initializeWebUi
See SCEPTER-command-ui This command will clone the SCEPTER fork SCEPTER-webui of the react-boilerplate/react-boilerplate template and save it in your ui folder, then pull down and build dependencies. Useful with the ui:webDeployS3
command
node ./bin/scepter.js service:create
See SCEPTER-command-service This command will automatically generate a new service submodule forked from the SCEPTER-services-template boilerplate which includes default configuration for universal provider deployment.
node ./bin/scepter.js service:deploy
See SCEPTER-command-service This command will run tests for a specific service and deploy it to a targeted cloud service provider.
A few services already made that will likely be useful for your application:
SCEPTER-GatewayService - Exposes a URL that can be used to invoke other services as an API
SCEPTER-AuthenticationService - Provides a service for authenticating users.
Simply create a new repository and run the node ./bin/scepter.js service:add
command to fork these services into your project.