Skip to content
This repository has been archived by the owner on Apr 11, 2024. It is now read-only.
/ core-api Public archive

Old Corea-milestone centralized backend now obsolete as everything is decentralized.

License

Notifications You must be signed in to change notification settings

streamr-dev/core-api

Repository files navigation

Streamr Core API

CI & CD

RESTful API containing the backend for Streamr Core. With the Streamr Network now fully decentralized, the only remaining features in this centralized API are related to the Marketplace:

  • Creating and listing products on the Streamr Marketplace
  • Managing the mapping between products and streams (what streams are in what products)

The Marketplace will become fully decentralized, so this API is being phased out in the near future.

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

Dependencies

Tools

  • Java 8
  • Grails 2.5.6
  • node.js ^16.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.

You might also want to run the Core frontend.

Building and running

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

  2. Clone this repo

  3. Run make start 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

make run

CI

The project uses GitHub Actions to automatically run tests for each commit to main and pull requests.

Docker

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

IDE

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

Testing

  • To run unit tests only, use make test-unit
  • To run integration tests only, use make test-integration
  • To run end-to-end REST API tests, do make test-e2e
  • To run unit, integration, and e2e tests use make test

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

Core API

This codebase comprises two logical parts:

  • API which allows users to create and manage streams, products, and other Streamr resources. The API controllers and services are mainly written in Groovy and use the Grails web framework.

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

License

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