Introduction

Welcome to MooseJS (opens in a new tab)! MooseJS is still in early development, and we're talking to users and potential users all the time to make sure we're creating something valuable. If you're at all interested in what we're building here, then we'd love to talk to you! Please reach out over email, Slack (opens in a new tab), or signup form (opens in a new tab). We can't wait to hear from you!


What is MooseJS?

MooseJS is a JavaScript/Typescript framework for building data & analytics applications powered by a modern data stack. Just like you use front-end application frameworks like NextJS to build your front-end applications, you can use MooseJS to build your data/analytics stack. MooseJS is designed to be intuitive and scalable for software engineers who do not have a background in data engineering. ou can combine MooseJS and your favorite front-end framework to build feature-rich, interactive data applications for your users and stakeholders.

MooseJS is a batteries-included framework that helps you build your application without having to worry about the underlying data infrastructure. Moose takes the decades-old best practices of frontend and backend developer frameworks, and brings them to the your data & analytics stack. Under the hood, Moose is built on Rust and designed to be fast and reliable, even at massive scale.


What types of applications can be built with MooseJS?

MooseJS is great for any application that ought to be powered by a modern data/analytics stack. Any application where collecting data and extracting insights from that data is at the heart of the application. For example:

  • When you want to collect and curate data products in a data lake or data warehouse
  • When you're building an application that uses retreival augmented generation (RAG) to link your data with an LLM
  • When you need to ingest and process data to train a custom ML model
  • When you want to collect customer 360 data to power a customer data analytics platform
  • When you're trying to collect monitoring/observability data to update real time dashboards

  • How does MooseJS work?

    architecture diagram

    Using basic primitives like Data Models, Flows, Aggregaitons, and Consumption APIs, you define the core structure and business logic of your data stack, in languages you’re familiar with (for now, Typsecript, others coming soon). Then, when you build and deploy your code, Moose interprets these primitives and configures your entire production data stack - coordinated end-to-end, from data capture through data consumption.

    For example, when you define a schema with the Data Model primitive, MooseJS will automatically spin-up and coordinate all the middleware infrastructure you need to ingest, stream, store, and surface up data in that schema (including SDKs, API endpoints, streaming jobs, database tables and views, etc).

    Learn more in the architecture documentation (opens in a new tab).


    What's the key functionality?

    Developer-first

    MooseJS is designed by software developers, for software developers. It's built from the ground up to enable software development best practices that are often hard to implement in the data engineering world.

  • Develop in languages you know, in the IDE of your choice
  • Git-based based workflows for version control and change management
  • Plug into CI/CD and automated testing workflows
  • Iterate quickly with local development, then scale to the cloud
  • Local dev server

    Run your whole data/analytics stack locally: see the impact of changes in real time as you edit code - just like developing a web application

    Auto-managed migrations

    Moose automatically manages schema evolution across your data stack with "Data Change Management", so you don’t break upstream and downstream dependencies

    End-to-end typed

    Moose types all your components from data capture through consumption, so you catch issues at build time, instead of in production

    Data product APIs

    Moose automatically creates API endpoints for your data products, and generates SDKs in the languages of your choice (typescript, python, java, rust, etc) for easy discovery and consumption