{"id":37024663,"url":"https://github.com/bluenimble/serverless","last_synced_at":"2026-01-14T02:59:20.867Z","repository":{"id":30175000,"uuid":"123480590","full_name":"bluenimble/serverless","owner":"bluenimble","description":"BlueNimble is a Hybrid Serverless Platform focusing on developer productivity and application portability.  Create and run scalable APIs and applications without coding or by coding less.  Focus on application business logic without any knowledge of the underlying microservices architecture.","archived":false,"fork":false,"pushed_at":"2023-07-25T11:51:30.000Z","size":110301,"stargazers_count":32,"open_issues_count":19,"forks_count":4,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-07-13T00:43:56.911Z","etag":null,"topics":["analytics","api","api-gateway","api-management","cloud","containers","faas","faas-platform","iot","java","javascript","kubernetes","microservices","python","scala","serverless","serverless-architectures","serverless-framework","swarm","webapp"],"latest_commit_sha":null,"homepage":"https://www.bluenimble.com","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bluenimble.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-01T19:10:38.000Z","updated_at":"2023-11-14T05:45:33.000Z","dependencies_parsed_at":"2023-01-14T16:28:09.533Z","dependency_job_id":null,"html_url":"https://github.com/bluenimble/serverless","commit_stats":null,"previous_names":[],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/bluenimble/serverless","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluenimble%2Fserverless","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluenimble%2Fserverless/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluenimble%2Fserverless/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluenimble%2Fserverless/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bluenimble","download_url":"https://codeload.github.com/bluenimble/serverless/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluenimble%2Fserverless/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408799,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","api","api-gateway","api-management","cloud","containers","faas","faas-platform","iot","java","javascript","kubernetes","microservices","python","scala","serverless","serverless-architectures","serverless-framework","swarm","webapp"],"created_at":"2026-01-14T02:59:20.096Z","updated_at":"2026-01-14T02:59:20.853Z","avatar_url":"https://github.com/bluenimble.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://www.bluenimble.com\"\u003e\n\u003cimg src=\"assets/images/bnb-banner.jpg\" width=\"100%\" alt=\"BlueNimble Hybrid Serverless Platform\"\u003e\n\u003c/a\u003e\n\n## What is BlueNimble?\n\nBlueNimble is a Hybrid Serverless Platform focusing on developer productivity and application portability. \n\nCreate and run scalable APIs and applications without coding or by coding less. \n\nFocus on application business logic without any knowledge of the underlying microservices architecture.\n\n## Quick Start - Single Node\n\n### Install Java 8 or higher\n * On Mac, Windows or Linux, install the latest [OpenJDK JRE](http://openjdk.java.net) or [ORACLE JRE](http://www.oracle.com/technetwork/java/javase/downloads). Previous versions to Java 8 are not supported.\n\n### Install BlueNimble\n\n#### Install from binaries\n* Download either [bluenimble-2.55.0-bin.tar.gz](https://github.com/bluenimble/serverless/releases/download/v2.55.0/bluenimble-2.55.0-bin.tar.gz) or [bluenimble-2.55.0-bin.zip](https://github.com/bluenimble/serverless/releases/download/v2.55.0/bluenimble-2.55.0-bin.zip) and decompress in a folder of your choice\n* If you're a Mac or Linux user, set the right .sh file mode:\n    ````\n    cd ~/bluenimble-2.55.0 \u0026\u0026 sudo chmod 755 *.sh\n    ````\n#### Start BlueNimble \n* Mac or Linux users\n    ````\n    ./bnb.sh\n    ````\n* Windows users\n    ````\n    ./bnb.bat\n    ````\n#### Install the CLI from binaries\n* Download either [bluenimble-cli-2.55.0-bin.tar.gz](https://github.com/bluenimble/serverless/releases/download/v2.55.0/bluenimble-cli-2.55.0-bin.tar.gz) or [bluenimble-cli-2.55.0-bin.zip](https://github.com/bluenimble/serverless/releases/download/v2.55.0/bluenimble-cli-2.55.0-bin.zip) and decompress in a folder of your choice\n* If you're a Mac or Linux user, set the right .sh file mode:\n    ````\n    cd ~/blueNimble-cli-2.55.0 \u0026\u0026 chmod 755 *.sh\n    ````\nThe CLI could be installed in any other machine, not necessarily where the server is installed \n\n#### Start the CLI \n* Mac or Linux users\n    ````\n    ./bnb.sh\n    ````\n* Windows users\n    ````\n    ./bnb.bat\n    ````\n#### Install from sources\n* Install git and maven \n* Clone the [blunimble/serverless repository](http://github.com/bluenimble/serverless) from Github. \n    * On the command line, enter:\n    ````\n    git clone https://github.com/bluenimble/serverless.git\n    ````\n    * You can probably use [Git for Windows](http://windows.github.com/) or [Git for Mac](http://mac.github.com/) instead of the command line, however these aren't tested/supported and we only use the command line for development.\n* Build binaries\n    * On the command line, enter:\n    ````\n    mvn clean install\n    ````\nThis command will build both BlueNimble Server and the CLI \n\n### Check Server startup and install security keys\n#### Check Server startup\nType in http://server-ip:9090 (server-ip is where you installed bluenimble) or localhost if you're in your laptop. If you see a page similar to the one below, then BlueNimble is up and running.   \n\n![BlueNimble Server Install Page](https://github.com/bluenimble/serverless/blob/master/assets/images/2-server.png)\n\n#### Download and Install security keys\nBy default, BlueNimble is built with a playground space. \n* From the install page, click the green button associated with the playground space to download the security keys.\n* In order to install playground.keys into the CLI, type in:  \n![BlueNimble Server Install Page](https://github.com/bluenimble/serverless/blob/master/assets/images/2-icli-s.png)\n\n#### Create your first api\n* Let's create an uber api. To do so, type in:  \n    ````sql\n    create api uber\n    ````\nThis command should create the api project in your local machine. Add 2 security schemes by default 'token' and 'signature' and 5 default IM services (Signup, Activate, Login, OAuth, ChangePassword).  \n* Let's create a service. Type in:  \n    ````sql\n    create service * car\n    ````\nThis command will create 5 services (endpoints) and their functions for the model 'Car' corresponding to 'create', 'update', 'delete', 'get' and 'find'. \n* Now, we are good to run the uber api. To do so, type in:\n    ````sql\n    push api uber\n    ````\n* Try it out. \nBy using the CLI default template, apis are secure by default, only IM services could be called without providing required authentication information (Token for example). \nFirst, call the 'Signup' service, simulating a user signing up to your 'uber' web/mobile application. Here if a CURL example:\n    ```\n    curl -H \"Content-Type: application/json\" -X POST -d '{\"user\":\"alien@uranus.space\",\"password\":\"Alien!2025\"}' http://server-ip:9090/playground/uber/security/signup\n    ```\nYou should get a token back in response.\n\nNow, call the 'CreateCar' service using this token. Here is a CURL example: \n\n    \n    curl -H \"Authorization: Token TheToken\" -H \"Content-Type: application/json\" -X POST -d '{\"name\":\"SpiralOrbit\",\"scope\":\"SolarSystem\"}' http://server-ip:9090/playground/uber/cars\n    \n    \n* Using the default CLI api template, services already storing and reading data from the default database feature added to the current space. Visit the documentation to change it or add a new one database. \n\n* Access the uber api sources, make some changes to the code, run \"push api uber\" to try it again. The api sources are located under the CLI workspace, type in: \n    ````sql\n    ws\n    ````\nThis command will print out where your api code is stored. You can change the workspace folder by issuing:  \n\n    ws pathToNewFolder\n    \nFrom now on, any api you create, will be stored in this folder. \n\nNormaly, creating a secure api, generate 20 model-services (105 endpoints in total) and pushing the api to run, could be done is 10 minutes. Then, you can visit functions code if required. for 90% of the apps, 80% is CRUD operations with single variations, which means you'll be touching max. to 20 functions instead to 105.    \n\n## Terminology\n\n* BlueNimble can act as an Api Gateway and an Execution Runtime or both. In the single node setup we did, we are running Bluenimble for both. \n\n* BlueNimble runs a set of Spaces. Each space defines a set of features to use and accessible by the Apis you will push to it. For example, if a space defines a database feature, all Apis, thus the functions deployed to it, will share this same database instance.\n\n* An Api is a set of services and corresponding functions. An Api may also define which security scheme to be used, tracing (logging) and requests tracking. An Api could eventually be pushed to multiple spaces (Dev, QA, Prod, ...) since the only dependency is the set of features this api is using. \n\n* A Service is a an interface specification which is defined by the service.json file. A service can define validation rules to apply on requests, specific security and eventually an SPI function (Service Provider Implementation)\n\n* Plugins are one of the most important components of the BlueNimble architecture when it comes to application portability. Plugins aren't just extensions, such as supporting a new feature, but they can change the behaviour of anything happening in the server. \u003cbr/\u003e\nYou can create plugins to accept requests through a new network protocol such as COAP, to support new security mechanisms, change the flow of an incoming request, etc. \u003cbr/\u003e\nPlugins also receive events of changes happening to a space or an api. For example, the Kubernetes or Swarm plugins intercept the \"`Push Api`\" event to push to the cluster, they also change services SPI fuctions to delegate load to the cluster instead of the Api Gateway.   \n  \n## Architecture\n\n### High Level Flow Diagram\nThe figure below is a hight level flow diagram\n\n![BlueNimble Hight-Level Flow-architecture](https://github.com/bluenimble/serverless/blob/master/assets/images/main-opt.png)\n\n### Application Portability  \nEven if developers can use any external library in their functions code. We recommend to use assets through the **features/plugins** interfaces. For example, the datasource plugin provides native support to a number of relational databases, you can add a new one to the plugin by only registring the vendor and it's driver. This will free developers from managing security and opening/recycling/pooling of connections. \n\nHere is the list of the out-of-the-box features:\n\n- Database: All major NoSql and RDBMS databases supprted You can add other vendors by implementing the **Database Feature** plugin. \n\n![Out-Of-The-Box Database Vendors](https://github.com/bluenimble/serverless/blob/master/assets/images/database-vendors.png)\n\n- Storage: Supports FileSystem - S3 and other blob storage services could be used through a posix compliant interface.\n\n- Messenger: Supports Mail and Mobile Push Notifications and STOMP. Other vendors such as APMQ and Kafka could be added by implementing the Messenger plugin.\n\n- Indexer: Only ElasticSearch is supported. You can implement your own Indexer feature plugin.\n\n- Remoting: Supports HTTP and Binary protocols to integrate with REST/SOAP services and Runtimes in Kubernetes and Swarm. To support additional protocols, such as COAP, You can extend or implement a new Remoting plugin.\n\n## Documentation\n- [Developer Guide](https://www.bluenimble.com/docs/guides/developer.html)\n- [CLI Guide](https://www.bluenimble.com/docs/guides/icli.html) \n- [Javascript SDK](https://www.bluenimble.com/docs/sdks/javascript/index.html)\n- [Java, Scala \u0026 Kotlin SDK](https://www.bluenimble.com/docs/sdks/jvm/javadoc/index.html)\n\nNote: Documentation for python and ruby still on the works. \n\n\nLicense\n=======\nCopyright 2018 BlueNimble, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluenimble%2Fserverless","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbluenimble%2Fserverless","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluenimble%2Fserverless/lists"}