Built-in file storage
Let people upload files to your app
Photos, documents and videos, stored safely with your app. No buckets, keys or extra accounts. Just tell the AI what you need.
Upload Files
Drag & drop or click to upload
How it works
Just ask
Say what you want people to upload. The AI switches storage on and builds the upload screen.
Nothing to sign up for
No AWS, Firebase or Cloudinary account. Storage comes with your VibeDream plan.
Private by default
Each project has its own space, and uploads go through short-lived signed links.
What people build with it
Photos and galleries
Profile pictures, portfolios, product photos and before-and-after shots.
Documents
PDFs, invoices, contracts and forms your customers send you.
Short videos
Tutorials, testimonials and clips that play right inside your app.
For people who read code
The AI adds a small route to your FastAPI backend that hands the browser a short-lived upload link. The storage guide has the full pattern.
# backend/main.py
import os
import httpx
from pydantic import BaseModel
class UploadRequest(BaseModel):
filename: str
mime_type: str
@app.post("/api/upload-url")
async def get_upload_url(body: UploadRequest):
async with httpx.AsyncClient() as client:
res = await client.post(
f"{os.getenv('STORAGE_API_URL')}/presigned-upload",
json={"filename": body.filename, "mimeType": body.mime_type},
headers={"X-Storage-Token": os.getenv("STORAGE_API_TOKEN", "")},
)
res.raise_for_status()
return res.json()Common questions
How much storage do I get?
Storage comes with your plan: 25GB on All Access Mini, Unlimited on All Access.
Do I need an AWS, Firebase or Cloudinary account?
No. Storage is built into VibeDream. The AI sets it up for your project the first time you ask for uploads.
Are my users' files private?
Each project gets its own storage space. Uploads use short-lived signed links, and your storage key stays on the server, never in the browser.