Data & Storage Overview
Most apps need to remember things — a list of tasks, a set of records, uploaded files. Vulcan supports three types of platform-managed storage, and you can use up to one of each per app.
You don't set these up manually. Just tell the AI what kind of data you need to store and it provisions everything for you.
If your data already lives in an external system, you can connect to it instead — see DynamoDB below.
Which type should I use?
| Storage type | Best for | Example use cases |
|---|---|---|
| KV (key-value) | Simple, fast data storage | To-do lists, inventory, contacts, kanban boards, settings |
| SQL (D1) | Structured data with complex queries | Reports with filters, join queries, analytics, data grids |
| Files (R2) | Uploading and downloading files | File managers, receipt scanners, document libraries |
When in doubt, use KV. It's the default choice for most apps and works great for the vast majority of use cases.
KV (Key-Value Storage)
Fast, flexible, and easy. Great for lists, records, and any data that doesn't need complex relational queries.
SQL Database (D1)
A structured database. Use this when you need things like:
- Filtering and sorting across multiple fields at once
- Joining data from multiple tables
- Aggregations and summary reports (totals, averages, counts)
- The app description mentions "relational" or "SQL"
File Storage (R2)
Storage for actual files — images, PDFs, documents, CSVs. Use this when users need to upload or download files.
Preview vs production storage
Preview and production environments have completely separate storage. Data you add in preview doesn't appear in production and vice versa. This means you can test freely in preview without touching your real production data.
DynamoDB (Bring Your Own Table)
If your organization already has data in AWS DynamoDB, you can connect your app directly to an existing table. This is different from the platform-managed options above — Vulcan doesn't provision the table; you supply your own credentials.
Good fit when:
- Your data already lives in DynamoDB
- You need to build a UI on top of records another system writes
- You have an existing IAM role with the right permissions
Secrets & API keys
If your app connects to an external service (Google, a third-party API), you'll need to store credentials securely.