Flatten urls

This commit is contained in:
Terry Sutton committed 2026-02-11 11:33:43 -03:30
1 parent 4c2a2fd7ef
commit cc14c95dcf
4 files changed
+77 -115

No files matched your search

+48 -48
View File
@@ -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_
+14 -50
View File
@@ -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.
+15 -2
View File
@@ -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('/')
},
},
}