Sarcina
SHIFT>_CRM este un sistem CRM pentru companii din orice domeniu, cu o instalare separată pentru fiecare client.
Sistemele CRM universale se potrivesc puțin tuturor, dar nimănui pe deplin. Sunt gândite pentru o companie „medie", așa că fiecare afacere trebuie să-și adapteze procesele la o logică străină, să accepte funcții de care nu are nevoie și să se descurce fără cele care îi lipsesc, iar datele tuturor clienților sunt stocate la un singur furnizor. Scopul proiectului a fost crearea unui CRM care funcționează exact așa cum funcționează afacerea unei anumite companii. Fiecare companie primește propria copie independentă pe un server separat, cu propria bază de date și propria adresă, configurată în jurul proceselor sale: angajați, drepturi de acces, etapele lucrului cu clienții, nomenclatoare, câmpuri personalizate și chiar termenii cu care echipa este obișnuită. Astfel, compania obține un sistem cu care niciun CRM universal mare nu se poate compara, pentru că niciunul nu a fost creat pentru ea.
În CRM se desfășoară toată munca cu clienții: o fișă de client cu mai multe persoane de contact, comentarii și fișiere, schimbarea statusului direct în fișă, plăți în diferite valute, un pipeline de vânzări, mementouri și notificări. Statisticile arată situația atât pe clienți, cât și pe fiecare angajat: tranzacții, rata de conversie, plăți, apeluri și sarcini întârziate. Solicitările de pe site și din Facebook Lead Ads devin automat clienți noi, iar solicitările repetate sunt recunoscute. Telefonul integrat permite efectuarea și primirea apelurilor direct din browser, iar fiecare convorbire este adăugată în istoricul clientului. Pentru comunicarea în echipă există un chat cu conversații private, mesaje vocale, răspunsuri la mesaje și livrare instantanee.
O parte distinctă a sistemului este inteligența artificială. Asistentul AI răspunde la întrebările agenților de vânzări despre baza de date, de exemplu pe cine ar trebui să sune astăzi, vede doar datele la care angajatul are acces și nu modifică nimic de unul singur. Compania poate folosi propriul model Qwen pe serverul său sau poate conecta ChatGPT, Claude, Gemini și DeepSeek cu o cheie API; administratorul alege serviciul principal și decide cine poate folosi fiecare serviciu. Descrierea companiei pentru AI poate fi încărcată dintr-un fișier Word sau PDF, iar în modul de învățare AI-ul adună singur note generale despre companie, fără a păstra datele personale ale clienților. În fiecare noapte AI-ul analizează modificările din fișele clienților și până la ora șase dimineața pregătește un plan al zilei pentru fiecare angajat. Comentariile pot fi dictate vocal și sunt transformate automat în text.
O atenție deosebită a fost acordată securității. Parolele sunt stocate ca hash-uri Argon2id, sesiunile în cookie-uri protejate, iar autentificarea în doi pași printr-o aplicație de autentificare este disponibilă. Drepturile sunt verificate de server, datele sunt protejate suplimentar prin securitate la nivel de rând în baza de date, iar toate acțiunile sunt înregistrate într-un jurnal de audit care nu poate fi modificat. Există deconectare automată în caz de inactivitate și deconectarea zilnică a tuturor angajaților la o oră stabilită, cheile serviciilor externe sunt criptate, copiile de siguranță se creează automat și sunt, de asemenea, criptate, iar site-ul funcționează doar prin HTTPS. Interfața este tradusă în 11 limbi, are mai multe teme de culori și o versiune demo cu o companie fictivă pentru prezentări către clienți.
Proiectul este scris în întregime în TypeScript. Interfața este construită cu React 19 și React Router pe un design system propriu, iar serverul cu Node.js și Fastify pe o bază de date PostgreSQL, cu interogări prin Kysely și validarea datelor cu Zod. Actualizările în timp real sosesc prin Server-Sent Events și mecanismul de notificări al PostgreSQL, iar telefonia funcționează pe WebRTC și JsSIP și a fost testată cu Asterisk. Pentru funcțiile AI se folosesc OpenAI API, Anthropic SDK și Ollama. Sistemul se instalează pe un VPS cu Ubuntu prin Docker Compose, iar Caddy emite automat certificatele HTTPS. Scenariile principale sunt acoperite de teste automate.
Rezultatul este un produs la care clientul nu trebuie să se adapteze: un CRM cu telefonie, chat intern și asistent AI, care rulează pe serverul propriu al clientului și, din prima zi, este organizat așa cum este organizată afacerea sa.








