diff --git a/apps/framework-docs/src/pages/_meta.json b/apps/framework-docs/src/pages/_meta.json index a19a9689c..e61ce3f29 100644 --- a/apps/framework-docs/src/pages/_meta.json +++ b/apps/framework-docs/src/pages/_meta.json @@ -10,6 +10,6 @@ "title": "Getting Started" }, "building": { - "title": "Building a Data Service" + "title": "Building Your App" } } \ No newline at end of file diff --git a/apps/framework-docs/src/pages/building.mdx b/apps/framework-docs/src/pages/building.mdx index 85410a38b..ea04b28e2 100644 --- a/apps/framework-docs/src/pages/building.mdx +++ b/apps/framework-docs/src/pages/building.mdx @@ -1,35 +1,7 @@ import { Cards, Card } from 'nextra/components' -# Building a Data Service -MooseJS helps you build data intensive applications and service. - -## What is a data service? -With the MooseJS's current functionality a data service can be thought of as a microservice that's used to capture, store and serve data. It interfaces with best in-class data infrastructure and allows you to build a data warehouse wihtout any data engineering skills. A service is composed of: - -- A series of data models which define the structure of the data you want to caputre -- An ingestion API to capture data from other applications or services -- A storage layer that queues up data on ingestion and stores it for later processing - -With the Moose toolchain, you get to use the same best practices you use for your application layer in your analytics and data warehousing layer. - -**We'd recommend at least the following:** -- Using version control. We like managing our data services along side our main user applications in a mono-repo -- Using a CI/CD pipeline to deploy your service to production ensuring that tests are run before deployment - -## What can data services be used for? -Data services can be used to capture data from your user applications and store it in a data warehouse. That means you can replace dedicated data capture tooling such as Segment or Mixpanel with your own data service and generic BI solution. This greatly reduces the cost of running your data infrastructure and gives you more control over your data. - -Data services can be used for a variety of other use cases, including: - -- Telemetry applications: Capture and analyze data from user interactions to gain insights and improve user experiences. -- Transaction statistics: Track and analyze transaction data to monitor performance, identify trends, and optimize processes. -- Dashboards: Build interactive dashboards to visualize and explore data in real-time. -- Ad hoc analytics: Perform on-demand analysis and generate custom reports for specific business needs. -- Machine learning: Use data services as a data source for training machine learning models and making predictions. -- Personalization: Leverage data services to deliver personalized experiences and recommendations to users. - -## Next steps -Let's get started by building a data service. +# Building Your App +Let's get started building your MooseJS application. diff --git a/apps/framework-docs/src/pages/getting-started.mdx b/apps/framework-docs/src/pages/getting-started.mdx index 4718788b9..edee35f83 100644 --- a/apps/framework-docs/src/pages/getting-started.mdx +++ b/apps/framework-docs/src/pages/getting-started.mdx @@ -1,9 +1,41 @@ -# Getting Started -MooseJS is still in active development. We're working on stabilizing our APIs and adding more features. If you'd like to take it for a spin, we'd love to hear your feedback. +# Introduction +Welcome to the MooseJS documentation! 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 join our [Slack community](https://join.slack.com/t/igloocommunity/shared_invite/zt-25gsnx2x2-9ttVTt4L9LYFrRcM6jimcg) and reach out. We can't wait to hear from you! -## Installation -MooseJS is available on [npm](https://www.npmjs.com/package/moosejs). You can install it with the following command: +--- -```txt filename="Terminal" copy -npx create-moose-app my-app -``` \ No newline at end of file +## What is MooseJS? +MooseJS is a JavaScript/Typescript framework for building data-intensive applications and services. Just like you use frontend application frameworks like NextJS to build your frontend applications, you can use MooseJS to build your data/analytics stack. MooseJS designed to be intuitive and scalable for software engineers who do not have a background in data engineering. You can combine MooseJS and your favorite frontend framework to build feature-rich, interactive data applications for your users and stakeholders. + +MooseJS is designed to be a batteries-included framework that helps you build your application without having to worry about the underlying data infrastructure. Under the hood, it's built with a Rust based core that helps you package, build and deploy your application to reliably take your apps from your local machine to production. + +## What types of applications can be built with MooseJS? +MooseJS is great for any application that is based around a modern data/analytics stack. Any application where collecting data and extracting insights from that data is at the heart of the application. Common examples include: + +1. A data lake or data warehouse +2. An LLM-powered application +3. An AI/ML model platform +4. A customer data analytics platform +5. A monitoring / observability application + +## What's the key functionality? + +### Intuitive primatives +The MooseJS framework offers three simple code-based primitives through which you can architect your entire application: +- Data models, which define the structure of your data +- Flows (coming soon), which move and transform your data +- Insights (coming soon), which surface data to your users and downstream applications + +### Automated infrastructure +Based on these primatives, MooseJS will automatically build and manage your underlying data infrastructure. The default infrastructure of a MooseJS application includes: +- An ingestion API to capture data from other applications or services +- A storage layer that queues up data on ingestion and stores it for later processing - based on open source (RedPanda) [https://redpanda.com/] and (Clickhouse) [https://clickhouse.com/] +- An orchestration layer for managing data movement and transformations + +### Data engineering best practices built in +MooseJS is a typed framework, so your entire infrastructure automatically has type checking built in on build + run. MooseJS also offers intuitive migration and change management workflows, for when your data structure inevitably grows and evolves. + +### Developer-first +MooseJS is designed by software developers, for software developers. It's built from the ground up to enable software developement best practices, that are often hard to implement in the data engineering world. +- Run your entire application locally in Dev mode, allowing you to develop and preview changes you make in real time +- Utilize git-based version control and CI/CD friendly workflows +- Built-in testing framework to ensure tests are run before deployment (coming soon) \ No newline at end of file diff --git a/apps/framework-docs/src/pages/getting-started/_meta.json b/apps/framework-docs/src/pages/getting-started/_meta.json index 2bd0d0198..1387f1ab8 100644 --- a/apps/framework-docs/src/pages/getting-started/_meta.json +++ b/apps/framework-docs/src/pages/getting-started/_meta.json @@ -1,5 +1,5 @@ { "installation": "Installation", "project-structure": "Project Structure", - "using-moose-cli": "Using the CLI" + "moose-cli": "Moose CLI" } \ No newline at end of file diff --git a/apps/framework-docs/src/pages/getting-started/installation.mdx b/apps/framework-docs/src/pages/getting-started/installation.mdx index 0f064f66f..cae9088ca 100644 --- a/apps/framework-docs/src/pages/getting-started/installation.mdx +++ b/apps/framework-docs/src/pages/getting-started/installation.mdx @@ -7,17 +7,28 @@ You will need the following dependencies installed on your machine before you ca --- ## Quick Start -The easiest way to install MooseJS is to use the NPX command. This will download the latest version of MooseJS and run the initialization command for your project. +#### Start a new MooseJS project + +The easiest way to get started with a new MooseJS application is to use `create-moose-app`. This will automatically create a project folder for you, and initialize a skeleton MooseJS app with the entire project structure you need to get started. ```txt filename="Terminal" copy npx create-moose-app my-app ``` ---- -## Manual Installation +#### Run your new MooseJS app in Dev Mode -If you'd like more flexibility, you can also also install MooseJS globally using NPM. This will allow you to run the MooseJS CLI from anywhere on your machine and initialize new projects. +MooseJS comes with a handy CLI for managing your MooseJS application. You can run the CLI via NPX, or see below for how to install the CLI. Use the CLI now to start your new application in Development mode -- navigate to your project folder and run: +```txt filename="Terminal" copy +npx @514labs/moose-cli dev +``` + +Now you can visit [http://localhost:3000](http://localhost:3000) to view your new MooseJS application. As you develop your MooseJS application, changes you make to your code base will be automatically reflected here in real time. Now try [creating your first data model](/building/model-data)! + +--- +## Install the Moose CLI +Instead of running the MooseJS CLI via NPX, you can also also install globally using NPM. This will get you a cleaner command interface, and better performance on the CLI. ```txt filename="Terminal" copy npm install -g @514labs/moose-cli ``` +Now instead of `npx @514labs/moose-cli [command]`, you can just use `moose [command]`. \ No newline at end of file diff --git a/apps/framework-docs/src/pages/getting-started/moose-cli.mdx b/apps/framework-docs/src/pages/getting-started/moose-cli.mdx new file mode 100644 index 000000000..a673e1ee0 --- /dev/null +++ b/apps/framework-docs/src/pages/getting-started/moose-cli.mdx @@ -0,0 +1,37 @@ +# Moose CLI + +MooseJS comes with a handy CLI for managing your MooseJS application. Navigate to your project's directory to run commands. There are two ways to run the CLI: + +Without installing Moose, you can run CLI commands via NPX: `npx @514labs/moose-cli [command]` + +If you've installed Moose, you can run CLI commands directly: `moose [command]` + +## Moose CLI commands + +### Init + +Instead of using `create-moose-app`, you can inialize your project manually with the CLI, if you'd like more flexibility and control. Either option will initialize a new MooseJS project for you, with all the necessary directories including temporary ones for data storage. + +```txt filename="Terminal" copy +moose init --language --location +``` + +- ``: Name of your app or service. +- `--language `: Language of your app or service. We currently only support `Typescript`. +- `--location `: Location of your app or service. Default is the current directory (`.`). + +### Dev + +Starts a development environment running the full stack of your MooseJS application locally. As you develop your MooseJS application locally, changes you make to your code base will be automatically reflected here in real time (when you save changes). + +```txt filename="Terminal" copy +moose dev +``` + +### Clean + +Clears all temporary data and stops development infrastructure. + +```txt filename="Terminal" copy +moose clean +``` \ No newline at end of file diff --git a/apps/framework-docs/src/pages/getting-started/using-moose-cli.mdx b/apps/framework-docs/src/pages/getting-started/using-moose-cli.mdx deleted file mode 100644 index 893b66eef..000000000 --- a/apps/framework-docs/src/pages/getting-started/using-moose-cli.mdx +++ /dev/null @@ -1,31 +0,0 @@ -# CLI Commands - -MooseJS provides a CLI to help you build your data-intensive app or service. The CLI is automatically installed when you first intall MooseJS. - -## Init - -Initializes the developer environment with all the necessary directories including temporary ones for data storage. - -```txt filename="Terminal" copy -moose init --name --language --location -``` - -- `--name `: Name of your app or service. -- `--language `: Language of your app or service. We currently only support `Typescript`. -- `--location `: Location of your app or service. Default is the current directory (`.`). - -## Dev - -Starts a local development environment to build your data-intensive app or service. This also spins up the local infrastructure for your application including a local database and a local message broker. - -```txt filename="Terminal" copy -moose dev -``` - -## Clean - -Clears all temporary data and stops development infrastructure. - -```txt filename="Terminal" copy -moose clean -``` \ No newline at end of file diff --git a/apps/framework-docs/theme.config.jsx b/apps/framework-docs/theme.config.jsx index bad318d3a..9716450f5 100644 --- a/apps/framework-docs/theme.config.jsx +++ b/apps/framework-docs/theme.config.jsx @@ -3,7 +3,7 @@ import Image from 'next/image' export default { logo: , project: { - link: 'https://github.com/shuding/nextra' + link: 'https://github.com/514-labs/moose' }, useNextSeoProps() { return {