Architektura a technologie
LockMyCal je navržen na osvědčené a vysoce spolehlivé platformě Elixir / Erlang VM (BEAM) a frameworku Phoenix, což zajišťuje bezkonkurenční stabilitu, efektivní využití systémových prostředků a schopnost obsloužit tisíce souběžných uživatelů při minimální spotřebě RAM a CPU.
Přehled komponent
graph TD
subgraph Frontend["Frontend & Klienti"]
Browser["Prohlížeč (LiveView / WebSocket)"]
Widget["Vložený JS Widget / iFrame"]
end
subgraph Core["LockMyCal Core (Elixir/OTP)"]
Endpoint["Phoenix Endpoint (Plug Pipeline)"]
Router["Phoenix Router & Auth Hooks"]
LiveViews["Phoenix LiveView Sessions"]
PubSub["Phoenix.PubSub (Real-Time Event Bus)"]
ObanQueue["Oban Background Jobs (PostgreSQL backed)"]
ETSCache["ETS In-Memory Cache (Admin & Stats)"]
end
subgraph Services["Data & Služby"]
DB[("PostgreSQL 17")]
Mailers["Swoosh Mailers (SMTP / Postmark)"]
ExternalSync["OAuth & CalDAV Sync Workers"]
end
Browser <--> Endpoint
Widget <--> Endpoint
Endpoint --> Router
Router --> LiveViews
LiveViews --> PubSub
LiveViews --> DB
ObanQueue --> DB
ObanQueue --> Mailers
ObanQueue --> ExternalSync
Klíčové technologie
1. Elixir & Phoenix LiveView
- Bezstavový i stavový real-time: Phoenix LiveView udržuje lehký proces pro každého připojeného klienta, což eliminuje potřebu těžkých SPA frameworků a přenáší po síti pouze minimální binární rozdíly (diffs).
- Erlang OTP Concurrency: Každá synchronizace kalendáře nebo webhook probíhá v izolovaném procesu. Chyba u jednoho externího API nikdy neshodí zbytek aplikace.
2. Databáze & Fronty (Ecto, PostgreSQL, Oban)
- PostgreSQL 17: Primární databáze pro transakční bezpečnost, účty, rezervace, nastavení a auditní logy.
- Oban: Robustní systém pro fronty úloh na pozadí využívající PostgreSQL tabulky (žádný Redis není potřeba!). Zajišťuje spolehlivé odesílání e-mailů s retry politikou, synchronizaci na pozadí a webhook dispatch.
- Erlang Term Storage (ETS): Rychlá paměťová mezipaměť přímo ve virtuálním stroji pro často čtená data (např. statistiky a systémové parametry).
3. Zabezpečení a šifrování
- Šifrování citlivých údajů (Data at Rest): Přístupové údaje ke kalendářům a videoslužbám (OAuth tokeny, hesla CalDAV a Exchange, API klíče) a tokeny Slacku, Telegramu a webhooků jsou šifrovány pomocí symetrického šifrování AES-256-GCM dedikovaným klíčem
DATA_ENCRYPTION_KEY. - Rotace klíčů: Oddělení
SECRET_KEY_BASE(pro sessions) aDATA_ENCRYPTION_KEY(pro databázi) umožňuje bezpečnou rotaci session klíčů bez zneplatnění uložených kalendářních propojení. - Autentizace a RBAC: Zabezpečená autentizace s ochranou proti brute-force útokům, přihlášení přes Google, GitHub, Microsoft a obecný OIDC, role administrátora a bezpečnostní audit log.
Architektura rozšíření (Core vs. SaaS Boundary)
LockMyCal využívá modulární návrh. Open-source jádro poskytuje stabilní rozhraní (Behaviours), na která se napojuje volitelná placená nadstavba:
Tymeslot.Features.CheckerBehaviour– Kontrola dostupnosti funkcí (např. vlastní URL adresa, kontakty, automatizace) a volitelné limity (např. počet propojených kalendářů).Tymeslot.Payments.Behaviours.SubscriptionManager– Správa předplatných a Stripe webhooků.Tymeslot.Auth.Behaviours.AccountDeletionHook– Správné čištění externích subskripcí při smazání účtu.Tymeslot.Dashboard.ExtensionSchema– Registrace rozšiřujících panelů do navigačního menu.