# Cindel ## Docs - [Cindel Backup: Export, Import, and Low-Level Helpers](https://cindel.dev/features/backup.md): Export a Cindel database to a JSONL archive with CindelBackup, restore it into an empty database, and use documentIdsPage for large-collection tooling. - [Schema Migrations: Evolving Your Cindel Data Model](https://cindel.dev/features/migrations.md): Use CindelMigrationPlan and CindelMigrationStep to safely evolve your data schema across app versions with typed export and import steps. - [Transactions: Atomic Reads, Writes, and Rollback in Cindel](https://cindel.dev/features/transactions.md): Group multiple Cindel operations into atomic read or write transactions that automatically commit on success and roll back on error. - [Reactive Watchers: Dart Streams for Real-Time Updates](https://cindel.dev/features/watchers.md): Subscribe to Dart streams that emit after committed Cindel writes. Use object, collection, query, and lazy watchers to drive reactive Flutter UIs. - [Installing Cindel in a Flutter or Dart Project — Setup](https://cindel.dev/installation.md): Add Cindel's four packages to your Flutter project, configure build_runner, and choose between MDBX and SQLite native backends for local storage. - [Cindel: Flutter-First Local Database — Full Overview](https://cindel.dev/introduction.md): Learn what Cindel is, how its code-generation model works, and which storage backend to choose for native, mobile, and web Flutter apps. - [Defining Cindel Collections, IDs, Fields, and Indexes](https://cindel.dev/modeling/collections.md): Use @Collection and @Index to define root collections, declare supported field types, control stored names, and create composite indexes for fast queries. - [Cindel Embedded Objects: Nested Value Types Explained](https://cindel.dev/modeling/embedded-objects.md): Mark Dart classes with @embedded to store nested value objects inside a parent document, with support for lists of embedded objects and deep filter paths. - [Freezed Models as Cindel Collections: Setup and Limits](https://cindel.dev/modeling/freezed.md): Cindel supports Freezed classic class and single primary factory styles. Learn the supported patterns and limitations before adopting Freezed with Cindel. - [Collection Relationships in Cindel: Links and Backlinks](https://cindel.dev/modeling/relationships.md): Connect root collections using CindelLink for to-one and CindelLinks for to-many relationships, and use @Backlink to access inverse links. - [Cindel Local-First Sync: Adapter, Config, and Offline Writes](https://cindel.dev/platforms/sync.md): Add local-first sync to Cindel by implementing CindelSyncAdapter. Covers push and pull contract, offline behavior, and common mistakes. - [Cindel on Flutter Web: SQLite, OPFS, and Browser Storage](https://cindel.dev/platforms/web.md): Run Cindel in Flutter Web with SQLite and OPFS. Configure a logical DB name, meet browser requirements, and handle storage quota errors. - [Filtering Cindel Queries: Type-Safe and Dynamic APIs](https://cindel.dev/querying/filters.md): Use generated type-safe filter helpers or CindelFilter for dynamic runtime predicates, embedded object paths, and logical composition in Cindel queries. - [Projections and Aggregates for Efficient Data Access](https://cindel.dev/querying/projections-aggregates.md): Read only the fields you need with Cindel's property projections, and compute counts, min, max, sum, and average directly from query results. - [Querying Cindel Collections with the Typed Query API](https://cindel.dev/querying/queries.md): Use all(), where(), and filter() to read, count, sort, paginate, update, and delete documents from Cindel collections with type-safe query builders. - [Get Started with Cindel: Flutter Local Database Guide](https://cindel.dev/quickstart.md): Build your first Cindel-powered Flutter feature in minutes: add packages, define a model, generate code, and run your first typed query. - [Cindel Error Reference: Causes and Recovery Actions](https://cindel.dev/reference/errors.md): Reference for all Cindel error classes — open, schema, transaction, query, unique-index, and native errors — with causes and recovery actions. - [Cindel Current Limits: Modeling, Sync, and Web Constraints](https://cindel.dev/reference/limits.md): A reference of Cindel's current intentional limitations — what is not yet in the public API — across data modeling, querying, sync, and Web support. - [Testing Cindel: Strategies for Unit and Widget Tests](https://cindel.dev/reference/testing.md): Use Cindel.openInMemory for fast isolated tests, write CRUD and query assertions, and simulate sync online/offline states with FakeSyncAdapter.