Skip to content

5. Externí závislosti

Kritické (bez nich aplikace nefunguje)

@base44/sdk — Base44 platforma

Ověřený fakt — veškerý datový přístup jde přes SDK:

import { createClient } from '@base44/sdk';
export const base44 = createClient({ appId, token, ... });

// Použití:
base44.entities.CalendarEvent.list(...)
base44.functions.invoke('sendNotification', payload)
base44.asServiceRole.connectors.getConnection('outlook')

Tato závislost prochází celou aplikací. Bez Base44 platformy aplikace nemá databázi, backend ani auth.

Resend API — e-maily

Ověřený fakt — používáno v sendNotification/entry.ts a clientAuth/entry.ts:

const RESEND_API_KEY = Deno.env.get('RESEND_API_KEY');
await fetch('https://api.resend.com/emails', { ... });

Konfigurační secret: RESEND_API_KEY (uložen v Base44 secrets).

Funkce: potvrzení rezervace, připomínky, OTP kódy, platební výzvy, ICS přílohy, potvrzení on-boardingu a výzva k on-boardingu.

Přílohy e-mailů (sendEmail v sendNotification): .ics pozvánka do kalendáře a PDF. PDF (např. VOP u onboardingu) se sestavuje ručně jako %PDF-1.4 řetězec přímo v Deno funkci (generateSimplePdf), bez externí služby či knihovny — pozor, jde o minimalistický PDF generátor bez podpory diakritiky/formátování.

Microsoft Graph API — Outlook sync

Ověřený fakt — connector outlook.jsonc + funkce syncToOutlook/entry.ts:

const { accessToken } = await base44.asServiceRole.connectors.getConnection('outlook');
await fetch(`https://graph.microsoft.com/v1.0/me/calendars/${calendarId}/events`, { ... });

OAuth scopes: Calendars.ReadWrite, User.Read, offline_access.

Používáno pro synchronizaci termínů do Outlook kalendáře terapeuta.

Integrované (přítomné, ale podmíněné)

Stripe — platební brána

Ověřený fakt — knihovny jsou v package.json:

"@stripe/react-stripe-js": "^3.0.0"
"@stripe/stripe-js": "^5.2.0"

Nezjištěno — není jasné, zda je Stripe skutečně nakonfigurován a používán v produkci, nebo jen připraven. Platební metoda gateway v PaymentLog existuje, ale integrace není plně viditelná ze zdrojových souborů.

Pohoda — účetní systém

Změna logiky (export 19. 8. 2026): napojení na Pohodu už je implementováno v Base44, dříve šlo jen o přípravu dat.

Ověřený faktshared/pohodaXml.ts sestavuje dataPack XML a syncPohodaExport/entry.ts ho POSTuje na API Pohody:

// SystemSettings: pohoda_api_url (podporuje placeholder {ico}), pohoda_auth_token
await fetch(url, { method: 'POST', headers: { Authorization: token }, body: dataPack });
// odpoved: responsePack -> pohoda_external_id / pohoda_export_error
  • Exportují se doklady s pohoda_export_status = 'pending', export_to_pohoda = true, tax_document_flag = true, po dávkách po 20
  • Deduplikace přes event_id, výsledek se zapisuje zpět na Invoice
  • Přepínače: pohoda_export_enabled (zapnutí), pohoda_test_mode (dry-run bez odesílání), pohoda_new_rules_enabled (nová účetní pravidla — operationMeta tagy a vazba na původní platbu)
  • pohodaTestRun/entry.ts je vývojářský dry-run přes 10 scénářů, nic nepersistuje

Nezjištěno — konkrétní instance Pohoda mServeru, autorizace a mapování středisek (centre_id) nejsou ve zdroji vyplněny; jde o konfiguraci v SystemSettings.

SmsManager — SMS notifikace

Změna logiky (export 19. 8. 2026): SMS se reálně odesílají, dříve šlo jen o šablony bez odesílací vrstvy.

Ověřený faktsendNotification/entry.ts obsahuje funkci sendSms() volající SmsManager JSON API v2:

await fetch('https://api.smsmngr.com/v2/message', {
  method: 'POST',
  headers: { 'x-api-key': settings.sms_api_key, 'Content-Type': 'application/json' },
  body: JSON.stringify({ body: message, to: [{ phone_number: normalized }], tag: 'transactional' }),
});
  • Vypínač NotificationSettings.sms_enabled (default false), klíč sms_api_key, odesílatel sms_sender_name
  • Telefon se normalizuje (odstranění +420 / 00420, posledních 9 číslic)
  • SMS doprovází e-mail u těchto událostí: potvrzení rezervace, připomínka, výzva k platbě, potvrzení platby, storno, vratka/dobropis, storno poplatek pojišťovny
  • Klíč není v Base44 secrets, ale v databázi (NotificationSettings.sms_api_key) — viz Rizika

OptimCall — telefonní ústředna

Ověřený fakt — v SystemSettings přibyla konfigurace (telephony_enabled, telephony_provider, telephony_api_url, telephony_api_key, telephony_webhook_secret, telephony_inbound_extension) a v nastavení karta TelephonySettings.jsx včetně zobrazení URL webhooku.

Ověřený faktbackendová funkce pro příjem webhooků neexistuje (v base44/functions/ není žádný telefonní endpoint). Komponenta IncomingCallBar vyhledá klienta podle čísla zadaného v UI.

Odvozeno — integrace je připravená konfigurací a UI, ale skutečné propojení s ústřednou zbývá implementovat v novém backendu.

NPM závislosti (frontend)

Ověřený fakt — klíčové knihovny z package.json:

Knihovna Účel Migrovatelnost
react-router-dom v6 Routing Ponechat
@tanstack/react-query v5 Data fetching + cache Ponechat
tailwindcss Styling Ponechat
@radix-ui/* (25 balíčků) UI primitiva (shadcn/ui) Ponechat
lucide-react Ikony Ponechat
framer-motion Animace Ponechat
date-fns Datum/čas Ponechat
@hello-pangea/dnd Drag & drop v kalendáři Ponechat
react-quill Rich text editor (notifikační šablony) Ponechat
jspdf + html2canvas PDF generování (frontend — faktury) Ponechat
qrcode Generování QR kódů voucherů (frontend) Ponechat
src/utils/exportCsv.js Vlastní CSV helper (UTF-8 BOM pro Excel) Ponechat
recharts Grafy (statistiky) Ponechat
react-day-picker Datepicker Ponechat
react-hook-form + zod Formuláře + validace Ponechat
moment Datum (starší kód) Zvážit nahrazení date-fns
three 3D grafika Odvozeno: pravděpodobně nepoužívané
react-leaflet Mapy Odvozeno: pravděpodobně nepoužívané
canvas-confetti Vizuální efekty Volitelné
@base44/sdk Base44 specifické Nutno nahradit vlastní API
@base44/vite-plugin Base44 specifické Nutno nahradit

Build a deploy

Ověřený fakt — z base44/config.jsonc:

{
  "installCommand": "npm install",
  "buildCommand": "npm run build",
  "serveCommand": "npm run dev",
  "outputDirectory": "./dist"
}

Vite build → statický výstup do ./dist. Standardní SPA deployment.