Skip to content

6. Analýza závislosti na Base44

Přehled provázanosti

Base44 plní v aplikaci tři role najednou:

  1. Databáze — NoSQL entity store s REST + real-time SDK
  2. Backend runtime — serverless Deno funkce
  3. Auth provider — admin session management
  4. Scheduler a automaty — plánované spouštění funkcí (reminderDispatcher každých 5 min) a entitní automaty nad CalendarEvent
  5. Secrets managerRESEND_API_KEY a MS OAuth token (klíče k SmsManageru a Pohodě jsou naopak v databázi)
  6. OAuth connector — MS Outlook připojení

Co je specifické pro Base44

1. SDK v celé aplikaci — VYSOKÁ provázanost

Ověřený faktbase44Client.js je importován na desítkách míst:

import { base44 } from '@/api/base44Client';
// Přímé volání entit:
const events = await base44.entities.CalendarEvent.list('-date', 100);
const client = await base44.entities.Client.create({ ... });

Pattern base44.entities.EntityName.method() se opakuje v každé stránce a komponentě.

2. Backend SDK — Deno funkce

Ověřený fakt — každá serverless funkce používá:

import { createClientFromRequest } from 'npm:@base44/sdk@0.8.31';
const base44 = createClientFromRequest(req);
await base44.asServiceRole.entities.Booking.get(id);
await base44.asServiceRole.functions.invoke('sendNotification', payload);
await base44.asServiceRole.connectors.getConnection('outlook');

Funkce jsou psány jako Deno.serve() HTTP handlery — tato architektura je přenositelná, ale base44.asServiceRole.* volání je nutno nahradit vlastními databázovými přístupy.

Nové akce ve finálním exportu (přenositelná logika, ale k přepsání do PHP):

  • clientAuthverify_otp_therapist, get_therapist — OTP přihlášení terapeuta do portálu terapeuta (páruje se přes Therapist.portal_user_email + portal_access_enabled).
  • clientAuthrequest_otp_staff, verify_otp_staff, get_staff — OTP přihlášení personálu (entita DemoUser), na kterém stojí StaffGate.
  • sendNotificationonboarding_completed (potvrzení + VOP jako PDF příloha), onboarding_invite (výzva k dokončení on-boardingu), vratka/dobropis, storno poplatek pojišťovny, přesun termínu, přeposlání video odkazu — vždy e-mail a volitelně SMS.
  • sendNotification obsahuje ručně psaný PDF generátor (generateSimplePdf, %PDF-1.4 string) — v PHP backendu nahradit plnohodnotnou knihovnou (mPDF/TCPDF) kvůli diakritice a formátování.

2b. Sdílené backendové moduly — NÍZKÁ provázanost

Ověřený faktbase44/shared/ (1 142 řádků) obsahuje čistou účetní logiku: generování dokladů, výnos při realizaci služby, storno poplatky a vratky, sestavení Pohoda dataPacku. Na Base44 je vázaná jen skrz base44.asServiceRole.entities.* — jde o přímý kandidát na 1:1 port do PHP.

2c. Entitní automaty — STŘEDNÍ provázanost

Ověřený faktonServiceRealized a onLateCancellation nejsou volány z UI; spouští je Base44 automation při změně CalendarEvent.status, assignClientNumber při vytvoření klienta. Vlastní backend musí tuto vazbu nahradit — buď doménovými událostmi v aplikační vrstvě, nebo DB triggerem/frontou.

3. Auth provider — STŘEDNÍ provázanost

Ověřený faktAuthContext.jsx volá Base44 pro ověření session:

// Odvozeno (přesný kód AuthContext.jsx nebyl čten, ale pattern je viditelný z App.jsx)
const { isLoadingAuth, authError } = useAuth();

Base44 auth se stará o admin přihlášení. Klientský OTP auth je vlastní implementace (přenositelná).

4. Scheduler — VYSOKÁ provázanost

Ověřený faktreminderDispatcher je spouštěn Base44 automation každých 5 minut. Toto není konfigurovatelné zvenčí, jde o proprietární funkci platformy.

5. Secrets — NÍZKÁ provázanost

Ověřený fakt — secrets (RESEND_API_KEY) jsou dostupné přes Deno.env.get(). Při migraci stačí nastavit stejné environment variables v novém prostředí.

Matice provázanosti

Oblast Provázanost Složitost migrace
Databázové dotazy (entity SDK) Kritická — všude Vysoká — nutno přepsat na API volání
Backend funkce (Deno) Střední — logika přenositelná Střední — logika ok, runtime nutno nahradit
Admin autentizace Střední Střední — nutno implementovat vlastní JWT/session
Klient OTP auth Nízká — vlastní kód Nízká — přenositelné
Scheduler Střední Nízká — nahradí cron job nebo queue
MS Outlook connector Nízká — standard OAuth Nízká — OAuth je standardní
Stripe Nízká Nízká — přímá integrace bez Base44 vrstvy
Build / deploy Nízká Nízká — standardní Vite SPA
E-mail (Resend) Nízká — přímé fetch volání Minimální
SMS (SmsManager) Nízká — přímé fetch volání Minimální — port volání API
Pohoda (mServer XML) Nízká — přímé fetch volání, logika v shared/pohodaXml.ts Střední — port + ověření mapování na reálné Pohodě
Účetní vrstva (shared/*) Nízká — čistá logika nad entitami Střední — objem (1 142 ř.), ale bez platformních vazeb
Entitní automaty (completed / cancelled_late / nový klient) Střední — proprietární automation Střední — nahradit doménovými událostmi
Telefonie (OptimCall) Není v exportu (jen konfigurace + UI) Střední — nová integrace v novém backendu
PDF generování (VOP) Nízká — ruční %PDF v Deno Nízká — nahradit PHP knihovnou

Co lze přenést bez změn

Ověřený fakt — přenositelné kusy:

  • Veškerý UI kód (React komponenty, Tailwind, shadcn/ui)
  • Logika výpočtu volných slotů (CalendarUtils.js, backend slot logic)
  • Logika storno politiky s vrácením kreditu/balíčku, vratky a dobropisy (processRefund)
  • Účetní logika a sestavení Pohoda dataPacku (base44/shared/*)
  • Odesílání SMS přes SmsManager
  • Notifikační šablony a proměnné
  • ICS generátor (kalendářní pozvánky)
  • OTP autentizační flow klientů
  • Datový model (entity schémata → SQL/NoSQL schémata)
  • Routing struktura (react-router-dom)

Co je nutno přepsat nebo nahradit

Co Proč Odhadovaná složitost
base44.entities.* → vlastní API klient Base44 proprietární SDK Vysoká (mnoho callsites)
base44.functions.invoke() → vlastní HTTP fetch Přímé volání vlastního API Střední
Admin auth (AuthContext) → JWT/OAuth Base44 session management Střední
Deno.serve() handlery → vlastní framework Změna runtime (Node/PHP/Go) Nízká (logika přenositelná)
Base44 scheduler → cron/queue Proprietární automation Nízká
@base44/vite-plugin → odstranit Pravděpodobně Base44-specific plugin Nízká