Back to Projects

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
Patient Search App Hero

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.

FrontendFlutterSingle Dart codebase.
DatabaseFirestoreNoSQL document storage.
AuthFirebaseRole-based security rules.
HostingFirebaseDesktop web deployment.
StylingTailwindUtility-first design.
LanguageDartObject-oriented UI.
PerformanceIndexesComposite query optimization.
StateProvidersReactive state management.

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

Single Codebase (Dart)

Technology Decisions (ADRs)

Architectural decisions made to ensure rapid deployment during the migration crisis.

Cross-Platform Flutter vs Native

Problem: Clinical staff needed access from desktop workstations and mobile devices immediately.
Why Chosen: Flutter allowed me to compile a single Dart codebase to both Web and Mobile, halving the required development time for the stop-gap solution.
Trade-offs: Flutter Web can have a larger initial bundle size compared to standard HTML/React.
Alternatives: React + React Native (too much overhead for a rapid internal tool).

Firebase Firestore vs Relational SQL

Problem: The legacy CRM data was exported in unstructured, fragmented Excel sheets with inconsistent columns.
Why Chosen: A NoSQL document database (Firestore) natively handles schemaless, flexible JSON data, allowing for rapid ingestion without building rigid SQL migrations.
Trade-offs: Requires careful data denormalization and composite indexing to support complex queries.
Benefits: Instant serverless deployment and real-time data syncing across client devices.

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.

Operations100%Clinical Uptime Maintained
MigrationZeroData Loss Incidents
TransitionSeamlessLegacy to Centralized DB

Production Tech Stack

Flutter
Firebase
Dart
Tailwind CSS
Available for Hire

Looking for a Software Engineer?

I'm currently open to full-time roles. Whether you need a full-stack expert, a front-end specialist, or someone to build React Native apps from scratch, my inbox is open.

View GitHub