Skip to content

Manifest File

The manifest file serves as the blueprint for your Raindrop application, allowing you to declaratively define your application’s architecture, components, and their relationships. This guide will walk you through creating a manifest file using a practical example.

Core Concepts

A Raindrop manifest file:

  • Defines all application components and their relationships
  • Uses HCL (HashiCorp Configuration Language) syntax
  • Lives in a raindrop.manifest file at your project root
  • Generates TypeScript code and infrastructure when processed

Example: Building a File Processing Pipeline

Let’s explore how to build a data processing pipeline that:

  1. Accepts file uploads into a storage bucket
  2. Processes those files using a bucket observer
  3. Sends results to a message queue
  4. Processes queue messages and stores data in SQL

Here’s the data flow visualization:

Below is the manifest that implements this pipeline:

application "demo-application" {
// define the bucket
bucket "ingest-bucket" {
}
// define the observer that will process the objects in the ingest bucket
observer "process-object" {
// set the bucket as the source for the observer
source {
bucket = "ingest-bucket"
}
}
// define the queue that will receive the processed objects
queue "processed-queue" {
}
// define sql database to store the processed objects
sql_database "db" {
schema = "db_schema.sql"
}
// define the observer that will process the objects in the processed queue
observer "process-queue" {
source {
queue = "processed-queue"
}
}
}

The manifest above demonstrates how to combine resources (bucket, queue, SQL database) and services (observers) to build a complete application. For more details on the individual components:

  • See the Resources documentation to learn more about configuring buckets, queues, databases and other resources
  • See the Services documentation to learn more about HTTP services and observers