---
title: "Architektura backendu v Supabase - AI Prompt"
description: "Pokročilý návrh databázové struktury, zabezpečení a API integrací pro produkční aplikaci. Hotový prompt s proměnnými – zkopírujte a použijte v ChatGPT, Claude..."
image: "https://zacinamsai.cz/images/og-default.jpg"
---

data  Pokročilý  supabase 

# Architektura backendu v Supabase

Pokročilý návrh databázové struktury, zabezpečení a API integrací pro produkční aplikaci.

  ##   Prompt text 

 **Délka:** Dlouhý 

Jsi seniorní backend vývojář a architekt specializující se na ekosystém Supabase a PostgreSQL. Tvým úkolem je navrhnout komplexní a škálovatelné řešení pro nový projekt s názvem **[NÁZEV PROJEKTU]**, který je zaměřen na **[POPIS APLIKACE]**.  

Postupuj podle následujících kroků a poskytni detailní technické řešení:  

1. **Databázové schéma (SQL):**  
 Navrhni relační strukturu databáze. Napiš kompletní SQL skript pro vytvoření tabulek (&#96;CREATE TABLE&#96;), které zahrnuje:  
 * Definici primárních a cizích klíčů.  
 * Datové typy optimalizované pro výkon.  
 * Rozšíření Supabase (např. &#96;auth.users&#96;) a propojení s vlastními tabulkami.  
 * Využití JSONB sloupců pro flexibilní data (pokud je třeba).  

2. **Bezpečnost a RLS (Row Level Security):**  
 Definuj bezpečnostní politiky (Policies) pro přístup k datům. Musíš zajistit, aby:  
 * Veřejný přístup byl povolen pouze pro čtení specifických dat (např. seznam produktů).  
 * Autentizovaní uživatelé mohli vytvářet a upravovat pouze svá vlastní data (pomocí &#96;auth.uid()&#96;).  
 * Admin role měla plná práva.  

3. **API a Realtime:**  
 Navrhni strategii pro využití automaticky generovaného REST API a GraphQL (pokud je relevantní). Dále specifikuj, které tabulky by měly mít zapnuté **Realtime** posílání (např. pro chat nebo live updates) a jak zajistit, aby se klienti automaticky přihlašovali k odběru změn.  

4. **Edge Functions a Storage:**  
 Navrhni případ použití pro Supabase Edge Functions (Deno) pro logiku, která nesmí běžet na klientovi (např. zpracování plateb nebo těžké výpočty). Dále navrhni strukturu **Storage** buckets pro ukládání souborů (např. avatary uživatelů, dokumenty) včetně bezpečnostních pravidel nahrávání.  

5. **Vektorové vyhledávání (Volitelné):**  
 Pokud je pro projekt relevantní full-textové vyhledávání nebo AI, navrhni implementaci pomocí &#96;pgvector&#96; (vector embeddings). Urči, která data se mají vektorizovat a jak nastavit HNSW index pro rychlé vyhledávání.  

Závěr poskytni jako strukturovaný technický dokument s kódovými bloky, které lze přímo zkopírovat do Supabase SQL Editoru.

  [  Interaktivní tvůrce ](https://zacinamsai.cz/prompts/supabase-architektura-backendu-v-supabase/builder) 

 ##   Příklad použití 

### Vstup:

NÁZEV PROJEKTU: FreelanceMarket  
POPIS APLIKACE: Tržiště pro freelancery a klienty. Uživatelé (freelanceři) vytvářejí profily, nahrávají portfolio (PDF, obrázky) a nabízejí služby. Klienté zadávají poptávky. Aplikace vyžaduje chat v reálném čase a vyhledávání služeb podle klíčových slov.

### Výstup:

\### 1. Databázové schéma (PostgreSQL)  

Zde je SQL skript pro základní strukturu:  

&#96;&#96;&#96;sql  
-- Profily freelancerů napojené na auth.users  
CREATE TABLE public.profiles (  
 id UUID REFERENCES auth.users(id) PRIMARY KEY,  
 username TEXT UNIQUE NOT NULL,  
 avatar_url TEXT,  
 bio TEXT,  
 skills JSONB DEFAULT '[]'::jsonb, -- Flexibilní seznam dovedností  
 created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now())  
);  

-- Poptávky od klientů  
CREATE TABLE public.listings (  
 id UUID DEFAULT gen_random_uuid() PRIMARY KEY,  
 client_id UUID REFERENCES public.profiles(id),  
 title TEXT NOT NULL,  
 description TEXT,  
 budget NUMERIC,  
 status TEXT DEFAULT 'open', -- 'open', 'in_progress', 'closed'  
 created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now())  
);  

-- Zprávy pro real-time chat  
CREATE TABLE public.messages (  
 id UUID DEFAULT gen_random_uuid() PRIMARY KEY,  
 sender_id UUID REFERENCES public.profiles(id),  
 recipient_id UUID REFERENCES public.profiles(id),  
 listing_id UUID REFERENCES public.listings(id),  
 content TEXT NOT NULL,  
 read BOOLEAN DEFAULT FALSE,  
 created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now())  
);  

-- Povolení realtime pro zprávy  
ALTER PUBLICATION supabase_realtime ADD TABLE public.messages;  
&#96;&#96;&#96;  

\### 2. Bezpečnost (RLS Policies)  

&#96;&#96;&#96;sql  
-- Zapnutí RLS  
ALTER TABLE public.profiles ENABLE ROW LEVEL SECURITY;  
ALTER TABLE public.listings ENABLE ROW LEVEL SECURITY;  
ALTER TABLE public.messages ENABLE ROW LEVEL SECURITY;  

-- Pravidlo pro čtení profilů (všichni vidí profily)  
CREATE POLICY "Profiles are viewable by everyone"   
ON public.profiles FOR SELECT USING (true);  

-- Pravidlo pro úpravu vlastního profilu  
CREATE POLICY "Users can update own profile"   
ON public.profiles FOR UPDATE USING (auth.uid() = id);  

-- Pravidlo pro vytváření zpráv (pouze přihlášení)  
CREATE POLICY "Users can insert messages"   
ON public.messages FOR INSERT WITH CHECK (auth.uid() = sender_id);  

-- Pravidlo pro čtení zpráv (pouze účastníci konverzace)  
CREATE POLICY "Users can see messages in their conversations"   
ON public.messages FOR SELECT USING (  
 auth.uid() = sender_id OR auth.uid() = recipient_id  
);  
&#96;&#96;&#96;  

\### 3. Storage Strategy  

Vytvořte dva buckety v Supabase Storage:  
1. **&#96;avatars&#96;**: Veřejný bucket pro profilové obrázky.  
2. **&#96;portfolio-files&#96;**: Privátní bucket pro soubory freelancerů (PDF), ke kterým mají přístup pouze konkrétní uživatelé nebo admini.  

*Bezpečnostní pravidlo pro Storage (avatars):*  
&#96;&#96;&#96;sql  
-- Povolit nahrání pouze vlastnímu uživateli  
CREATE POLICY "Users can upload their own avatar"  
ON storage.objects FOR INSERT WITH CHECK (  
 bucket_id = 'avatars' AND auth.uid()::text = (storage.foldername(name))[1]  
);  
&#96;&#96;&#96;  

\### 4. Vector Search (pgvector)  

Pro vyhledávání freelancerů podle dovedností doporučuji využít &#96;pgvector&#96;. Sloupec &#96;skills&#96; (JSONB) by bylo vhodné zpracovat do vektorového formátu, nebo využít full-textové vyhledávání PostgreSQL na sloupci &#96;bio&#96; a &#96;skills&#96; pomocí &#96;to_tsvector&#96;. Zde je příklad full-textového vyhledávání bez vektorů, které je pro tento případ jednodušší:  

&#96;&#96;&#96;sql  
-- Index pro rychlé full-textové vyhledávání  
CREATE INDEX idx_profiles_fts ON public.profiles   
USING GIN (to_tsvector('english', bio &#124;&#124; ' ' &#124;&#124; skills::text));  
&#96;&#96;&#96;

### Kde použít tento prompt?

Najděte vhodné AI nástroje pro použití tohoto promptu a maximalizujte jeho efektivitu.

 [ 🔧 Vhodné nástroje ](https://zacinamsai.cz/tools?category=data) [ 📖 Návody ](https://zacinamsai.cz/articles?search=supabase) [ 📚 Slovník ](https://zacinamsai.cz/glossary?search=data) 

### Podobné prompty

 [  

  Pokročilý  

####  Analýza třecích ploch uživatelské cesty 

Prompt pro identifikaci kritických míst v UX na základě dat z FullStory, který navrhuje konkrétní řešení pro zvýšení konverzí.

  data  Zobrazit  

 ](https://zacinamsai.cz/prompts/fullstory-analyza-trecich-ploch-uzivatelske-cesty) [  

  Expert  

####  Analýza uživatelského chování FullStory 

Komplexní analýza dat z FullStory pro identifikaci třecích ploch a optimalizaci konverzního poměru produktu.

  data  Zobrazit  

 ](https://zacinamsai.cz/prompts/fullstory-analyza-uzivatelskeho-chovani-fullstory) [  

  Začátečník  

####  Analýza uživatelského chování ve FullStory 

Tento prompt pomůže produktovému manažerovi interpretovat data z FullStory a navrhnout konkrétní kroky pro zlepšení konverzí.

  data  Zobrazit  

 ](https://zacinamsai.cz/prompts/fullstory-analyza-uzivatelskeho-chovani-ve-fullstory) [  

  Pokročilý  

####  Automatizace extrakce webových dat 

Komplexní instrukce pro nastavení inteligentního monitoringu a extrakce strukturovaných dat z libovolné webové stránky pomocí Browse AI.

  data  Zobrazit  

 ](https://zacinamsai.cz/prompts/browse-ai-automatizace-extrakce-webovych-dat) 

### Objevte další AI prompty

 Prozkoumejte naši sbírku data promptů a najděte ty, které vám pomohou dosáhnout lepších výsledků.

 [ Další data prompty ](https://zacinamsai.cz/prompts?category=data) [ Všechny prompty ](https://zacinamsai.cz/prompts)

```json
{
        "@context": "https://schema.org",
        "@type": "WebSite",
        "name": "Začínám s AI",
        "alternateName": "zacinamsai.cz",
        "url": "https://zacinamsai.cz",
        "description": "Průvodce světem umělé inteligence - Katalog AI nástrojů, články, prompty a slovník pojmů",
        "inLanguage": "cs",
        "potentialAction": {
            "@type": "SearchAction",
            "target": {
                "@type": "EntryPoint",
                "urlTemplate": "https://zacinamsai.cz/search?q={search_term_string}"
            },
            "query-input": {
                "@type": "PropertyValueSpecification",
                "valueRequired": true,
                "valueName": "search_term_string"
            }
        },
        "publisher": {
            "@type": "Organization",
            "name": "Začínám s AI",
            "url": "https://zacinamsai.cz",
            "logo": {
                "@type": "ImageObject",
                "url": "https://zacinamsai.cz/images/zacinamsai_logo.png"
            }
        }
    }
```
