Templates

ADS-B Aircraft Tracking

Aircraft Transponder (ADS-B) Template

This template demonstrates how to build a modern full-stack application that ingests and analyzes aircraft transponder data (ADS-B) from military aircraft. It showcases a complete architecture combining a Next.js frontend with a Moose backend for real-time data processing and storage.

Aircraft have transponders, and there are a group of folk around the world that open-source record the transponder data and push it to ADSB.lol. Lets grab that data and create something interesting.

Getting Started

Prerequisites

Before getting started, make sure you have the following installed:

Install Moose and Aurora

To get started, install Moose (open source developer platform for data engineering) and Aurora (AI data engineering product).

terminal
bash -i <(curl -fsSL https://fiveonefour.com/install.sh) moose,aurora

Anthropic API Key

This installation will ask for your Anthropic API key if you want to use the AI features. If you don’t have one, you can follow the setup guide at Anthropic’s website.

Create a new project using the ADS-B template

terminal
moose init aircraft ads-b-frontend

This template creates a project “aircraft” with two subdirectories:

project/
├── frontend/             # Next.js frontend application
│   ├── src/
│   └── package.json

├── moose/                # Moose backend
│   ├── app/
│   │   ├── datamodels/   # Data models for aircraft tracking
│   │   ├── functions/    # Processing functions
│   │   └── scripts/      # Workflow scripts
│   ├── moose.config.toml # Moose configuration
│   └── package.json

The frontend—a template NextJS application to be used by the LLM for generating a frontend. Moose—the backend ingesting the data, processing and storing it.

Set up the project

Navigate to the moose subdirectory and install dependencies:

terminal
cd aircraft/moose
npm install

Start the Docker services

Make sure Docker Desktop is running, then start the Moose development server:

terminal
moose dev

This will start all necessary local infrastructure including ClickHouse, Redpanda, Temporal, and the Rust ingest servers.

Thiw will also start the ingestion workflow, retrieve data from the adsb.lol military aircraft tracking API, process it according to the data model, and ingest it into ClickHouse.

You should see a large amount of data being ingested in the Moose CLI.

        [POST] Data received at ingest API sink for AircraftTrackingData
      Received AircraftTrackingData -> AircraftTrackingProcessed - 1 1 message(s)
          POST ingest/AircraftTrackingData
        [POST] Data received at ingest API sink for AircraftTrackingData
          POST ingest/AircraftTrackingData
      Received AircraftTrackingData -> AircraftTrackingProcessed - 1 1 message(s)
        [POST] Data received at ingest API sink for AircraftTrackingData
      Received AircraftTrackingData -> AircraftTrackingProcessed - 1 1 message(s)
          POST ingest/AircraftTrackingData
          [DB] 136 row(s) successfully written to DB table (AircraftTrackingProcessed)
        [POST] Data received at ingest API sink for AircraftTrackingData

Test Moose deployment and data ingestion

To see what infrastructure has been set up, run moose ls or moose ls --json.

If you connect to the locally deployed ClickHouse table, query it! Here’s a query that will return unique types of aircraft in the dataset.

SELECT DISTINCT aircraft_type
FROM aircraft_tracking_data;

Explore the Data

Using Aurora’s MCP tools, you can explore the ingested aircraft data using AI tools like Claude Desktop or Cursor. We recommend using Claude for exploring your data and ad-hoc analytics, and Cursor for productionizing your results.

Explore with Claude Desktop

Claude Desktop can help you analyze the data through natural language queries.

Initialize the Aurora MCP for your project with the Claude Client

cd /path/to/your/project/moose
aurora setup --mcp claude-desktop

Explore your data in Claude

Example Questions for Claude

Try asking Claude exploratory questions like:

  • “Tell me about the data in my ClickHouse tables”
  • “Tell me about the flow of data in Moose project”
  • “Create a pie chart of the types of aircraft in the air right now”
  • “Create a visualization of aircraft type against altitude”

Productionize Your Results with Cursor

For a code-forward workflow, Cursor provides a great environment to productionize your queries.

Initialize the Aurora MCP for your project with the Claude Client

terminal
aurora setup --mcp cursor-global

This will create a /.cursor/mcp.json file with Aurora’s MCP configuration.

Enable the Aurora Cursor MCP

Enable the MCP in Cursor by going to: cursor > settings > cursor settings > MCP and clicking enable and refresh.

Example Question for Cursor

Try asking Cursor to help you productionize your analysis:

  • “Could you create a query that returns all the aircraft types that are currently in the sky?”
  • “Could you create an egress API to furnish that data to a frontend?”

Integration Points

You If you create an egress API above, you can create a frontend using the provided NextJS project.

Install NextJS dependencies

terminal
cd path/to/your/project/frontend
npm i

Run the local development server

terminal
npm run dev

Example Prompts for generating a frontend

Drag the frontend folder to the chat as context, as well as the file containing the generated egress API, and prompt:

  • “using the packagages you’ve been given, generate a frontend showing the data offered by the API.”