Skip to content

8. Doporučený migrační plán

Cíl migrace

Přechod z Base44 platformy na vlastní stack:

  • Frontend: React SPA (zachovat stávající kód, nahradit Base44 SDK)
  • Backend: Vlastní API server (PHP / Node.js / Go — dle preference)
  • Databáze: PostgreSQL nebo MySQL

Fáze migrace

Fáze 1 — Příprava a datový model (1–2 týdny)

Ověřený fakt — datový model je plně zdokumentován v entity JSONC souborech.

  1. Navrhnout SQL schéma na základě base44/entities/*.jsonc
  2. Definovat vztahy a indexy (foreign keys, date indexy pro kalendář)
  3. Nastavit vývojové prostředí (DB, API server)
  4. Napsat export/import skript pro migraci dat z Base44 (JSON export → SQL INSERT)

Klíčové tabulky: calendar_events, bookings, clients, therapists, rooms, availability_blocks, services, payment_logs, credit_transactions, client_packages, notification_logs, activity_logs, otp_codes, system_settings


Fáze 2 — API backend (2–4 týdny)

Napsat vlastní REST API pokrývající veškeré operace. Priority:

Blok A — Kritická cesta (kalendář + rezervace):

  • GET/POST/PUT/DELETE /calendar-events
  • GET /availability-blocks + výpočet volných slotů
  • POST /bookings (vytvoření + business logika splatnosti)
  • POST /bookings/:id/cancel (storno logika s refundem)

Blok B — Klientský portál:

  • POST /auth/otp/request + POST /auth/otp/verify
  • GET /client/bookings
  • POST /client/bookings/:id/pay (kredit, balíček)

Blok C — Podpůrné operace:

  • CRUD /clients, /therapists, /rooms, /services
  • GET/POST /payment-logs
  • POST /notifications/send (wrapper nad Resend)
  • GET /activity-logs

Blok D — Automatizace:

  • Cron job pro reminderDispatcher (každých 5 minut nebo nahradit queue)
  • POST /outlook/sync (MS Graph API)

Fáze 3 — Frontend refaktoring (2–3 týdny)

Cíl: nahradit base44.entities.* a base44.functions.invoke() voláním vlastního API.

Strategie — API abstrakce layer:

Místo přímé výměny každého SDK volání doporučujeme vytvořit API klient modul:

// src/api/client.js (nový)
export const api = {
  calendarEvents: {
    list: (params) => fetch('/api/calendar-events?' + new URLSearchParams(params)),
    create: (data) => fetch('/api/calendar-events', { method: 'POST', body: JSON.stringify(data) }),
    // ...
  },
  bookings: { ... },
  // ...
};

Pak nahradit base44.entities.X.list() za api.X.list() — mechanická záměna, která lze z velké části automatizovat grepem.

Postup po stránkách (pořadí dle priority):

  1. Calendar.jsx + komponenty calendar/ — nejkritičtější
  2. Clients.jsx + ClientDetail.jsx
  3. Klientský portál (ClientPortal.jsx a sub-komponenty)
  4. AvailabilityManagement.jsx
  5. Nastavení stránky (nízká priorita)

Fáze 4 — Admin autentizace (1 týden)

Nahradit Base44 session management:

  • Implementovat JWT nebo session-cookie auth
  • Aktualizovat AuthContext.jsx — zachovat interface (isLoadingAuth, authError, atd.)
  • Nastavit middleware/guards pro chráněné routy

Fáze 5 — Testování a cutover (1–2 týdny)

  1. Paralelní provoz: nový systém v staging, Base44 v produkci
  2. Migrace dat z Base44 do nové DB
  3. Smoke testy všech kritických flow:
  4. Admin vytváří termín v kalendáři
  5. Klient se přihlásí OTP a zarezervuje termín
  6. Klient zaplatí kreditem
  7. Admin stornuje termín s vrácením
  8. Připomínky se odešlou ve správný čas
  9. Cutover — přepnutí DNS / deployment

Co ponechat beze změny

Ověřený fakt — tyto části přecházejí bez úprav:

Oblast Zdůvodnění
Tailwind CSS + shadcn/ui komponenty Žádná Base44 závislost
Logika výpočtu volných slotů Čistý JavaScript v CalendarUtils.js
ICS generátor Čistá TypeScript funkce
OTP flow logika Přenositelná, jen změna DB layer
Storno logika (cancel_booking) Přenositelná business logika
E-mailové šablony + Resend volání Přímé fetch, jen přemístit do backendu
React Query cache strategie Žádná Base44 závislost
Routing struktura Standardní react-router-dom

Co přepsat od základu

Oblast Zdůvodnění
Admin přihlášení Base44-specific, nutná nová implementace
AuthContext.jsx Závisí na Base44 session
base44Client.js Nutno nahradit vlastním API klientem
@base44/vite-plugin Odstranit z vite.config.js

Odhadovaná celková náročnost

Fáze Odhadovaný čas
Datový model + export 1–2 týdny
API backend 3–5 týdnů
Frontend refaktoring 2–3 týdny
Auth 1 týden
Testování + cutover 1–2 týdny
Celkem 8–13 týdnů (1 developer)

Odvozeno — odhad předpokládá jednoho zkušeného full-stack developera. Při týmu 2 lidí (frontend + backend) lze zkrátit na 5–8 týdnů.