All Projects → streamr-dev → Engine And Editor

streamr-dev / Engine And Editor

Licence: agpl-3.0
Streamr Core backend

Programming Languages

groovy
2714 projects

Projects that are alternatives of or similar to Engine And Editor

core-api
Streamr Core backend
Stars: ✭ 52 (+18.18%)
Mutual labels:  analytics, decentralized, realtime, pubsub, realtime-messaging
streamr-client-javascript
JS library for interacting with Streamr APIs: publishing and subscribing to data, creating streams, etc.
Stars: ✭ 35 (-20.45%)
Mutual labels:  decentralized, realtime, pubsub, realtime-messaging
Wsify
Just a tiny, simple and real-time self-hosted pub/sub messaging service
Stars: ✭ 452 (+927.27%)
Mutual labels:  pubsub, realtime-messaging, realtime
Gun
An open source cybersecurity protocol for syncing decentralized graph data.
Stars: ✭ 15,172 (+34381.82%)
Mutual labels:  blockchain, realtime, decentralized
fastapi websocket pubsub
A fast and durable Pub/Sub channel over Websockets. FastAPI + WebSockets + PubSub == ⚡ 💪 ❤️
Stars: ✭ 255 (+479.55%)
Mutual labels:  realtime, pubsub, realtime-messaging
Applozic Android Sdk
Android Real Time Chat & Messaging SDK
Stars: ✭ 611 (+1288.64%)
Mutual labels:  realtime-messaging, realtime
Rotki
A portfolio tracking, analytics, accounting and tax reporting application that protects your privacy
Stars: ✭ 689 (+1465.91%)
Mutual labels:  blockchain, analytics
Awesome Decentralized Finance
A curated list of awesome decentralized finance projects
Stars: ✭ 793 (+1702.27%)
Mutual labels:  blockchain, decentralized
Decentralized Energy Fabric On Ibp20
Set up a network on the IBM Blockchain Platform and deploy a decentralized energy smart contract on the network.
Stars: ✭ 29 (-34.09%)
Mutual labels:  blockchain, decentralized
Subnode.org
SubNode: Social Media App
Stars: ✭ 25 (-43.18%)
Mutual labels:  blockchain, decentralized
Kotlin Firebase Group Chat
Group and OneonOne chat using firebase built in Kotlin similar to whatsapp.
Stars: ✭ 44 (+0%)
Mutual labels:  realtime-messaging, realtime
Dtube
📺 d.tube app. A full-featured video sharing website, decentralized.
Stars: ✭ 569 (+1193.18%)
Mutual labels:  blockchain, decentralized
Ranaly
📈 An easy to use chart system
Stars: ✭ 504 (+1045.45%)
Mutual labels:  analytics, realtime
Lbry Sdk
The LBRY SDK for building decentralized, censorship resistant, monetized, digital content apps.
Stars: ✭ 7,169 (+16193.18%)
Mutual labels:  blockchain, decentralized
Awesome Ethereum
⚡️ Awesome Ethereum Resources
Stars: ✭ 459 (+943.18%)
Mutual labels:  blockchain, decentralized
Deepstream.io
deepstream.io server
Stars: ✭ 6,947 (+15688.64%)
Mutual labels:  pubsub, realtime
Pulsarcast
A pub-sub system for the distributed web - my master thesis @ IST
Stars: ✭ 33 (-25%)
Mutual labels:  pubsub, decentralized
Enigma P2p
The Enigma Worker Peer-to-Peer (P2P) package written in Node.js based on libp2p-js
Stars: ✭ 31 (-29.55%)
Mutual labels:  blockchain, decentralized
Disperse
React/Redux dApp (decentralized app) boilerplate using Ethereum's blockchain
Stars: ✭ 36 (-18.18%)
Mutual labels:  blockchain, decentralized
Dawn
global hosting, financial automation, server-less web components
Stars: ✭ 40 (-9.09%)
Mutual labels:  blockchain, decentralized

Streamr Engine and Editor

Build Status CI & CD

Web application containing the backend for Streamr Core, facilitating things like:

  • Creating streams
  • Creating and running canvases
  • Creating dashboards
  • Creating products for the Streamr Marketplace

The application uses the Grails web framework and runs on Java VM.

Dependencies

Tools

  • Java 8
  • Grails 2.5.6
  • node.js ^14.0.0 (for e2e tests)
  • npm

A convenient way of installing and managing multiple versions of Grails is SDKMAN!.

Service dependencies

Additional services are required to run this web application. The easiest way to get them all up and running (for development purposes) is to use the streamr-docker-dev tool we provide.

  • MySQL
  • Redis
  • Cassandra
  • A Streamr Network consisting of broker nodes

You might also want to run the Core UI.

Building and running

  1. Ensure you have the dependencies listed under Dependencies > Tools installed.

  2. Clone this repo

  3. Run streamr-docker-dev start --except engine-and-editor if you are using the recommended tool streamr-docker-dev. Otherwise make sure all services dependencies are running and the the web applications is properly configured to connect to them.

  4. Start the backend application

grails run-app
  1. (Optional) Start the Core frontend if you need it.

CI

The project uses Travis CI to automatically run tests for each commit to master and pull requests.

Docker

A Docker image is automatically built and pushed to DockerHub when commits are pushed to branch master.

IDE

We provide sensible default configurations for IntelliJ IDEA but project can be developed with other IDEs as well.

Testing

  • To run unit and integration tests use grails test-app
  • To run unit tests only, use grails test-app -unit
  • To run integration tests only, use grails test-app -integration
  • To run end-to-end REST API tests, do cd rest-e2e-tests && npm install && npm test

These are also available as pre-shared run configurations if you use IntelliJ IDEA.

Core API & Engine

This codebase comprises two logical parts:

  • API which allows users to create and manage streams, canvases, products, and other Streamr resources. The API controllers and services are mainly written in Groovy and use the Grails web framework.
  • The Engine is written mostly in Java and is responsible for executing canvases (user-defined processes which process, analyze and act upon real-time event data. The APIs, on the other hand, is responsible for API(s), rendered web pages and other front-facing functionality.

When you run the app with grails run-app, most changes to source code files are automatically hot reloaded into the running JVM process.

Useful resources

Coding your own modules

There are already modules that allow running code on canvas, e.g. JavaModule. They are, however, "last resort" patches for cases where the existing modules don't offer the required functionality, but the functionality also isn't reusable enough to warrant developing a custom module.

If the required functionality is complex, or if it depends on libraries or external code, you'll need to set up the development environment following the above steps. Upside is of course, after it's done, you also get IDE support (we use IntelliJ IDEA), and you can write unit tests etc.

A module is as simple as a Java class that extends AbstractSignalPathModule and implements the critical module-specific functionality (sendOutput and clearState). The code is going to look the same as in a JavaModule, only wrapped in a Java class. Please take a look at the XOR module for a simple example / boilerplate / starting point. For unit testing a module, see the XorSpec unit test class .

You also need to add your module to the module table in the MySQL database so that Editor finds your module, and you can add it on the canvas.

We want to integrate quality module contributions to the project. To get your custom module to the master, the following is required:

  • the module code (MyModule extends AbstractSignalPathModule)
  • unit tests (MyModuleSpec extends spock.lang.Specification)
  • database migration (under grails-app/migrations, see XOR module migration for example)
  • all this in a neat git branch with no conflicts with master, and a pull request in github

We'll be happy to help with completing these steps. Best ways to reach the Streamr developer community are the official Telegram group and the community-run developer forum.

License

This software is open source, and dual licensed under AGPLv3 and an enterprise-friendly commercial license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].