Zadání
SHIFT>_CRM je CRM systém pro firmy z jakéhokoli oboru se samostatnou instalací pro každého klienta.
Univerzální CRM systémy sedí trochu všem, ale nikomu úplně. Jsou navržené pro „průměrnou" firmu, takže každá firma musí přizpůsobovat své procesy cizí logice, smířit se se zbytečnými funkcemi a obejít se bez těch, které potřebuje, a data všech klientů přitom uchovává jediný poskytovatel. Cílem projektu bylo vytvořit CRM, které funguje přesně tak, jak funguje podnikání konkrétní firmy. Každá firma dostane vlastní nezávislou kopii na samostatném serveru, s vlastní databází a vlastní adresou, nastavenou podle jejích procesů: zaměstnanci, přístupová práva, fáze práce s klienty, číselníky, vlastní pole a dokonce i pojmy, na které je tým zvyklý. Firma tak získá systém, se kterým se žádné velké univerzální CRM nemůže měřit, protože žádné z nich nevzniklo pro ni.
V CRM probíhá veškerá práce s klienty: karta klienta s více kontaktními osobami, komentáři a soubory, změna stavu přímo v kartě, platby v různých měnách, prodejní trychtýř, připomínky a oznámení. Statistiky ukazují přehled jak podle klientů, tak podle jednotlivých zaměstnanců: obchody, konverzi, platby, hovory a úkoly po termínu. Poptávky z webu a z Facebook Lead Ads se automaticky mění na nové klienty a opakované poptávky systém rozpozná. Vestavěný telefon umožňuje volat a přijímat hovory přímo v prohlížeči a každý rozhovor se uloží do historie klienta. Pro komunikaci v týmu slouží messenger s osobními chaty, hlasovými zprávami, odpověďmi na zprávy a okamžitým doručením.
Samostatnou částí systému je umělá inteligence. AI asistent odpovídá na dotazy obchodníků k databázi, například komu by měli dnes zavolat, přitom vidí jen ta data, ke kterým má zaměstnanec přístup, a sám nic nemění. Firma může používat vlastní model Qwen na svém serveru nebo připojit ChatGPT, Claude, Gemini a DeepSeek pomocí API klíče; administrátor vybírá hlavní službu a rozhoduje, kdo může kterou používat. Popis firmy pro AI lze nahrát ze souboru Word nebo PDF a v režimu učení si AI samo shromažďuje obecné poznámky o firmě, aniž by ukládalo osobní údaje klientů. Každou noc AI projde změny u klientů a do šesti ráno připraví každému zaměstnanci plán dne. Komentáře lze nadiktovat hlasem a systém je sám převede na text.
Zvláštní pozornost byla věnována bezpečnosti. Hesla se ukládají jako hashe Argon2id, relace v zabezpečených cookies a k dispozici je dvoufázové ověření pomocí autentizační aplikace. Oprávnění kontroluje server, data jsou navíc chráněna zabezpečením na úrovni řádků v databázi a všechny akce se zapisují do auditního záznamu, který nelze změnit. Systém nabízí automatické odhlášení při nečinnosti i každodenní odhlášení všech zaměstnanců v nastavený čas, klíče externích služeb jsou šifrované, zálohy se vytvářejí automaticky a jsou rovněž šifrované a web běží výhradně přes HTTPS. Rozhraní je přeloženo do 11 jazyků, k dispozici je několik barevných motivů a demoverze s fiktivní firmou pro prezentace klientům.
Projekt je celý napsán v TypeScriptu. Rozhraní je postaveno na React 19 a React Router s vlastním designovým systémem, server na Node.js a Fastify s databází PostgreSQL, dotazy přes Kysely a validací dat pomocí Zod. Živé aktualizace přicházejí přes Server-Sent Events a mechanismus notifikací PostgreSQL, telefonie běží na WebRTC a JsSIP a byla otestována s Asterisk. Pro funkce AI se používají OpenAI API, Anthropic SDK a Ollama. Systém se nasazuje na VPS s Ubuntu pomocí Docker Compose a Caddy automaticky vydává HTTPS certifikáty. Klíčové scénáře jsou pokryty automatickými testy.
Výsledkem je produkt, kterému se klient nemusí přizpůsobovat: CRM s telefonií, messengerem a AI asistentem běží na vlastním serveru klienta a od prvního dne je uspořádané tak, jak je uspořádané jeho podnikání.








