tane/apps/app_seeds/pubspec.yaml
vjrj 2812c99280 feat(inventory): CSV/JSON export and JSON import with LWW reconciliation
Interchange export/import for Phase 1 (data-model §7):

- JSON: canonical, versioned envelope (formatVersion 1) with all sync
  metadata verbatim, photos embedded as base64, tombstones excluded.
  Species are re-resolved on import by scientific name (catalog ids are
  per-install). Reader tolerates unknown fields/enum values (§5.2) and
  rejects newer format versions with a clear error.
- CSV: export-only spreadsheet flatten, one row per lot, RFC 4180
  escaping, never any photo bytes.
- Import merges by UUIDv7 id in one transaction: insert-if-unknown
  preserving original stamps, last-writer-wins by packed HLC for known
  mutable rows, append-only movements; afterwards the local clock
  receiveEvent()s the newest imported stamp so it never runs behind.
- Settings gains a Backup section (export CSV/JSON, import JSON with
  confirmation); file dialogs behind a FileService interface backed by
  file_picker (MIT).
- Tests: codec round-trip and tolerance, reconciler LWW, repository
  export→import round-trip (fresh DB, idempotent re-import, newer-local
  wins, clock monotonicity, species re-resolution), backup widget flows.
2026-07-09 12:46:53 +02:00

109 lines
2.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: tane
description: "Tanemaki — local-first, encrypted, decentralized traditional-seed inventory."
publish_to: 'none'
version: 0.1.0+1
environment:
sdk: ^3.11.5
resolution: workspace
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
commons_core:
path: ../../packages/commons_core
# State management (Cubit-first). Drift streams are the source of truth.
flutter_bloc: ^9.1.1
equatable: ^2.0.5
# Stream combinators (StreamGroup) for reactive multi-table reads.
async: ^2.11.0
# Encrypted local database. NOTE: do NOT add sqlite3_flutter_libs / drift_flutter
# — their bundled plain SQLite collides (same symbols) with SQLCipher and
# segfaults on desktop. SQLCipher is the only native sqlite provider here.
drift: ^2.28.0
sqlite3: ^2.7.5
sqlcipher_flutter_libs: ^0.6.5
# Dependency injection composition root.
get_it: ^8.0.3
# i18n (Weblate-friendly JSON per locale).
slang: ^4.7.0
slang_flutter: ^4.7.0
# Secure key storage (OS keystore).
flutter_secure_storage: ^9.2.4
# Routing + media + paths.
go_router: ^14.6.2
image_picker: ^1.1.2
# Save/open dialogs for the inventory export/import (MIT license).
file_picker: ^10.1.2
path: ^1.9.0
path_provider: ^2.1.5
cupertino_icons: ^1.0.8
material_symbols_icons: ^4.2951.0
url_launcher: ^6.3.2
package_info_plus: ^9.0.1
dev_dependencies:
flutter_test:
sdk: flutter
integration_test:
sdk: flutter
flutter_lints: ^6.0.0
build_runner: ^2.4.13
drift_dev: ^2.28.0
slang_build_runner: ^4.7.0
mocktail: ^1.0.4
flutter_launcher_icons: ^0.14.4
flutter_native_splash: ^2.4.7
# App launcher icon: a white sprout on brand green (#2F7D34) for strong
# contrast. Regenerate with: dart run flutter_launcher_icons
flutter_launcher_icons:
image_path: assets/icon.png
android: true
ios: true
remove_alpha_ios: true
adaptive_icon_background: "#2F7D34"
adaptive_icon_foreground: assets/icon_foreground.png
web:
generate: true
image_path: assets/icon.png
background_color: "#2F7D34"
theme_color: "#2F7D34"
# Native splash: white sprout on brand green, a darker green in dark mode.
# Regenerate with: dart run flutter_native_splash:create
flutter_native_splash:
color: "#2F7D34"
color_dark: "#22521E"
image: assets/splash_logo.png
android_12:
image: assets/splash_logo.png
color: "#2F7D34"
color_dark: "#22521E"
flutter:
uses-material-design: true
# Seed strings for slang live under lib/i18n (not a Flutter asset; compiled).
assets:
- assets/catalog/species.json
- assets/logo.png
# Bundled so the Linux runner can use it as the GTK window icon.
- assets/icon.png
fonts:
# Custom seed-themed icon glyphs (chars ak). See docs/mockups/seedks-glyphs.png.
- family: seedks
fonts:
- asset: fonts/seedks.ttf