Vollständige technische Übersicht für Entwickler - Architektur, APIs, Datenbank-Schema und Implementierungsdetails. Deine Plattform für "YOUR ADVERTISING ON THE LED BOARDS OF THE BIGGEST ARENAS" – erstelle professionelle Werbevideos für deutsche Arenen und Stadien. Einfach, schnell, professionell – keine Erfahrung nötig. Wähle aus professionell gestalteten Templates, optimiert für LED-Boards in deutschen Arenen. Perfekt für Werbetreibende, Agenturen und Marketing-Profis.
data-scrappernexrender-scripts/worker2)Hinweis: Nur aggregierte Struktur, proprietäre Details bleiben ausgeblendet.
AppRoutes & MainLayout (Theme, Navigation)ProjectDetail, ProjectForm, Template-Auswahl)ImageUploadField, Video/Audio/PDF-Handling)data-scrapper)ExportCompletionModal mit RealtimeKomponentennamen aus dem Code übernommen; sensible Details bleiben ausgeblendet.
AuthContext (Supabase Session, Rollen)FontContext (Google-Fonts-Katalog & Auswahl)ExportCompletionContext (Realtime-Export-Modal)useAppData (Projekte, Templates, Maintenance-Status, Realtime)useBrandKits / useDynamicFavicon / useUnsavedChangesuse-toast + Sonner), Theme via next-themesHooks und Contexts entsprechen dem aktuellen Code-Stand.
/products-help (statisch), sonst Wildcard auf AppAuthContext in geschützten Views
Routing-Setup laut src/main.tsx und components/ROUTING/AppRoutes.tsx.
next-themes
Implementierung deckt sich mit AppContent und den Contexts.
basic/google_fonts.json)
Upload-Logik gem. ImageUploadField, uploadService und Supabase Storage.
Siehe useFonts, renderService (Font-Handling) und Brand-Kit-Komponenten.
Supabase-Backend mit Postgres, Auth, Storage, Realtime und Edge Functions:
create-stripe-checkout, get-stripe-products/-prices, get-stripe-invoices-and-transactions, stripe-webhookcredits-management, reserve-credits, release-credits, dynamic-credits-management, cleanup-stale-reservationsexternal-api-proxy (Jobs, KI-Proxies, Google Fonts, Nexrender Secret)export-share (create/download Tokens)data-scrapper, download-imageget-maintenance-mode, get-landing-page-display-mode, request-early-access, get-package-pricesadmin-get-users, admin-update-user-role/-status, admin-delete-user, delete-user
Edge-Functions laut Ordner supabase/functions; sensible Keys/Responses bleiben geschützt.
external-api-proxy/jobsstorageUtils.validateRenderExport)VITE_DEBUG_RENDER)exports-<userId> (abschaltbar mit VITE_DISABLE_REALTIME)create-dynamic-product, create-dynamic-checkout)get-stripe-invoices-and-transactions)stripe-webhook)Provider: Stripe; Supabase Service Role nur in Edge Functions.
external-api-proxy/gemini (Mistral > Gemini > Groq Fallback)data-scrapper) & Remote-Download (download-image)Alle externen Aufrufe laufen über Edge Functions oder nutzen signierte URLs.
Supabase Auth + RLS bilden die Basis für alle API-Aufrufe.
@supabase/supabase-js)Alle Edge Functions verlangen Bearer-Tokens; Service-Role-Schlüssel wird nur serverseitig genutzt.
Assets liegen in Supabase Storage, Metadaten in Postgres.
download-imageassets
Implementierung in uploadService.ts, ImageUploadField und Supabase Storage Policies.
Rendering läuft über Nexrender Worker, angesteuert durch Supabase Edge Function.
external-api-proxy/jobs mit Supabase Sessionexports-... ; Fallback Pollingexport-share
Siehe renderService.ts und Supabase Function external-api-proxy.
Automatische Brand-Extraktion + manuelle Pflege.
data-scrapperdownload-imagebrand_kits + brand_kit_assets
Logik in BrandKitForm, useBrandKits und den genannten Edge Functions.
Edge-Functions (Supabase) bilden die API-Oberfläche:
external-api-proxy (Jobs, KI, Fonts)export-share)Alle Endpunkte erfordern Supabase Auth; Service Role bleibt serverseitig.
Die folgende Übersicht zeigt die Hauptentitäten des Systems. Spezifische Feldnamen, Beziehungen und Constraints sind vereinfacht dargestellt.
| Tabelle | Beschreibung | Hauptfelder |
|---|---|---|
profiles |
Benutzer-Profile | id, email, full_name, role, theme_preference, ████████████████_id, package_id |
projects |
Video-Projekte | id, user_id, template_id, name, configuration (jsonb), status, created_at |
assets |
Medien-Assets | id, user_id, folder_id, filename, type, size, metadata, storage_path |
templates |
Video-Templates | id, name, category_id, slug, settings (jsonb), preview_url, is_active |
purchased_exports |
Rendering-Exports | id, user_id, project_id, status, zip_path, format_details, created_at |
brand_kits |
Markenidentitäten | id, user_id, company, website, font, font_color, created_at |
brand_kit_assets |
Brand Kit Assets | id, brand_kit_id, type, name, value, crop_data, original_value_url |
credits |
Credit-Konten | id, user_id, amount, type, format, resolution, reserved_amount |
credit_transactions |
Credit-Transaktionen | id, user_id, amount, type, credit_type, description, project_id |
packages |
Abonnement-Pakete | id, name, ████████_product_id, ████████_price_id, features (jsonb) |
categories |
Template-Kategorien | id, name, slug, description_de, description_en, export_formats (jsonb) |
export_formats |
Export-Formate | id, format_name, width, height, codec, fps, duration, category |
export_share_links |
Export-Sharing-Links | id, export_id, █████, expires_at, created_by |
arenas |
Arenen & Kategorien | id, name, location, address, timezone, is_category, parent_category_id |
arena_boards |
LED-Boards | id, arena_id, name, pixel_width, pixel_height, aspect_ratio, price_per_minute |
arena_events |
Veranstaltungen | id, arena_id, event_name, event_type, start_time, end_time, status |
board_bookings |
Board-Buchungen | id, user_id, event_id, board_id, project_id, video_url, status, price |
arena_api_keys |
API-Schlüssel | id, arena_id, name, █████, ██████████, permissions, rate_limit_per_hour |
api_logs |
API-Logs | id, api_key_id, endpoint, method, request_data, response_status, execution_time_ms |
contact_inquiries |
Kontaktanfragen | id, first_name, last_name, email, subject, message, status, priority |
partner_inquiries |
Partner-Anfragen | id, company_name, contact_name, email, phone, message, status |
notifications |
Benachrichtigungen | id, user_id, type, title, message, read, created_at |
Spezifische Join-Tabellen, Foreign Keys und Constraints sind proprietär.
Spezifische RLS-Policy-Implementierungen sind geschützt.
drop_console/drop_debugger, Target esnextnpm run generate-sitemap)npm run preview; Dev via npm run devsupabase/functions)supabase/migrations, Basisschema supabase_schema.sqlnexrender-scripts/worker2 ausrollen
Details laut vite.config.ts und npm Scripts; Infrastruktur-Setup bleibt intern.
cleanup-stale-reservations)VITE_DEBUG_RENDERdata-scrapperdownload-image)credit_transactionsVITE_DISABLE_REALTIME für Tests