Viva Skintech
Patient Ecosystem
Engineering a real-time operational stop-gap during a high-risk enterprise CRM migration, ensuring continuous clinical operations by migrating legacy Excel workflows to a unified Flutter and Firebase application.
View on GitHub
Architecture Evolution
Mitigating operational disaster during an enterprise CRM migration.
Legacy Workflow
- Architecture: Completely manual, unstructured Excel spreadsheet exports.
- Data Integrity: High risk of data loss and corruption across fragmented local files.
- Search: Clinical staff experienced severe UI lag when searching thousands of rows during active clinics.
- Security: No role-based access control; patient data stored insecurely.
Operational Stop-Gap
- Architecture: Cross-platform Flutter application backed by Firebase.
- Data Integrity: Normalized legacy Excel data migrated into structured Firestore NoSQL collections.
- Search: Composite Firestore indexing enabled instant concurrent searching by Name, Phone, and ID.
- Security: Firebase Authentication enforced strict role-based data access for clinical staff.
Production Implementation
Features explicitly implemented and active in the codebase.
Architecture Data Flow
A serverless Firebase architecture providing centralized patient data, secure authentication, and cross-platform access for clinical staff.
Flutter Mobile
iOS & Android App
Flutter Web
Desktop Workstation Portal
Firebase Firestore
NoSQL Patient Database
Firebase Auth
Role-Based Access Rules
Technology Decisions (ADRs)
Architectural decisions made to ensure rapid deployment during the migration crisis.
Cross-Platform Flutter vs Native
Firebase Firestore vs Relational SQL
My Responsibilities
Architected
The entire cross-platform infrastructure, choosing Flutter and Firebase to meet aggressive deployment timelines.
Engineered
The Dart UI components, state management using Providers, and the search indexing logic.
Migrated
Cleaned and normalized thousands of unstructured Excel rows into structured Firestore collections.
Engineering Challenges
- Unstructured Excel Data: The raw data exported from the old CRM was highly unstructured, with inconsistent schemas and missing fields across rows. Solved by building data normalization scripts before Firestore ingestion.
- Query Requirements: Clinical staff needed to search patients by Name, Phone, and ID simultaneously without experiencing UI lag. Solved by configuring specific Firestore composite indexes to support concurrent multi-field filtering.
Lessons Learned
- NoSQL Trade-offs: While Firestore excels at rapid unstructured data ingestion, complex relational queries require strategic denormalization and manual indexing overhead.
- Crisis Engineering: When building operational stop-gaps during an active business crisis (CRM migration), prioritizing deployment speed and cross-platform accessibility (Flutter) over perfect architectural purity is a critical engineering trade-off.
Project Outcomes
Measurable impact of the operational stop-gap on clinical workflows.