Skip to content
Start a projectStart

File uploads

Let people upload files. One API for three stores: the local disk, any S3-compatible store, or Vercel Blob.

What it adds

  • packages/storage, built on Files SDK, with three drivers: the local disk, S3-compatible stores (Cloudflare R2, AWS S3, MinIO) and Vercel Blob.
  • Avatar upload in the account page, at /api/uploads/avatar.
  • /api/files/*, which serves the files the app stores.

Set it up

By default (STORAGE_DRIVER=local), uploads go to apps/web/.storage/ and the app serves them. That works on a server with a disk, not on Vercel.

  • S3-compatible store: set STORAGE_DRIVER=s3, then S3_ENDPOINT, S3_REGION, S3_BUCKET, S3_ACCESS_KEY_ID and S3_SECRET_ACCESS_KEY. With a public bucket or a CDN, set STORAGE_PUBLIC_URL to its base URL.
  • Vercel Blob: create a Blob store in the Vercel project, then set STORAGE_DRIVER=vercel-blob and BLOB_READ_WRITE_TOKEN.

The CLI asks where files go in production (--files-driver local, s3 or vercel-blob) and keeps only that driver’s dependencies.

Before launch

  • Production uses s3 or vercel-blob: local loses files on every deploy of a serverless host.
  • The bucket’s public access and CORS match STORAGE_PUBLIC_URL.

Leave it out or add it later

Leave files out of --modules to start without uploads. To add them to an existing project, ask your agent to use the add-module skill.

Run one command. The CLI asks the rest, and your agent takes it from there.

pnpm create turbinekit my-app
See the prompt

Paste it into an agent that can run commands, such as Claude Code, Codex or Cursor.

Create a new TurbineKit project with me.

TurbineKit (https://turbinekit.dev) is an open-source Turborepo and Next.js starter. Its CLI, create-turbinekit, needs Node.js 24 and pnpm 10 (run `corepack enable` once).

1. Run `pnpm dlx create-turbinekit --help` to see its options.
2. Ask me its questions one at a time, with their defaults: the folder, the product name, one sentence about the product, the company or legal name, the contact email, the languages and the modules. Skip what I have already told you.
3. The CLI only asks questions in an interactive terminal, so run it with my answers as options and `--yes`. Show me the command before you run it.
4. In the new folder, read AGENTS.md. Then do "1. Minimal setup" in SETUP.md, and tick each box you finish.
5. Tell me the URL of the running app, and which services SETUP.md lists next.

No sign-up, no API keys. Needs Node.js 24 and pnpm 10.