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:
- Accepts file uploads into a storage bucket
- Processes those files using a bucket observer
- Sends results to a message queue
- Processes queue messages and stores data in SQL
Here’s the data flow visualization:
Below is the manifest that implements this pipeline:
application "demo" {
// 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" {}
// 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: