mirror of
https://github.com/supabase/supabase.git
synced 2026-10-11 04:15:04 +03:00
Flatten urls
This commit is contained in:
1 parent
4c2a2fd7ef
commit
cc14c95dcf
4 files changed
+77
-115
No files matched your search
+48
-48
@@ -16,19 +16,19 @@ export const courses: SidebarNavGroup = {
|
||||
items: [
|
||||
{
|
||||
title: 'Supabase Architecture',
|
||||
href: '/foundations/01-01-supabase-architecture',
|
||||
href: '/foundations/supabase-architecture',
|
||||
},
|
||||
{
|
||||
title: 'When to Choose Supabase',
|
||||
href: '/foundations/01-02-when-to-choose-supabase',
|
||||
href: '/foundations/when-to-choose-supabase',
|
||||
},
|
||||
{
|
||||
title: 'Project Setup and Configuration',
|
||||
href: '/foundations/01-03-project-setup-and-configuration',
|
||||
href: '/foundations/project-setup-and-configuration',
|
||||
},
|
||||
{
|
||||
title: 'Local Development Workflow',
|
||||
href: '/foundations/01-04-local-development-workflow',
|
||||
href: '/foundations/local-development-workflow',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -37,27 +37,27 @@ export const courses: SidebarNavGroup = {
|
||||
items: [
|
||||
{
|
||||
title: 'Schema Design for Supabase',
|
||||
href: '/foundations/02-01-schema-design-for-supabase',
|
||||
href: '/foundations/schema-design-for-supabase',
|
||||
},
|
||||
{
|
||||
title: 'Essential Postgres Data Types',
|
||||
href: '/foundations/02-02-essential-postgres-data-types',
|
||||
href: '/foundations/essential-postgres-data-types',
|
||||
},
|
||||
{
|
||||
title: 'Database Functions and Triggers',
|
||||
href: '/foundations/02-03-database-functions-and-triggers',
|
||||
href: '/foundations/database-functions-and-triggers',
|
||||
},
|
||||
{
|
||||
title: 'Key Postgres Extensions',
|
||||
href: '/foundations/02-04-key-postgres-extensions',
|
||||
href: '/foundations/key-postgres-extensions',
|
||||
},
|
||||
{
|
||||
title: 'Migrations and Version Control',
|
||||
href: '/foundations/02-05-migrations-and-version-control',
|
||||
href: '/foundations/migrations-and-version-control',
|
||||
},
|
||||
{
|
||||
title: 'Replication',
|
||||
href: '/foundations/02-06-replication',
|
||||
href: '/foundations/replication',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -66,23 +66,23 @@ export const courses: SidebarNavGroup = {
|
||||
items: [
|
||||
{
|
||||
title: 'Authentication Fundamentals',
|
||||
href: '/foundations/03-01-authentication-fundamentals',
|
||||
href: '/foundations/authentication-fundamentals',
|
||||
},
|
||||
{
|
||||
title: 'Authentication Methods',
|
||||
href: '/foundations/03-02-authentication-methods',
|
||||
href: '/foundations/authentication-methods',
|
||||
},
|
||||
{
|
||||
title: 'Advanced Authentication',
|
||||
href: '/foundations/03-03-advanced-authentication',
|
||||
href: '/foundations/advanced-authentication',
|
||||
},
|
||||
{
|
||||
title: 'User Management',
|
||||
href: '/foundations/03-04-user-management',
|
||||
href: '/foundations/user-management',
|
||||
},
|
||||
{
|
||||
title: 'Security Considerations',
|
||||
href: '/foundations/03-05-security-considerations',
|
||||
href: '/foundations/security-considerations',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -91,27 +91,27 @@ export const courses: SidebarNavGroup = {
|
||||
items: [
|
||||
{
|
||||
title: 'RLS Fundamentals',
|
||||
href: '/foundations/04-01-rls-fundamentals',
|
||||
href: '/foundations/rls-fundamentals',
|
||||
},
|
||||
{
|
||||
title: 'Policy Patterns',
|
||||
href: '/foundations/04-02-policy-patterns',
|
||||
href: '/foundations/policy-patterns',
|
||||
},
|
||||
{
|
||||
title: 'Auth Helper Functions',
|
||||
href: '/foundations/04-03-auth-helper-functions',
|
||||
href: '/foundations/auth-helper-functions',
|
||||
},
|
||||
{
|
||||
title: 'Multi-Tenancy Patterns',
|
||||
href: '/foundations/04-04-multi-tenancy-patterns',
|
||||
href: '/foundations/multi-tenancy-patterns',
|
||||
},
|
||||
{
|
||||
title: 'Performance Optimization',
|
||||
href: '/foundations/04-05-performance-optimization',
|
||||
href: '/foundations/rls-performance-optimization',
|
||||
},
|
||||
{
|
||||
title: 'Pitfalls & Debugging',
|
||||
href: '/foundations/04-06-common-pitfalls-and-debugging',
|
||||
href: '/foundations/common-pitfalls-and-debugging',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -120,23 +120,23 @@ export const courses: SidebarNavGroup = {
|
||||
items: [
|
||||
{
|
||||
title: 'Storage Architecture',
|
||||
href: '/foundations/05-01-storage-architecture',
|
||||
href: '/foundations/storage-architecture',
|
||||
},
|
||||
{
|
||||
title: 'Access Control',
|
||||
href: '/foundations/05-02-access-control',
|
||||
href: '/foundations/access-control',
|
||||
},
|
||||
{
|
||||
title: 'File Operations',
|
||||
href: '/foundations/05-03-file-operations',
|
||||
href: '/foundations/file-operations',
|
||||
},
|
||||
{
|
||||
title: 'Image Transformations',
|
||||
href: '/foundations/05-04-image-transformations',
|
||||
href: '/foundations/image-transformations',
|
||||
},
|
||||
{
|
||||
title: 'Integration Patterns',
|
||||
href: '/foundations/05-05-integration-patterns',
|
||||
href: '/foundations/integration-patterns',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -145,23 +145,23 @@ export const courses: SidebarNavGroup = {
|
||||
items: [
|
||||
{
|
||||
title: 'Realtime Architecture',
|
||||
href: '/foundations/06-01-realtime-architecture',
|
||||
href: '/foundations/realtime-architecture',
|
||||
},
|
||||
{
|
||||
title: 'Database Changes',
|
||||
href: '/foundations/06-02-database-changes',
|
||||
href: '/foundations/database-changes',
|
||||
},
|
||||
{
|
||||
title: 'Broadcast',
|
||||
href: '/foundations/06-03-broadcast',
|
||||
href: '/foundations/broadcast',
|
||||
},
|
||||
{
|
||||
title: 'Presence',
|
||||
href: '/foundations/06-04-presence',
|
||||
href: '/foundations/presence',
|
||||
},
|
||||
{
|
||||
title: 'Real-World Patterns',
|
||||
href: '/foundations/06-05-real-world-patterns',
|
||||
href: '/foundations/real-world-patterns',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -170,27 +170,27 @@ export const courses: SidebarNavGroup = {
|
||||
items: [
|
||||
{
|
||||
title: 'Edge Functions Architecture',
|
||||
href: '/foundations/07-01-edge-functions-architecture',
|
||||
href: '/foundations/edge-functions-architecture',
|
||||
},
|
||||
{
|
||||
title: 'Development Workflow',
|
||||
href: '/foundations/07-02-development-workflow',
|
||||
href: '/foundations/development-workflow',
|
||||
},
|
||||
{
|
||||
title: 'Common Patterns',
|
||||
href: '/foundations/07-03-common-patterns',
|
||||
href: '/foundations/common-patterns',
|
||||
},
|
||||
{
|
||||
title: 'Database Integration',
|
||||
href: '/foundations/07-04-database-integration',
|
||||
href: '/foundations/database-integration',
|
||||
},
|
||||
{
|
||||
title: 'AI and LLM Integration',
|
||||
href: '/foundations/07-05-ai-and-llm-integration',
|
||||
href: '/foundations/ai-and-llm-integration',
|
||||
},
|
||||
{
|
||||
title: 'Advanced Topics',
|
||||
href: '/foundations/07-06-advanced-topics',
|
||||
href: '/foundations/advanced-topics',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -199,23 +199,23 @@ export const courses: SidebarNavGroup = {
|
||||
items: [
|
||||
{
|
||||
title: 'Vector Fundamentals',
|
||||
href: '/foundations/08-01-vector-fundamentals',
|
||||
href: '/foundations/vector-fundamentals',
|
||||
},
|
||||
{
|
||||
title: 'Indexing Strategies',
|
||||
href: '/foundations/08-02-indexing-strategies',
|
||||
href: '/foundations/indexing-strategies',
|
||||
},
|
||||
{
|
||||
title: 'Search Patterns',
|
||||
href: '/foundations/08-03-search-patterns',
|
||||
href: '/foundations/search-patterns',
|
||||
},
|
||||
{
|
||||
title: 'RAG Implementation',
|
||||
href: '/foundations/08-04-rag-implementation',
|
||||
href: '/foundations/rag-implementation',
|
||||
},
|
||||
{
|
||||
title: 'Production Considerations',
|
||||
href: '/foundations/08-05-production-considerations',
|
||||
href: '/foundations/production-considerations',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -224,27 +224,27 @@ export const courses: SidebarNavGroup = {
|
||||
items: [
|
||||
{
|
||||
title: 'Performance Optimization',
|
||||
href: '/foundations/09-01-performance-optimization',
|
||||
href: '/foundations/performance-optimization',
|
||||
},
|
||||
{
|
||||
title: 'Monitoring & Observability',
|
||||
href: '/foundations/09-02-monitoring-and-observability',
|
||||
href: '/foundations/monitoring-and-observability',
|
||||
},
|
||||
{
|
||||
title: 'Security Hardening',
|
||||
href: '/foundations/09-03-security-hardening',
|
||||
href: '/foundations/security-hardening',
|
||||
},
|
||||
{
|
||||
title: 'Backup and Recovery',
|
||||
href: '/foundations/09-04-backup-and-recovery',
|
||||
href: '/foundations/backup-and-recovery',
|
||||
},
|
||||
{
|
||||
title: 'Deployment Patterns',
|
||||
href: '/foundations/09-05-deployment-patterns',
|
||||
href: '/foundations/deployment-patterns',
|
||||
},
|
||||
{
|
||||
title: 'Client Considerations',
|
||||
href: '/foundations/09-06-client-considerations',
|
||||
href: '/foundations/client-considerations',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
---
|
||||
title: Performance Optimization
|
||||
description: Optimizing RLS policies for speed
|
||||
---
|
||||
|
||||
|
||||
## Topics Covered
|
||||
|
||||
- Indexing columns used in policies
|
||||
- Function wrapping for performance: (select auth.uid())
|
||||
- Minimizing joins in policy conditions
|
||||
- Using security definer functions strategically
|
||||
- Benchmarking and profiling policies
|
||||
|
||||
_Content coming soon_
|
||||
@@ -2,78 +2,42 @@
|
||||
title: Supabase Foundations
|
||||
description: Learn the foundations of Supabase, the Postgres development platform.
|
||||
|
||||
explore:
|
||||
- title: Supabase Docs
|
||||
link: https://supabase.com/docs
|
||||
itemType: doc
|
||||
|
||||
courseHero:
|
||||
title: Supabase Foundations
|
||||
subtitle: Learn the foundations of Supabase, the Postgres development platform.
|
||||
description: In this short course, you'll explore how Supabase brings together **Database**, **Auth**, **Storage**, **Edge Functions**, and **Realtime** into a unified developer platform.
|
||||
description: A comprehensive guide to building on Supabase — from your first project to production. Covers **Database**, **Auth**, **Row Level Security**, **Storage**, **Realtime**, **Edge Functions**, **AI and Vectors**, and more.
|
||||
stats:
|
||||
- label: 5 Chapters
|
||||
- label: 9 Sections
|
||||
icon: book-open
|
||||
accent: emerald
|
||||
- label: ~1 hour
|
||||
icon: clock
|
||||
accent: blue
|
||||
- label: Beginner
|
||||
icon: zap
|
||||
accent: amber
|
||||
---
|
||||
|
||||
In this short course, you'll explore how Supabase brings together **Database**, **Auth**, **Storage**, **Edge Functions**, and **Realtime** into a unified developer platform.
|
||||
|
||||
By the end, you'll understand how each piece of Supabase fits together, how to persist and protect your data, and how to start confidently building your own applications.
|
||||
A comprehensive guide to building on Supabase — from your first project to production. You'll learn how Database, Auth, Storage, Realtime, and Edge Functions work together, and how to use them confidently in your own applications.
|
||||
|
||||
## What you'll learn
|
||||
|
||||
- **Architecture**: how Supabase's core products work together.
|
||||
- **Data fundamentals**: create tables, insert and retrieve data, and explore our generated APIs.
|
||||
- **Authentication**: create and sign in users, and make secure requests.
|
||||
- **Security**: enable Row Level Security (RLS) and write policies to protect your data.
|
||||
- **Storage**: upload and serve files using buckets.
|
||||
- **Edge Functions**: run custom backend logic close to your users, using Deno and Supabase's serverless runtime.
|
||||
- **Vector search**: store and query embeddings for AI-powered search and recommendations.
|
||||
- **Platform Architecture** — how Supabase is structured, when to choose it, setting up projects, and local development workflows.
|
||||
- **Database Design & Postgres** — schema design, data types, functions, triggers, extensions, migrations, and replication.
|
||||
- **Authentication & Users** — sign-up and login flows, authentication methods, user management, and security considerations.
|
||||
- **Row Level Security** — RLS fundamentals, policy patterns, auth helpers, multi-tenancy, performance, and common pitfalls.
|
||||
- **Storage** — architecture, access control, file operations, image transformations, and integration patterns.
|
||||
- **Realtime** — subscribing to database changes, broadcast, presence, and real-world patterns.
|
||||
- **Edge Functions** — architecture, development workflow, common patterns, database integration, and AI/LLM integration.
|
||||
- **AI and Vectors** — vector fundamentals, indexing strategies, search patterns, and RAG implementation.
|
||||
- **Production Readiness** — performance optimization, monitoring, security hardening, backups, and deployment patterns.
|
||||
|
||||
---
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- A [Supabase account](https://supabase.com/) (free)
|
||||
- Basic familiarity with a terminal to run queries.
|
||||
|
||||
---
|
||||
|
||||
## Course outline
|
||||
|
||||
The course is split into 7 chapters, each approximately 10 minutes long.
|
||||
|
||||
1. **What is Supabase?**
|
||||
Get an overview of Supabase's architecture and core products. Create your first project and make a simple API call.
|
||||
2. **Your First Table**
|
||||
Create a Postgres table in Supabase, insert data, and query it through the REST API.
|
||||
3. **Authentication Basics**
|
||||
Add users, sign them in, and understand how Supabase secures your APIs with JWTs.
|
||||
4. **Secure Your Data with Row-Level Security**
|
||||
Enable Row-Level Security and write policies to ensure users only access their own data.
|
||||
5. **Storage**
|
||||
Store files in Supabase Storage and upload and serve files from your buckets.
|
||||
6. **Edge Functions**
|
||||
Deploy simple functions to run backend logic close to your users using Deno.
|
||||
7. **Vector Search**
|
||||
Store and query embeddings for AI-powered search and recommendations using Supabase Vector.
|
||||
- Basic familiarity with a terminal
|
||||
|
||||
---
|
||||
|
||||
## Before you begin
|
||||
|
||||
Create a new project at [supabase.com](https://supabase.com), open the **Supabase Dashboard**, and grab your **API URL** and **anon key** from the [Connect dialog](https://supabase.com/dashboard/project/_/settings/api?showConnect=true&connectTab=frameworks).
|
||||
You'll use them throughout the course to send real requests to your database and APIs.
|
||||
|
||||
---
|
||||
|
||||
## Duration
|
||||
|
||||
Approx. **1 hour** — a fast, hands-on introduction to the Supabase platform.
|
||||
Create a new project at [supabase.com](https://supabase.com), open the **Supabase Dashboard**, and grab your **API URL** and **API key** from the [Connect dialog](https://supabase.com/dashboard/project/_/settings/api?showConnect=true&connectTab=frameworks). You'll use them throughout the course to send real requests to your database and APIs.
|
||||
@@ -12,11 +12,24 @@ import { visit } from 'unist-util-visit'
|
||||
const computedFields = {
|
||||
slug: {
|
||||
type: 'string',
|
||||
resolve: (doc) => `/${doc._raw.flattenedPath}`,
|
||||
resolve: (doc) => {
|
||||
// Strip numeric prefixes like 01-01-, 02-02- from path segments
|
||||
const cleanPath = doc._raw.flattenedPath
|
||||
.split('/')
|
||||
.map((segment) => segment.replace(/^\d{2}-\d{2}-/, ''))
|
||||
.join('/')
|
||||
return `/${cleanPath}`
|
||||
},
|
||||
},
|
||||
slugAsParams: {
|
||||
type: 'string',
|
||||
resolve: (doc) => doc._raw.flattenedPath,
|
||||
resolve: (doc) => {
|
||||
// Strip numeric prefixes like 01-01-, 02-02- from path segments
|
||||
return doc._raw.flattenedPath
|
||||
.split('/')
|
||||
.map((segment) => segment.replace(/^\d{2}-\d{2}-/, ''))
|
||||
.join('/')
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user