<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nauman Khalid</title>
    <description>The latest articles on DEV Community by Nauman Khalid (@nauman_khalid_795e95b4501).</description>
    <link>https://dev.to/nauman_khalid_795e95b4501</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4046845%2F49db792b-14e0-4010-8f00-7cfa06e881fe.png</url>
      <title>DEV Community: Nauman Khalid</title>
      <link>https://dev.to/nauman_khalid_795e95b4501</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nauman_khalid_795e95b4501"/>
    <language>en</language>
    <item>
      <title>Exploring the VModal Flutter SDK: A Modular SDK for AI-Powered Video Search</title>
      <dc:creator>Nauman Khalid</dc:creator>
      <pubDate>Sat, 25 Jul 2026 13:21:26 +0000</pubDate>
      <link>https://dev.to/nauman_khalid_795e95b4501/exploring-the-vmodal-flutter-sdk-a-modular-sdk-for-ai-powered-video-search-plc</link>
      <guid>https://dev.to/nauman_khalid_795e95b4501/exploring-the-vmodal-flutter-sdk-a-modular-sdk-for-ai-powered-video-search-plc</guid>
      <description>&lt;p&gt;As Flutter developers, we're familiar with SDKs for authentication, analytics, cloud storage, and databases. Recently, I explored the &lt;strong&gt;VModal Flutter SDK&lt;/strong&gt;, which takes a different approach by providing a client library for interacting with an AI-powered video platform.&lt;/p&gt;

&lt;p&gt;Instead of performing AI inference on the device, the SDK acts as a bridge between your Flutter application and the VModal cloud platform, handling authentication, media uploads, indexing, and semantic search.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Architecture
&lt;/h2&gt;

&lt;p&gt;The SDK follows a clean and modular architecture centred around a single client.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Flutter Application
        │
        ▼
   VmodalClient
        │
 ┌──────┼────────────────────────────────────┐
 ▼      ▼         ▼          ▼         ▼
Auth  Search  Collections  Images  Admin
        │
        ▼
   HTTP Transport
        │
        ▼
 VModal Cloud Platform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;VmodalClient&lt;/code&gt; acts as the entry point and exposes different resources responsible for specific domains of the API.&lt;/p&gt;




&lt;h2&gt;
  
  
  Initialising the SDK
&lt;/h2&gt;

&lt;p&gt;The SDK is configured using an API key provider and a configuration object.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;apiKeys&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MutableApiKeyProvider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;VmodalClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;config:&lt;/span&gt; &lt;span class="n"&gt;SdkConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;apiKeyProvider:&lt;/span&gt; &lt;span class="n"&gt;apiKeys&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once initialised, the client exposes multiple resources, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Semantic Search&lt;/li&gt;
&lt;li&gt;Collections&lt;/li&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Indexes&lt;/li&gt;
&lt;li&gt;Administration&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Resource-Based Design
&lt;/h1&gt;

&lt;p&gt;One thing I appreciated was the separation of responsibilities.&lt;/p&gt;

&lt;p&gt;Instead of exposing hundreds of API methods from a single class, the SDK groups related functionality into dedicated resources.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;auth&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;health&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;searches&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(...);&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;collections&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(...);&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;images&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(...);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This keeps the API intuitive and easy to navigate.&lt;/p&gt;




&lt;h1&gt;
  
  
  Secure Upload Workflow
&lt;/h1&gt;

&lt;p&gt;The upload process is designed around signed URLs instead of sending large media files through the application server.&lt;/p&gt;

&lt;p&gt;The workflow looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Flutter App
      │
Select Video
      │
      ▼
Request Upload Session
      │
      ▼
Receive Signed URL
      │
      ▼
Upload to Cloud Storage
      │
      ▼
Notify Backend
      │
      ▼
AI Processing Begins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This approach scales much better for large video files and is commonly used by cloud providers.&lt;/p&gt;




&lt;h1&gt;
  
  
  AI-Powered Semantic Search
&lt;/h1&gt;

&lt;p&gt;The most interesting feature is the search API.&lt;/p&gt;

&lt;p&gt;Rather than relying on filenames or manually assigned tags, the platform supports semantic search.&lt;/p&gt;

&lt;p&gt;For example, a query such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"A person riding a bicycle at sunset"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"A red sports car driving on a highway"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;can return the most relevant indexed videos.&lt;/p&gt;

&lt;p&gt;Although the Flutter SDK simply sends the request, it's clear that the backend performs embedding generation and vector similarity search.&lt;/p&gt;




&lt;h1&gt;
  
  
  Clean Networking Layer
&lt;/h1&gt;

&lt;p&gt;Another thing that stood out was the networking architecture.&lt;/p&gt;

&lt;p&gt;Business logic is completely separated from HTTP communication.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Search Resource
        │
        ▼
HTTP Wrapper
        │
        ▼
Transport Layer
        │
        ▼
REST API
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This abstraction makes the SDK easier to maintain and simplifies testing because the transport layer can be mocked independently.&lt;/p&gt;




&lt;h1&gt;
  
  
  Overall Workflow
&lt;/h1&gt;

&lt;p&gt;The SDK follows a straightforward lifecycle:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Initialize SDK
        │
Authenticate
        │
Choose Operation
        │
 ┌──────┼─────────────┐
 ▼      ▼             ▼
Search Upload     Collections
 │        │             │
 ▼        ▼             ▼
Backend Processing
        │
        ▼
Return Typed Models
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most of the heavy lifting happens in the cloud. The SDK is responsible for providing a clean Flutter interface to those backend services.&lt;/p&gt;




&lt;h1&gt;
  
  
  Design Patterns
&lt;/h1&gt;

&lt;p&gt;The implementation appears to use several familiar design patterns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Facade Pattern&lt;/strong&gt; (&lt;code&gt;VmodalClient&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency Injection&lt;/strong&gt; (&lt;code&gt;SdkConfig&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource Pattern&lt;/strong&gt; (Auth, Search, Collections, Images)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transport Abstraction&lt;/strong&gt; (HTTP layer separated from business logic)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strongly Typed Models&lt;/strong&gt; for requests and responses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These patterns make the codebase modular and relatively easy to extend.&lt;/p&gt;




&lt;h1&gt;
  
  
  What the SDK Doesn't Do
&lt;/h1&gt;

&lt;p&gt;Based on the repository, the SDK doesn't appear to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Perform AI inference locally&lt;/li&gt;
&lt;li&gt;Process or transcode videos on-device&lt;/li&gt;
&lt;li&gt;Record video using the camera&lt;/li&gt;
&lt;li&gt;Run offline machine learning models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead, it delegates those responsibilities to the VModal backend.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Overall, the VModal Flutter SDK is well structured and follows many of the architectural practices you'd expect from a production-ready Flutter SDK. The resource-based organisation, transport abstraction, and secure upload workflow make it straightforward to integrate into an application.&lt;/p&gt;

&lt;p&gt;The AI-powered semantic search capability is the standout feature. Rather than building search around filenames or metadata, the platform enables developers to search media using natural language, while keeping the Flutter client lightweight and focused on API communication.&lt;/p&gt;

&lt;p&gt;If you've worked with SDKs like Firebase or Supabase, the overall developer experience will feel familiar, with the addition of AI-driven media indexing and search capabilities.&lt;/p&gt;

&lt;p&gt;Have you explored similar AI media platforms or integrated semantic search into a Flutter application? I'd be interested to hear about your experience and any challenges you've encountered.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cloud</category>
      <category>flutter</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
