diff --git a/README.md b/README.md index 0ee9005e2d0..e2e2fbbae02 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ - [x] Authentication and authorization - [x] Auto-generated APIs - [x] Dashboard -- [ ] Storage (coming soon) +- [x] Storage - [ ] Functions (coming soon) ## Documentation diff --git a/www/components/Hero.tsx b/www/components/Hero.tsx index 32c0037efd2..26cef2934bd 100644 --- a/www/components/Hero.tsx +++ b/www/components/Hero.tsx @@ -21,9 +21,9 @@ const Hero = () => {

Create a backend in less than 2 minutes. Start your project with a Postgres - Database, Authentication, instant APIs, and realtime subscriptions. + Database, Authentication, instant APIs, realtime subscriptions and Storage.

-

Storage and serverless functions coming soon

+

Serverless functions coming soon

diff --git a/www/data/Solutions.json b/www/data/Solutions.json index 6838215630d..e3494094814 100644 --- a/www/data/Solutions.json +++ b/www/data/Solutions.json @@ -20,8 +20,8 @@ "icon": "M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4", "description": "Store, organize, and serve large files. Any media, including videos and images.", "description_short": "", - "label": "Coming soon", - "url": "https://supabasesubscribe.vercel.app/subscription/storage" + "label": "", + "url": "/storage" }, "functions": { "name": "Functions", diff --git a/www/data/products/storage/dashboard-carousel.json b/www/data/products/storage/dashboard-carousel.json index d5969539380..88bf17f0f8b 100644 --- a/www/data/products/storage/dashboard-carousel.json +++ b/www/data/products/storage/dashboard-carousel.json @@ -3,7 +3,7 @@ "title": "File previews", "label": "File previews", "img_url": "/images/product/storage/dashboard-view/file-previews.jpg", - "text": "Preview any media type, including video and audio. " + "text": "Preview any media type, including video and audio." }, { "title": "Column view", @@ -15,7 +15,7 @@ "title": "List view", "label": "List view", "img_url": "/images/product/storage/dashboard-view/list-view.jpg", - "text": "List View to find detailed File meta data at a glance." + "text": "List View to find detailed File metadata at a glance." }, { "title": "Multi select actions", diff --git a/www/data/products/storage/permissions-examples.js b/www/data/products/storage/permissions-examples.js index 2aaa2f401d8..d641562c138 100644 --- a/www/data/products/storage/permissions-examples.js +++ b/www/data/products/storage/permissions-examples.js @@ -7,7 +7,7 @@ on storage.objects for all with check ( bucket_id = 'avatars' ); `, detail_title: 'Allow public CRUD access to a bucket', - detail_text: "This will allow any user access to the bucket named 'bucket1'", + detail_text: "This will allow any user access to the bucket named 'avatars'", badges_label: '', badges: [], url: '', @@ -18,13 +18,13 @@ with check ( bucket_id = 'avatars' ); code: `create policy "Public access to a folder" on storage.objects for all using ( - bucket_id = 'bucket1' + bucket_id = 'avatars' and (storage.foldername(name))[1] = 'public' ); `, detail_title: 'Allow public CRUD access to a folder in a bucket', detail_text: - "This will allow any user access to the folder named 'public' in the bucket 'bucket1'", + "This will allow any user access to the folder named 'public' in the bucket 'avatars'", badges_label: '', badges: [], url: '', @@ -35,12 +35,12 @@ using ( code: `create policy "Logged in access" on storage.objects for all using ( - bucket_id = 'bucket1' + bucket_id = 'avatars' and auth.role() = 'authenticated' );`, detail_title: 'Allow any authenticated user access to a folder', detail_text: - "This will allow any authenticated user access to the folder named 'authenticated' in the bucket 'bucket1'", + "This will allow any authenticated user access to the folder named 'authenticated' in the bucket 'avatars'", badges_label: '', badges: [], url: '', @@ -51,7 +51,7 @@ for all using ( code: `create policy "Individual access" on storage.objects for all using ( - bucket_id = 'bucket1' + bucket_id = 'avatars' and name = 'folder/only_uid.jpg' and auth.uid() = 'd8c7bce9-cfeb-497b-bd61-e66ce2cbdaa2' );`, diff --git a/www/pages/storage/Storage.tsx b/www/pages/storage/Storage.tsx index bda4606fe3d..f40b27eea05 100644 --- a/www/pages/storage/Storage.tsx +++ b/www/pages/storage/Storage.tsx @@ -98,10 +98,10 @@ function AuthPage() {

- Write less code + Interoperable

- Interoperable with all other Supabase services, including Auth and Postgres. + Integrates well with the rest of Supabase ecosystem, including Auth and Postgres.

{/*

Familiar and easy to use permissions mean that your content is secure and accessible @@ -130,7 +130,7 @@ function AuthPage() {

Dependable -

Enterprise-level uptime complete with automatic backups.

+

Enterprise-level scalability and durability.

{/*

A durability rating of 99.999999999%.

*/}
@@ -189,7 +189,7 @@ function AuthPage() { } title="CDN integration" - text="Served from the edge to reduce latency." + text="Serve from the edge to reduce latency." /> Coming soon @@ -226,10 +226,10 @@ function AuthPage() { with Supabase Auth

- Using Postgres Row Level Security to create File access rules. + Using Postgres Row Level Security to create Object access rules.

- Supabase Storage is built around Postgres so that you can use any + Storage Authorization is built around Postgres so that you can use any combination of SQL, Postgres functions, and even your own metadata to write policies.