Local-first, decentralized app for traditional seeds
Find a file
vjrj f04dd3da1a
All checks were successful
ci / analyze (push) Successful in 1m5s
ci / test-commons-core (push) Successful in 37s
ci / test-app-seeds (push) Successful in 5m44s
site / deploy (push) Successful in 32s
release / play (push) Successful in 11m49s
release / fdroid_reference_armeabi_v7a (push) Successful in 22m20s
release / fdroid_reference_arm64_v8a (push) Successful in 23m16s
release / fdroid_reference_x86_64 (push) Successful in 22m11s
fix(fdroid): drop Google Play Core so the scanner accepts the APK; prep v0.1.15
F-Droid's APK scanner rejected v0.1.14: 6 com.google.android.play.core.*
(SplitInstall/SplitCompat/tasks) references. They came from Flutter's
io.flutter.embedding.engine.deferredcomponents.PlayStoreDeferredComponentManager
being pinned by our over-broad '-keep class io.flutter.** { *; }' ProGuard
rule — Tane uses no deferred components, so R8 should shrink that manager
away (as it does for immich and other Flutter F-Droid apps, which don't
carry such a keep). Narrow the keep to io.flutter.plugins.**; JNI-critical
embedding classes (FlutterJNI, …) stay via the embedding AAR's own consumer
ProGuard rules — verified the built APK still contains FlutterJNI and no
com.google.android.play.core.* at all. Also exclude the com.google.android.play
group at the dependency level (belt-and-suspenders) + -dontwarn.

Bumps to 0.1.15 (+17); fdroid recipe versionCodes 171/172/173.
2026-07-23 10:47:01 +02:00
.forgejo/workflows ci(release): apksigner --alignment-preserved true (reproducibility, final layer) 2026-07-22 22:57:51 +02:00
.run docs(block1): status marker + IntelliJ run config 2026-07-07 22:14:53 +02:00
apps/app_seeds fix(fdroid): drop Google Play Core so the scanner accepts the APK; prep v0.1.15 2026-07-23 10:47:01 +02:00
docs fix(fdroid): drop Google Play Core so the scanner accepts the APK; prep v0.1.15 2026-07-23 10:47:01 +02:00
fdroid-ci Revert "ci(release): revert to F-Droid-signed recipe; drop pre-merge reference build" 2026-07-20 17:13:46 +02:00
packages/commons_core fix(market): recover by itself when the shared connection comes up 2026-07-22 16:08:34 +02:00
site fix(site): honest decentralization copy — community servers, not 'no server' 2026-07-22 16:08:34 +02:00
.gitignore Update gitignore 2026-07-16 22:21:27 +02:00
analysis_options.yaml feat(block1): inventory walking skeleton + first quick-add slice 2026-07-07 15:16:14 +02:00
CHANGELOG.md feat(android): split release APK per ABI for F-Droid 2026-07-17 17:36:18 +02:00
CLAUDE.md docs(claude): point git note at git.comunes.org origin; note pre-split backup 2026-07-20 23:16:14 +02:00
LICENSE feat(block1): inventory walking skeleton + first quick-add slice 2026-07-07 15:16:14 +02:00
PLAN.md docs: finish Tanemaki → Tane rename (user-facing docs + origin doc) 2026-07-12 13:13:56 +02:00
pubspec.lock feat(app): scan a printed seed label back into its record 2026-07-18 12:26:27 +02:00
pubspec.yaml refactor(branding): rename app Tanemaki → Tane 2026-07-12 13:04:16 +02:00
README.md docs: finish Tanemaki → Tane rename (user-facing docs + origin doc) 2026-07-12 13:13:56 +02:00
seedks.ttf Fix naming (Seedks->Tanemaki) in PLAN; reconcile data-model with core/domain boundary (Plantare->Pledge, Movement->LedgerEntry notes); fix quantity_label type nit; note social layer as one indivisible block in VISION; add seedks.ttf asset 2026-07-07 11:06:38 +02:00
TRANSLATIONS.md docs(i18n): correct site Weblate format to go-i18n-json-v2 2026-07-15 19:46:16 +02:00
VISION.md docs: finish Tanemaki → Tane rename (user-facing docs + origin doc) 2026-07-12 13:13:56 +02:00

Tane 種

A local-first, decentralized app for managing and sharing traditional seeds and seedlings.

Tane (種, "seed" in Japanese) helps people and collectives keep a friendly inventory of their seed bank, decide what they offer, and share it locally — without a central intermediary that could control, censor, or be fined for it. Its name comes from tanemaki (種まき), "to sow / scatter seeds". The goal is both practical and political: to support traditional seed varieties and push back against the seed monopoly.

The name honors the old Japanese mutual-aid traditions around rice — yui (shared community labor) and tanomoshi (reciprocity funds) — that inspired the paper Plantare, the "community currency for seed exchange" (BAH-Semillero, 2009, CC-BY-SA). Tane is the digital Plantare.

Status

Early design. See PLAN.md for the full analysis and roadmap (in Spanish). The valuable prior work lives in docs/mockups/.

Principles

  • Local-first. Works fully offline, no account, no central server. Stays useful even if no one maintains it.
  • Decentralized. Identity is a single key you own (Duniter/Ğ1-style, with a derived subkey for transport); sharing rides on open protocols (Nostr), with optional interoperability with the Ğ1/Duniter web of trust and currency. Never a central marketplace.
  • Free/libre. Copyleft software, open data formats, multilingual from day one.
  • Layered. Inventory -> Offer -> Local sharing -> Web of trust. Each layer is useful on its own.

Conventions

English is the project language for all code. Identifiers, class/field/column names, code comments, commit messages, branch names, and technical documents (data model, schemas) are written in English, without exception. This keeps the project contributable by anyone, anywhere.

  • User-facing strings are never hardcoded — they go through i18n (the app itself is multilingual by design).
  • Planning and discussion documents may be written in Spanish (e.g. PLAN.md, docs/design/data-notes.md); technical specs that feed code are in English (e.g. docs/design/data-model.md).
  • Database schema changes ship as versioned Drift migrations (drift_schemas/), one new version per change, never editing a released version. See docs/design/data-model.md §5.

License

Software: AGPL-3.0 (GPLv3 strengthened with the network clause; compatible with GPLv3 and with Duniter/Ğ1nkgo, which we reuse). Docs & assets under CC-BY-SA where noted.