File Storage
S3-compatible file uploads.
Package: @repo/storage Built on: AWS S3 SDK
Setup
# .env
S3_ENDPOINT=http://localhost:9000
S3_ACCESS_KEY=minioadmin
S3_SECRET_KEY=minioadmin
S3_BUCKET=uploads
S3_REGION=us-east-1
File Upload Component
<script lang="ts">
import { FileInput } from '@repo/storage'
</script>
<form method="POST" enctype="multipart/form-data">
<FileInput.Root name="avatar" accept="image/*" />
<button type="submit">Upload</button>
</form>
Server Handler
// users.remote.ts
import { ServerFileManager } from '@repo/storage'
import { form } from '$app/server'
export const updateAvatar = form(schema, async (data, { request }) => {
const files = new ServerFileManager(request)
const avatar = await files.sync('avatar', 'avatars')
await db.update(users)
.set({ avatarUrl: avatar.url })
.where(eq(users.id, data.userId))
})
Full Documentation
See @repo/storage for complete API reference.