Configuring Storage in Supamode
Configure file uploads for your database columns. Connect columns to Supabase Storage buckets with custom path templates, file size limits, and replacement options.
Supamode integrates with Supabase Storage to handle file uploads directly from the Data Explorer. When you configure a column as a file type, Supamode automatically handles uploads, generates paths, and stores references in your database.
How Storage Integration Works
- You configure a column as a file type (image, file, audio, video)
- When editing a record, Supamode shows a file uploader instead of a text input
- On upload, the file goes to your configured Supabase Storage bucket
- The file path (URL or reference) is stored in the database column
This lets your team upload files through the admin UI without building custom upload flows.
Configuring Storage for a Column
Navigate to Settings > Tables, select a table, then click on a column to edit its settings.

UI Data Type
Set the column's UI Data Type to one of:
| Type | Use Case | Preview in Data Explorer |
|---|---|---|
| File | Documents, PDFs, any file | File name with download link |
| Image | Photos, graphics | Thumbnail preview |
| Audio | Music, podcasts | Audio player |
| Video | Videos, recordings | Video player |
Once set, the column configuration expands to show storage options.
Bucket Name
The Bucket Name must match an existing bucket in your Supabase Storage.
Prerequisites:
- Create the bucket in Supabase Dashboard > Storage
- Configure the bucket's privacy settings (public/private)
- Set up RLS policies if the bucket is private
- Enter the exact bucket name in Supamode
avatarsdocumentsmediauploadsBucket Must Exist
Supamode does not create buckets. If the bucket doesn't exist in Supabase Storage, uploads will fail. Create buckets before configuring storage columns.
Storage Path Template
The Storage Path Template determines where files are stored within the bucket. Use placeholders to create dynamic paths.
Available placeholders:
| Placeholder | Value | Example Output |
|---|---|---|
{{timestamp}} | Unix timestamp | 1705689600 |
{{filename}} | Original filename (without extension) | profile-photo |
{{extension}} | File extension | png |
{{column_name}} | Value from another column | user-123 |
Example templates:
# Simple - files in root with timestamp{{timestamp}}-{{filename}}.{{extension}}→ 1705689600-profile-photo.png# Organized by user ID columnusers/{{user_id}}/{{filename}}.{{extension}}→ users/abc-123/profile-photo.png# By date and typeuploads/{{timestamp}}/{{filename}}.{{extension}}→ uploads/1705689600/document.pdf# Custom folder structureavatars/{{user_id}}/avatar.{{extension}}→ avatars/abc-123/avatar.webpPath rules:
- If the template doesn't include
{{extension}}, Supamode treats the path as a folder and appends the original filename - Use column references (
{{column_name}}) for values from the same record - Paths are case-sensitive
Max File Size
The Max File Size sets a client-side limit on upload size (in bytes).
| Size | Bytes |
|---|---|
| 1 MB | 1048576 |
| 5 MB | 5242880 |
| 10 MB | 10485760 |
| 50 MB | 52428800 |
Also Configure in Supabase
This is a client-side check only. Configure the same limit in your Supabase Storage bucket settings (Settings > Upload file size limit) for server-side enforcement.
Replace Existing Files
When Replace Existing Files is enabled, uploading a new file to the same path overwrites the previous file.
When to enable:
- User avatars (one file per user)
- Document that should always be the latest version
- Paths that are deterministic (like
avatars/{{user_id}}/avatar.{{extension}})
When to disable:
- Upload history should be preserved
- Multiple files per record are expected
- Paths include timestamps (files are unique anyway)
Storage Permissions
Users need storage permissions to upload, view, or delete files. Configure these in Roles and Permissions.
Required permissions by action:
| Action | Permission Needed |
|---|---|
| View/download files | select on the storage bucket |
| Upload new files | insert on the storage bucket |
| Replace files | update on the storage bucket |
| Delete files | delete on the storage bucket |
Example permission:
Type: DataScope: StorageBucket: avatarsPath: users/*Action: * (all operations)Troubleshooting
Upload Fails with "Bucket Not Found"
- Verify the bucket exists in Supabase Dashboard > Storage
- Check the bucket name matches exactly (case-sensitive)
- Ensure the bucket is not disabled
Upload Fails with "Permission Denied"
- Check the user's role has storage permissions for this bucket
- Verify the bucket's RLS policies allow uploads
- For public buckets, confirm public access is enabled
Files Not Displaying
- Verify the column contains a valid storage path/URL
- Check the bucket's privacy settings
- For private buckets, ensure signed URLs are being generated
Path Template Not Working
- Check placeholder syntax:
{{column_name}}not{column_name} - Verify referenced columns exist in the same table
- Ensure the column value is not null when uploading