Welcome!

rngo is a data simulation platform that streamlines many testing, development, and prototyping activities, such as:

  • lower environment application state
  • iterative prototyping
  • property-based integration testing
  • PR environments
  • projected-state load testing

At the core of rngo is the API, which streams synthetic events based upon an intuitive DSL. For example, considering the following simulation spec:

seed: 1
entities:
  users:
    stream:
      type: object
      properties:
        id:
          type: id.integer
        name:
          type: person.name
  posts:
    stream:
      type: object
      properties:
        id:
          type: id.integer
        title:
          enum:
            - Lorem Ipsum
            - Dolor Sit Amet
            - Sed Mattis Eu Erat
        authorId:
          type: function
          expression: user.id
          variables:
            user:
              type: reference
              entity: users
  

It produces a deterministic SSE stream that starts like this:

event: users.create
data: {"entity":"users","offset":683878,"value":{"id": 1, "name": "Alice Jones"}}

event: users.create
data: {"entity":"users","offset":729698,"value":{"id": 2, "name": "Bob Hyland"}}

event: posts.create
data: {"entity":"posts","offset":1036600,"value":{"id": 1, "title": "Lorem Impsum"},"authorId":1}

Next Steps

Go to the Quick Start to run this simulation yourself in just a few minutes. Or skip ahead to any of the following references:

  • Streams - learn all the built-in options for defining the schema and content of your entities.
  • CLI - go in depth on using the CLI to manage applications, run simulations and stream the data directly into your databases.
  • API - use the API directly from the language of your choice.