ydb_flutter_sdk 0.2.2 copy "ydb_flutter_sdk: ^0.2.2" to clipboard
ydb_flutter_sdk: ^0.2.2 copied to clipboard

Yandex Database SDK for Dart and Flutter with gRPC transport, complete type system, and authentication support

Yandex DB Flutter SDK #

en ru

YDB SDK for Dart and Flutter - type-safe client for working with YDB distributed SQL database.

Overview #

What is this? #

YDB Flutter SDK is a library for Yandex Database (YDB) - more than just a Distributed SQL database. We brought YDB support to the Dart and Flutter ecosystem, enabling developers to build mobile, web, and desktop applications with YDB as backend.

Why YDB Flutter SDK? #

The Problem:

  • YDB is a powerful distributed database from Yandex, but lacks official Dart/Flutter support
  • Building apps with YDB backend requires complex gRPC integration and type conversion
  • Yandex Cloud authentication (IAM, Service Account) needs special handling
  • No ready-to-use solution for Flutter developers wanting to use YDB

The Solution:

  • Type Safety: automatic mapping of all YDB types (Int64, Uint64, Decimal, Timestamp, etc.)
  • gRPC Under the Hood: no need to work with protobuf directly
  • Built-in Authentication: IAM, OAuth, Service Account (JWT)
  • Session Management: pool, lifecycle, retries
  • Production-quality: tests, real integrations with Yandex Cloud

Key Benefits #

  • Production Ready: tests, real Yandex Cloud integration, gRPC
  • Type Safe: Full compile-time type checking with Dart's type system
  • Flutter First: Works on mobile (iOS/Android), web, desktop (Windows/macOS/Linux) platforms
  • Zero Vendor Lock-in: Based on open YDB protocol, follows official Python/Go SDK architecture
  • Well Tested: 100% test coverage for critical paths
  • Community Driven: Open source, Apache 2.0 license

Motivation #

This project was born from the need to use YDB in Flutter applications.

Project Goal - to provide Flutter developers with complete, reliable, and convenient access to YDB

Status: actively developing, gRPC transport and type system ready, Yandex Cloud integration tested and used in production

Features #

Available Now #

Complete gRPC Transport

  • Production-ready gRPC client for Yandex Cloud YDB
  • Full bidirectional type conversion (SDK ↔ protobuf)
  • Session lifecycle management (Create, Execute, Delete)
  • TLS/SSL support with auto-detection
  • OAuth authentication via x-ydb-auth-ticket header
  • 240 unit tests with 100% pass rate

Complete Type System

  • All YDB types mapped to Dart: Int8/16/32/64, Uint8/16/32/64, Float, Double, Bool
  • String types: Utf8, String, Bytes
  • Temporal types: Date, Datetime, Timestamp, Interval
  • Special types: Decimal, Uuid, Json, JsonDocument
  • Containers: Optional, List, Tuple, Struct, Dict
  • JSON serialization compatible with YDB HTTP API

HTTP Transport

  • HTTP/HTTPS with TLS
  • Authentication via metadata headers
  • Retry logic with exponential backoff
  • Complete error handling

Authentication

  • Anonymous credentials
  • OAuth token provider
  • Service Account with IAM
  • Custom token providers

Basic Driver & Client APIs

  • YdbDriver for connection management
  • QueryClient for executing queries
  • SchemeClient for DDL operations (CREATE/ALTER/DROP table)
  • Parametrized queries with type-safe parameters
  • Example Flutter application with real CRUD operations

Installation #

Add to your pubspec.yaml:

dependencies:
  ydb_flutter_sdk: ^0.2.0

Quick Start #

Basic Usage #

import 'package:ydb_flutter_sdk/ydb_flutter_sdk.dart';

void main() async {
  // Create driver
  final driver = YdbDriver(
    endpoint: 'grpcs://ydb.serverless.yandexcloud.net:2135',
    database: '/ru-central1/b1g8sk.....',
    credentials: YdbAuth.oauth(oauthToken),
  );

  await driver.initialize();

  // Execute query
  final result = await driver.queryClient.execute(
    'SELECT * FROM users WHERE id = \$id',
    parameters: {'id': YdbInt64(123)},
  );

  // Process results
  for (final row in result.rows) {
    final name = (row['name'] as YdbUtf8).value;
    print('User: $name');
  }

  await driver.close();
}

Working with Types #

// Create YDB values
final userId = YdbInt64(123);
final userName = YdbUtf8('John Doe');
final userEmail = YdbOptional(YdbUtf8('john@example.com'));

// Complex types
final struct = YdbStruct({
  'id': YdbInt64(1),
  'name': YdbUtf8('Product'),
  'price': YdbOptional(YdbDecimal('99.99')),
  'tags': YdbList([YdbUtf8('electronics'), YdbUtf8('gadgets')]),
});

// Serialize to JSON (for HTTP API)
final json = userId.toJson();
// {"type": "Int64", "value": "123"}

// Deserialize from JSON
final value = IYdbValue.fromJson({
  'type': 'Utf8',
  'value': 'Hello, YDB!'
});

Authentication #

// Anonymous (for local development)
final credentials = YdbAuth.anonymous();

// OAuth token
final credentials = YdbAuth.oauth('your-oauth-token');

// Service Account with JSON key file
final credentials = YdbAuth.serviceAccount(
  serviceAccountId: 'aje...',
  keyId: 'ajepr...',
  privateKey: '-----BEGIN PRIVATE KEY-----...',
);

Architecture #

YdbDriver
  ├─ QuerySessionPool (stateless, recommended)
  │   └─ QuerySession
  │       └─ QueryTxContext
  └─ TableSessionPool (stateful, legacy)
      └─ TableSession
          └─ Transaction

Transport Layer (pluggable)
  ├─ GrpcYdbTransport (production ready, v0.2.0)
  └─ HttpYdbTransport (working, legacy)

Authentication
  ├─ AnonymousCredentials
  ├─ OAuthTokenProvider
  ├─ ServiceAccountTokenProvider
  └─ Custom ITokenProvider

Documentation #

  • Quick Start Guide - Get started in 5 minutes
  • Authentication - All authentication methods
  • Type System - Working with YDB types
  • Examples - Complete working examples

Testing #

Run all tests:

flutter test

Run specific test suites:

# Type system tests
flutter test test/types_test.dart

# gRPC transport tests
flutter test test/grpc/

# Authentication tests
flutter test test/auth/

License #

Apache 2.0 - same as YDB


Created by Ollyrd Chemmyrd
Based on official YDB SDK architecture by Yandex

0
likes
150
points
213
downloads

Publisher

verified publisherflutter-lab.pro

Weekly Downloads

Yandex Database SDK for Dart and Flutter with gRPC transport, complete type system, and authentication support

Repository (GitHub)
View/report issues

Documentation

Documentation
API reference

License

Apache-2.0 (license)

Dependencies

dart_jsonwebtoken, fixnum, flutter, grpc, http, logging, protobuf

More

Packages that depend on ydb_flutter_sdk