Dezvoltarea de la zero a unei solutii modulare care integreaza functionalitati specifice managementului de deseuri (mobilitate + sistem de facturare bazat pe conceptul “platesti cat produci” + aplicatii multi-user + sincronizari de date in timp real)
CONTEXTUL
Abordarea noastra
In ultimii ani piata s-a schimbat semnificativ - implicit la nivelul asteptarilor si nevoilor clientilor. Migrarea brusca spre managementul de la distanta, lucrul cu instrumente digitale colaborative si servicii personalizate a schimbat modul de organizare din aproape toate industriile.
Pe fondul acestor schimbari, am decis sa alocam echipe si resurse (logistice si de timp) pentru dezvoltarea mai multor aplicatii si solutii care pot fi implementare rapid si ajuta la adaptarea companiilor si comunitatilor la schimbarile dinamice din piata.
Exemple de aplicatii si solutii dezvoltate de echipele noastre (in functie de industrie):
- Management orase/comunitati - SmartCity
- Transport - TaxiApp
- Management flote - TaxiFleet
- E-commerce - Delivery App
- Turism si industria ospitalitatii - HoReKa
- Management deseuri - SmartSanitation
SOLUTIA
In acest context, solutia SmartSanitation a fost dezvoltata cu dublu scop:
- ca modul complementar pentru solutia SmartCity - pentru a oferi acces la functionalitati extinse;
- ca solutie independenta si completa care integreaza functionalitati specifice de care au nevoie in egala masura clientii (casnici, primarii, etc) si companiile de management al deseurilor.

Roluri acoperite in proiect
Project Manager
Developeri
Arhitect de solutie
Vrei sa implementezi aceasta solutie in compania / comunitatea ta?
Aplicatie mobila pentru colectorii de deseuri
Aplicatia mobila este implementata pe un PDA Android si le permite utilizatorilor (colectorilor de deseuri) sa:
- scaneze codul QR de pe pubela (codul QR reprezinta numarul de contract);
- identifice rapid clientul asociat;
- inregistreze volumul din tipul deseurilor colectate (menajer, reciclabil, compostabil);
- genereze bonuri de plata (pot fi incarcate inclusiv poze cu pubela inainte si dupa descarcare);
- refuze colectarea deseurilor (precizand si motivul).
Toate datele se transmit on-line catre aplicatia centrala de management. Daca nu exista comunicatie device mobil server, datele se stocheaza in device si se vor sincroniza in momentul cand avem conexiune de date (Wi-Fi sau date mobile).

Aplicatie iOS & Android pentru clienti
Aplicatie mobila creata pentru a tine clientii (casnici, primarii, etc) informati si pentru a le oferi acces rapid la datele din cont:
- actualizari in timp real in cont;
- mai multa transparenta in comunicare si in procese;
- acces rapid la facturi;
- durata si birocratia reduse.

Arhitectura de microservicii
Bazandu-se pe MSA (Microservices Architecture), SmartSanitation integreaza o serie de microservicii: Prezentare | CRMService | TmService | FinancialService | PdfService | EmailService | Autentificare | ApiGateway | ApiOrchestrator | Proiecte comune (ApiKernel, DataAccessKernel, ErpCommons )

Microservicii bazate pe principiile SOLID
Fiecare microserviciu este dezvoltat pe pricipiile SOLID pentru a fi reactiv la evenimentele care folosesc RabbitMq,stoca datele proprii folosind baze de date separate, interactiona cu alte microservicii prin HTTP folosind Consul pentru obtinerea IP-ului si port pentru utilizarea DNS, pentru a evita erorile folosind Polly, segrega logica de business implementand pattern-ul Command pattern prin utilizarea MediatR, si pentru se expune la rulare la Consul.
Presentation
CRMService
TmService
FinancialService
PdfService
EmailService
Authentication
ApiGateway
ApiOrchestrator
Presentation
Presentation este un SPA (Single Page Application) care foloseste Angular si Typescript pentru a implementa facil modelele de domeniu si logica de business care sunt compatibile cu elementele similare din microservicii.
*Fiind un microserviciu, Presentation este scris, de asemenea, folosind principiile SOLID pentru a:
- fi reactiv la evenimentele care folosesc RabbitMq;
- stoca datele proprii folosind baze de date separate;
- interactiona cu alte microservicii prin HTTP folosind Consul pentru obtinerea IP-ului si port pentru utilizarea DNS;
- evita erorile folosind Polly, segrega logica de business implementand pattern-ul Command pattern prin utilizarea MediatR.
CRMService
CRMService are rolul de a manageria utilizatorii, configura compania de administrare si stoca datele in PostgreSQL.
CRMService contine urmatoarele tehnologii:
- C#, Asp.Net 5;
- PostgreSQL;
- EntityFramework Core ca ORM;
- OpenAPI;
- Steeltoe ca si client pentru Consul;
- MediatR pentru segregarea logicii de business.
TmService
TmService integreaza contracte, produse, servicii cu optiuni management si stocare a fluxurilor de activitati. TmService receptioneaza evenimentele prin RabbitMq pentru a marca produsele cand se emit facturile automat. (stocheaza datele in PostgreSQL)
TmService utilizeaza urmatoarele tehnologii:
- C#, Asp.Net 5;
- PostgreSQL;
- MassTransit for RabbitMq client si implementari pub/sub pattern;
- EntityFramework Core ca ORM;
- OpenAPI;
- Steeltoe ca si client pentru Consul;
- MediatR pentru segregarea logicii de business.
FinancialService
FinancialService este un microserviciu care urmareste toate facturile si tranzactiile si care permite crearea automata sau manuala de facturi. FinancialService interactioneaza cu PdfService, CrmService, TmService si ApiOrchestrator direct prin HTTP si trimite evenimente catre TmService prin RabbitMq. Stocheaza , de asemenea, datele in PostgreSQL.
FinancialService utilizeaza urmatoarele tehnologii:
- C#, Asp.Net 5;
- PostgreSQL;
- MassTransit pentru RabbitMq client si implementari pub/sub pattern;
- EntityFramework Core ca ORM;
- OpenAPI;
- Polly pentru circuit breaker;
- Hangfire pentru programarea de job-uri;
- Refit pentru facilitarea comunicarii cu alte microservicii prin HTTP;
- Steeltoe ca si client pentru Consul;
- MediatR pentru segregarea logicii de business.
PdfService
PdfService este un serviciu agnostic ce comunica prin server-ul FTP cu posibilitatea de a stoca, citi si genera pdf-uri.
PdfService utilizeaza urmatoarele tehnologii:
- C#, Asp.Net 5;
- IronPdf library pentru a genera pdf-uri din template-urile .cshtml;
- OpenAPI;
- Steeltoe ca si client Consul;
- MediatR pentru segregarea logicii de business.
EmailService
EmailService este un microserviciu agnostic care trimite email-uri catre conturi specifice folosind Sendgrid client.
EmailService foloseste urmatoarele tehnologii:
- C#, Asp.Net 5;
- OpenAPI;
- MassTransit for RabbitMq client si implementari pub/sub pattern;
- SendGrid client;
- MediatR pentru segregarea logicii de business.
Authentication
Authentication este un microserviciu ce creeaza conturi, genereaza toke-uri si pastreaza logica pentru autentificari. Stocheaza , de asemenea, datele in PostgreSQL.
Integreaza urmatoarele tehnologii:
- C#, Asp.Net 5;
- PostgreSQL;
- OpenAPI;
- MediatR pentru segregarea logicii de business;
- MailKit pentru implementare custom smtp logic;
- Steeltoe ca si client pentru Consul;
- JWT pentru autorizare.
ApiGateway
ApiGateway este un serviciu de tip gateway ce are rolul de a expune puncte finale pentru microservicii si logica de autorizare. Este singurul serviciu care comunica direct cu aplicatiile clientului.
ApiGateway integreaza urmatoarele tehnologii:
- C#, Asp.Net 5;
- Ocelot library pentru implementarea API Gateway folosind microserviciile DNS stocate in Consul;
- JWT pentru autorizare.
ApiOrchestrator
ApiOrchestrator implementeaza logica de business personalizata prin agregarea datelor pe mobil si in facturi.
ApiOrchestrator integreaza urmatoarele tehnologii:
- C#, Asp.Net 5;
- MediatR pentru segregarea logicii de business;
- OpenAPI;
- Polly pentru circuit breaker.
Proiectele cumune sunt folosite pentru implementarea principiului DRY (Do not Repeat Yourself), aducand un plus de stabilitate solutiei prin faptul ca foloseste o zona comuna de stocare DTOs (Data Transfer Objects) si prin abstractizarea generica a logicii.
Independent de aceste microservicii, solutia foloseste procese separate in acelasi context, putand automatiza fluxurile folosind BackgroundServices si Hangfire. Intreaga solutie este containerizata folosind Docker, pastrand fiecare imagine de serviciu pe Docker Hub si implementand totul pe device-ul de hosting folosind docker compose.
Proiecte similare
SmartCity App
Invoicer
TaxIoT - solutie web pentru managementul taximetrelor
