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ý fakt — shared/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 naInvoice - Přepínače:
pohoda_export_enabled(zapnutí),pohoda_test_mode(dry-run bez odesílání),pohoda_new_rules_enabled(nová účetní pravidla —operationMetatagy a vazba na původní platbu) pohodaTestRun/entry.tsje 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ý fakt — sendNotification/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ílatelsms_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ý fakt — backendová 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.