Zespoły i Workspace'y
Workspace per klient, role Właściciel/Admin/Członek, zaproszenia e-mail, Row Level Security — pełna izolacja danych.
Workspace per klient/projekt
Workspace to izolowana przestrzeń: własna lista projektów, audytów, harmonogramów, branding PDF, członków zespołu, bilans kredytów. Typowy pattern: agencja ma 1 workspace per klient (lub per portfolio). Freelancer ma 1 workspace osobisty + opcjonalne workspace per większy klient. Solo developer/owner ma zwykle 1 workspace.
Role w workspace
Trzy role: Właściciel (założyciel workspace, kontrola pełna w tym billing), Admin (wszystko oprócz billing i usuwania workspace), Członek (czytanie i komentowanie audytów, bez tworzenia nowych ani zmiany ustawień). Role są per workspace — ten sam użytkownik może być Adminem w jednym workspace i Członkiem w drugim.
Zapraszanie użytkowników
Ustawienia workspace → Zespół → Zaproś. Wpisujesz email i wybierasz rolę. System wysyła link zaproszeniowy (ważny 7 dni). Zapraszany użytkownik klika link, akceptuje warunki, dostaje dostęp. Jeśli nie ma jeszcze konta SiteSpector, w trakcie akceptacji tworzy konto i automatycznie trafia do workspace.
Row Level Security (RLS)
Izolacja danych jest egzekwowana na poziomie bazy danych — Supabase RLS policies. Każde zapytanie SELECT/INSERT/UPDATE/DELETE jest filtrowane przez workspace_id użytkownika, który robi zapytanie. Nawet jeśli w API byłby bug, baza nie zwróci danych z innego workspace. To zero-trust security model.
Przełączanie workspace
W topbar widzisz dropdown z aktualnym workspace + lista wszystkich, do których masz dostęp. Klikasz inny workspace — przeładowanie do dashboardu tego workspace. Audyty, projekty, harmonogramy, członkowie — wszystko zmienia się natychmiast. Ostatni używany workspace jest pamiętany w localStorage.