Skip to content

Architecture

Systems Design Requirements

  • Ensure adherence to a common data format
    • Both data creators (nodes) and data processors (aggregators) use JSON Schema for defining and validating the structure of data.
  • Prioritize decentralized storage solutions
    • Nodes would ideally host their own data in order to retain control of it, but hosting platforms can also provide this service (the Murmurations Profile Generator provides such a service, which can be replicated by others).
    • Future enhancements could include leveraging IPFS to replicate data and distribute it across the Murmurations network of nodes and aggregators.
  • Make Murmurations accessible to the widest audience possible
    • Make sure user-facing apps are fast, and still functional even when operating under poor network conditions.
      • Leverage edge storage and computing whenever possible to keep data close to users.
    • Test user interfaces with screen readers and ensure best practices for accessibility.

Technical Architecture Requirements

  • Must use open source software
    • We build on: Linux, Docker, Golang, JavaScript, React, Remix and WordPress
    • All the software we build ourselves is open source under the GPLv3 License
  • Make deployment simple and reliable, and scalable
    • We use Kubernetes to build and manage our production and test environments
    • We have a continuous deployment pipeline for our test environment with automated end-to-end tests that are run for every PR and commit to our test branch
    • We leverage frontend deployment tools like Vercel to quickly deploy user-facing apps

Systems Diagram

Murmurations Systems Diagram

Click here to open the diagram and zoom in