Solutia
Solutia dezvoltata are ca scop oferirea unei platforme intuitive, capabile sa indeplineasca cerintele de flexibilitate in gestionarea datelor, interactivitate in vizualizarea acestora si exportul facil al rezultatelor intr-o gama variata de formate.
Proiectul este o aplicatie web dezvoltata utilizand C# (ASP.NET Core) pentru partea de back-end si Angular pentru partea de front-end. Solutii
Dynamic report generation
Solutia dezvoltata ofera o flexibilitate totala in generarea rapoartelor dinamice. Utilizatorii pot importa date din surse externe (API-uri) sau locale si pot crea rapoarte personalizate.
Fiecare coloana din raport este complet configurabila – utilizatorii pot seta denumiri personalizate, stiluri si aplica formule complexe de calcul care integreaza datele din diferite surse.
Exemplu de formula:: Utilizatorii pot combina date din fisiere Excel cu date externe folosind formule de tipul =SUM([0] + {1}), unde [0] reprezinta prima coloana din datele externe si {1} reprezinta a doua coloana din fisierul Excel exportat.
Dynamic chart creation & configuration
Utilizatorii pot crea chart-uri dinamice pe baza rapoartelor generate. Fiecare element al unui chart – de la axele X si Y la label-uri si culori – poate fi configurat individual.
Pentru o personalizare avansata, utilizatorii au posibilitatea de a crea si aranja grupuri de chart-uri pe pagina folosind cod HTML personalizat, adaptand astfel layout-ul in functie de nevoile lor specifice.
Interactive Charts
Pe langa faptul ca graficele sunt complet personalizabile, acestea sunt si interactive. Utilizatorii pot face click pe anumite dataset-uri din chart pentru a accesa informatii suplimentare legate de datele vizualizate. Aceasta functionalitate ofera o explorare mai detaliata si dinamica a datelor, ceea ce contribuie la o experienta mai interactiva si mai informativa.
Real-time Data Communication with NATS
Pentru a asigura o experienta fluida si interactiva, aplicatia foloseste NATS, un sistem de mesagerie scalabil, pentru a transmite date in timp real intre server si interfata (front). Utilizatorii beneficiaza de actualizarea automata a rapoartelor si chart-urilor fara sa fie nevoie de reimprospatarea manuala a paginii.
Exemplu: In Angular, aplicatia se conecteaza la fluxuri de date prin pachetul nats.ws, care permite reincarcarea automata a componentelor vizuale atunci cand apar modificari.
Elasticsearch for Efficient Data Search
Pentru a gestiona volume mari de date si a permite interogari rapide, am integrat Elasticsearch. Aceasta solutie permite cautari eficiente si analize rapide ale datelor inregistrate, in special in contextul gestionarii log-urilor si auditului.
Scheduled Tasks with Quartz.NET
Pentru a gestiona si automatiza calculul periodic al rapoartelor complexe, cat si generarea de tabele temporare - cache), am folosit Quartz.NET. Acest framework permite programarea si rularea sarcinilor recurente, precum generarea si salvarea automata a rapoartelor in cache, optimizand astfel performanta generala a aplicatiei.
Simplified Request Management with MediatR
Prin utilizarea MediatR, am simplificat gestionarea cererilor si raspunsurilor in aplicatie, aplicand principiul decuplarii intre componente. Aceasta solutie a redus complexitatea codului si a facilitat integrarea modelului CQRS (Command Query Responsibility Segregation).
Excel Integration with EPPlus
Pentru a permite utilizatorilor sa exporte rapoartele si chart-urile generate intr-un format utilizabil si usor de partajat, am integrat biblioteca EPPlus. Aceasta ofera capacitatea de a genera fisiere Excel care includ atat datele sursa, cat si graficele vizualizate.
Database Interaction with Entity Framework Core
Aplicatia foloseste Entity Framework Core pentru gestionarea interactiunilor cu baza de date, permitand maparea simplificata a claselor C# la tabelele bazei de date. Acest lucru elimina necesitatea scrierii de cod SQL manual si asigura migrarea automata a modificarilor la structura bazei de date. PostgreSQL
Aplicatia foloseste PostgreSQL ca sistem de gestionare a bazelor de date relationale. PostgreSQL este un software open-source, recunoscut pentru fiabilitatea, scalabilitatea si performanta sa. Avantaje principale:
- Performanta si scalabilitate: PostgreSQL gestioneaza eficient volume mari de date si functioneaza excelent in medii de productie mari.
- Extensibilitate: Suporta extensii avansate si tipuri de date precum JSON, facandu-l ideal pentru aplicatii moderne si flexibile.
Concourse (CI/CD)
Concourse CI este utilizat pentru a automatiza procesele de Continuous Integration si Continuous Deployment (CI/CD).
La fiecare modificare a codului pe GitLab, sunt create automat imagini Docker. Inainte de fiecare proces de deploy, se face automat un backup al bazei de date, iar scripturile SQL pentru migrarea bazei de date sunt executate automat.
Fluxul automatizat functioneaza astfel: - Backup automat al bazei de date: Se executa un script care salveaza baza de date curenta pe un server extern.
- Rularea scripturilor SQL: Dupa backup, scripturile SQL necesare pentru actualizari sau migratii sunt rulate automat.
- Deploy automat al aplicatiei: Odata ce baza de date este actualizata, aplicatia este construita si lansata automat.