An open BAAS with a similar API to firebase.
Motivation
Firebase is a Backend As A Service (BAAS) which allows developers to quickly build applications without worrying about the communication layer between the server and client. Firebase is awesome but the backend remains entirely proprietary. LargeMouth / SmallMouth attempt to recreate the Firebase api as an open-source project. Idealy a Firebase app could be easily moved to SmallMouth and vice versa.
LargeMouth is built on top of Socket.io and NodeJS.
Installation
npm install -g largemouth
Boot Options
Change the server port (3000 default):
largemouth -p 3000
Change the location of the configuration file (working directory largemouth.js default):
largemouth -c ../myConfig.js
SmallMouth
SmallMouth is the client side library.
Configuration
Server configuration is defined within a JavaScript file by default located within the working directory of where LargeMouth is run. The config file allows the following:
- Permissions - The security permission definition.
- Custom events - Define custom events which the server will listen for.
An example config file:
module { // Optionally define the server port here (commandline will override this value) largemouthport = 3000; // The custom event will be passed a request object which will contain // any data sent from the client as well as the actual socket instance, // allowing you to respond to the client with custom events through socket.emit largemouthevents'someEvent' = { console; } } // Only basic rules implemented, no expressions/variables largemouthrules = ".read": true ".write": false "chats": ".read": true ".write": true }
Release notes
- 0.3.0 - Basic permissions and rules implemented. Fully implemented the resource.remove() method.
- 0.2.4 - Load the config file and define custom events.
- 0.2.0 - Don't send down entire datasets to notify clients of changes, rather send down what changed and allow the client to resolve the data.
- 0.1.0 - Minimal portion of the Firebase API supported.