Cosmoslevel
CosmosLevel este o platformă SaaS (Software as a Service) multilingvă, concepută pentru profesioniștii care își desfășoară activitatea pe bază de programări. Cele două tipuri principale de utilizatori sunt profesioniștii care oferă programări și clienții care le rezervă. Deși platforma se adresează în primul rând profesioniștilor, aceștia pot, de asemenea, să își rezerve programări la alți profesioniști din cadrul aplicației, devenind, în esență, și ei clienți.
Deși CosmosLevel oferă deja o gamă robustă de funcții, există planuri de a adăuga mai multe funcționalități în viitor, cum ar fi prețuri dinamice, cupoane și vouchere, certificate cadou, opțiuni de programări de grup, servicii de abonament și instrumente de gestionare a clienților. Aceste funcții viitoare au ca scop îmbunătățirea flexibilității, a potențialului de marketing și a experienței generale a utilizatorilor aplicației.
Iată principalele caracteristici ale CosmosLevel:
- Oferte de programări: Profesioniștii pot crea oferte pentru programări. Aceste oferte pot fi personalizate cu o varietate de câmpuri, inclusiv limba, locația (online prin Google Meet sau Zoom sau față în față), întrebări personalizate pentru clienți, descrieri, fotografii de copertă, produse legate de programare și opțiuni implicite pentru produse.
- Suport multilingv: Utilizatorii pot crea oferte, produse și profiluri publice în mai multe limbi, sporind accesibilitatea pentru o bază de clienți globală.
- Instrumente de conferință integrate: Aplicația acceptă integrarea cu instrumente populare de videoconferință, cum ar fi Google Meet și Zoom, facilitând desfășurarea programărilor online de către profesioniști.
- Gestionarea disponibilității: Profesioniștii își pot specifica disponibilitatea prin intermediul unui calendar, care este conectat la ofertele lor de programări. Disponibilitatea poate fi definită cu increment de interval orar, intervale de date și o opțiune de verificare a conflictelor cu programările existente.
- Calendare conectate: Aplicația permite profesioniștilor să-și conecteze Google Calendar pentru a gestiona și vizualiza eficient programările.
- Opțiuni de personalizare: Profesioniștii pot adăuga adrese URL personalizate pentru ofertele lor, pot decide dacă își afișează profilurile pe pagina de rezervare și pot seta perioade minime de preaviz pentru rezervări.
- Potențial de marketing: Profilurile publice și recenziile sunt încorporate în platformă, crescând vizibilitatea profesioniștilor și oferind o modalitate de a construi încredere cu potențialii clienți.
- Mementouri prin e-mail: Pentru a reduce neprezentările, aplicația poate trimite mementouri prin e-mail clienților cu privire la programările lor viitoare.
- Selecția produselor: Ofertele pot include o selecție de produse din care clienții pot alege atunci când fac o programare. Profesioniștii pot, de asemenea, să seteze un produs implicit pentru o ofertă.
- Interacțiunea client-profesionist: Platforma include un sistem de recenzii în care clienții pot lăsa feedback pentru profesioniști. Profesioniștii au profiluri publice care le pot prezenta serviciile și ofertele.
- Setări cont și personalizare: Profesioniștii își pot personaliza conturile, își pot gestiona serviciile și își pot ajusta setările în funcție de preferințe.
- Confidențialitatea și respectarea politicilor: Termenii și condițiile CosmosLevel descriu utilizarea platformei, disponibilă la linkul dedicat furnizat de aplicație.
Tehnologii folosite:
- Angular 16+: Un framework puternic pentru construirea de aplicații web interactive și scalabile.
- WebSockets: Permite comunicarea în timp real între client și server, facilitând actualizări instantanee și experiențe fluide pentru utilizatori.
- Tailwind CSS: Un framework CSS axat pe utilități, pentru o stilizare rapidă și eficientă, promovând consecvența designului.
- Angular Material: O bibliotecă de componente UI care oferă componente predefinite, bine proiectate, eficientizând dezvoltarea front-end.
- NestJS: Un framework construit peste Node.js și TypeScript, oferind o structură robustă pentru construirea de aplicații server-side.
- Prisma ORM: Un mapper relațional de obiecte (ORM) care simplifică interacțiunea cu baza de date, făcând operațiunile bazei de date mai eficiente și mai ușor de întreținut.
- MySQL InnoDB Cluster: Un sistem de baze de date extrem de disponibil și scalabil, care oferă capabilități robuste de stocare și recuperare a datelor.
- Redis cu Sentinels: Un magazin de date în memorie de înaltă performanță, cu un mecanism încorporat de preluare a erorilor (sentinels), care îmbunătățește fiabilitatea și rezistența.
- Sentry: O platformă cuprinzătoare de urmărire a erorilor care oferă informații detaliate despre erorile aplicației, ajutând la identificarea și rezolvarea rapidă a problemelor.
- Prometheus: Un sistem de monitorizare a seriilor de timp pentru colectarea și stocarea valorilor metrice, permițând analiza performanței în timp real.
- Grafana: Un instrument de vizualizare a datelor și de creare a tablourilor de bord care permite interpretarea ușoară a datelor colectate de Prometheus.
- OpenReplay: Un instrument de redare a sesiunilor pentru depanarea interacțiunilor utilizatorilor, ajutând la înțelegerea comportamentului utilizatorilor și la identificarea problemelor din cadrul aplicației.
- GitHub Actions: O platformă de integrare continuă și livrare continuă (CI/CD) care automatizează procesul de implementare, asigurând actualizări ușoare și frecvente.
- Nginx Reverse Proxy: Un server web de înaltă performanță care acționează ca o poartă de acces, distribuind cererile pe mai multe servere și oferind capabilități de echilibrare a încărcării.
- Scalabilitate orizontală: Backend-ul aplicației este conceput pentru a se scala orizontal, adăugând servere suplimentare pentru a gestiona creșterea volumului de lucru și pentru a asigura o disponibilitate ridicată.
- Servere în mai multe locații: Serverele sunt implementate strategic în mai multe locații pentru a asigura redundanța și a minimiza impactul întreruperilor regionale.
- Tailscale VPN: Un serviciu VPN sigur și fiabil care permite conexiuni directe sigure între servere, facilitând comunicarea și schimbul de date.
- Traduceri bazate pe inteligență artificială: Valorificarea modelelor AI pentru servicii de traducere, îmbunătățind experiența utilizatorului și acoperirea globală.
- NATS.io: Un sistem de mesagerie care permite comunicarea descentralizată între microservicii, facilitând cuplarea slabă și dezvoltarea independentă.
- WebSockets prin Redis: Permite o comunicare eficientă și scalabilă în timp real între microservicii, utilizând Redis ca broker central de mesaje.
- Zoom, Google Calendar, Google Contacts, Google Id Provider, Stripe Checkout, Amazon S3 Storage: Integrări predefinite cu servicii terțe populare, eficientizând fluxurile de lucru ale utilizatorilor și îmbogățind funcționalitățile.
- Playwright: Am trecut de la Cypress la Playwright pentru caracteristicile sale uimitoare (vezi aici avantajele), cum ar fi posibilitatea de a deschide mai multe ferestre și de a testa funcționalitatea completă a aplicației, inclusiv plățile. Utilizarea Playwright pentru călătoriile utilizatorilor oferă încredere atunci când implementăm funcții noi. De asemenea, am folosit Playwright pentru a testa securitatea și integritatea API-ului.
- Jest: Un framework de testare JavaScript utilizat pe scară largă, utilizat pentru testarea unitară a codului frontend și backend, asigurând calitatea și stabilitatea codului.
- Pachete NPM Private Separate: O colecție dedicată de componente și funcționalități reutilizabile, promovând reutilizarea codului și mentenanța în cadrul aplicației.
Beneficiile aplicatiei:
Programare ușoară
Reprogramarea sau anularea programărilor se face ușor.
Primește confirmări și mementouri automate.
Experienta premium
Opțiuni flexibile de plată
Site multilingv
Provocările cu care ne-am confruntat:
1
Conectarea infrastructurii în mai mulți furnizori de cloud
Rulăm joburi programate orizontal pe toate sau pe anumite instanțe ale backend-ului: Una dintre problemele cu care ne-am confruntat a fost că am dorit ca firul principal al aplicației să nu fie ocupat cu executarea joburilor cron, cum ar fi trimiterea de e-mailuri, sincronizarea calendarelor, procesarea programărilor și curățarea imaginilor. Am folosit BullMQ pentru NestJS și a funcționat perfect. Acum, indiferent de câte instanțe ale backend-ului există, instanțele specifice pe care am dorit să rulăm anumite joburi au fost selectate într-un mod echilibrat distribuit. Acest lucru nu numai că a îmbunătățit performanța, permițându-ne să scalăm orizontal, dar a adus și o planificare avansată a joburilor, joburi repetitive și un control îmbunătățit al concurenței.
2
Monitorizarea performanței
Din cauza problemelor de performanță ale furnizorului nostru de cloud, am învățat cum să monitorizăm și să detectăm problemele înainte ca acestea să devină serioase. Aceasta a inclus:
- Monitorizarea timpului de funcționare a infrastructurii
- Monitorizarea timpului de sustragere și de încărcare a fiecărei mașini virtuale
- Monitorizarea stării serverelor Redis și MySQL InnoDB
- Monitorizarea stării cozilor aplicației și a erorilor
- Monitorizarea stării cron job-urilor
- Monitorizarea erorilor și jurnalelor backend și frontend
3
Pene ale furnizorilor de servicii cloud
Am avut "șansa" de a experimenta probleme în procesul de dezvoltare cu furnizorul nostru de cloud, așa că am învățat cum să gestionăm întreruperile și să menținem aplicația funcțională. Soluția a inclus:
- Cluster MySQL InnoDB
- Redis Sentinels
- NATS
- Proxy invers Nginx pentru echilibrarea mai multor servicii backend
- WebSockets care mențin conexiunile în Redis, astfel încât să poată fi scalate pe mai multe servicii backend
4
Să știm exact cum utilizează utilizatorii aplicația, pentru a o putea îmbunătăți constant.
OpenReplay ne-a salvat și ne-a adus o claritate absolută, permițându-ne să derulăm întreaga sesiune a utilizatorului ca și cum am fi fost acolo cu el. Acest lucru a fost de un real ajutor. Pentru o aplicație mai simplă, poate fi folosită și funcția de replay din Sentry.
5
Feature Flags
Am integrat funcționalități de tip "feature flags" cu OpenReplay, ceea ce ne permite să activăm sau să dezactivăm rapid funcții fără a fi nevoie să implementăm cod nou. Această integrare permite o experimentare simplificată și o iterație rapidă, eliminând necesitatea implementărilor constante de cod.
7
Suport multilingv
Implementarea unui sistem de gestionare a mai multor limbi în interfața aplicației, ofertele și comunicarea, asigurând traduceri și o localizare precise.
8
Sincronizare in timp real
Sincronizarea în timp real a calendarelor, disponibilității și datelor programărilor pentru mai mulți utilizatori și dispozitive. Acest lucru necesită o infrastructură backend robustă și o gestionare atentă a actualizărilor de date.
9
Integrare cu servicii terțe
Integrare perfectă cu servicii externe precum Google Meet, Zoom și gateway-uri de plată, menținând în același timp securitatea datelor și confidențialitatea utilizatorilor. Aceasta implică gestionarea API-urilor, protocoale de autentificare și gestionarea erorilor.