Files
GroundedHelper/frontend/pubspec.yaml
alvocool 16bff634b5 Initial commit: Grounded Flutter frontend
A to-do app that doesn't believe you — an enforcement layer rather than a
neutral ledger.

Architecture ported from Autoreceptives/Frontend/Receptive: stacked MVVM with
the mandatory 4-file screen pattern, one ParentViewModel owning the loading /
network / error overlays and the handleError decision tree, one AppDataManager
gateway, dio comms carrying the three identity headers, secure storage with
random-suffixed keys, and a single-chokepoint Navigator. Package root and Dart
package name are both Grounded; org is nya.

The enforcement engine, one unit per formula in utils/:

- DebtEngine      w(class) x severity(d) x decay(t), sublinear severity so old
                  misses cannot swamp the score; abandonment 2x with 30-day
                  decay immunity; late complete retains 30%
- StandingEngine  Good -> Warned -> Grounded -> Lockdown, derived not set;
                  Grounded replaces home with the overdue queue
- CapacityEngine  blocks over-scheduling against p50 of historically completed
                  minutes, with a learned per-category estimation multiplier
- IntegrityEngine session integrity, weekly volume, plyometric contact ceiling
                  and enforced recovery gaps
- ExcuseAnalyser  on-device excuse clustering plus the confrontation copy
- GuardrailEngine distress detection and rationed amnesty
- ToneEngine      all enforcement copy, so the tone cap lives in one place

CommitmentEvent is append-only and is the source of truth rather than the
status field, which is what makes honest history and excuse analysis possible.

Goals contain commitments via parentId, and a task can be run from a
full-screen runner that derives elapsed time from wall-clock so screen-off
cannot lose time. Backgrounding pauses the clock and is counted. The runner is
mirrored into an ongoing notification, with alarm-class full-screen intents
reserved for non-negotiables.

Design language, fonts, icon and native splash are in place; Mason bricks are
retargeted to this project and verified end-to-end.

flutter analyze lib/ reports no errors.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mfu2gQLSFN21YRBcU2NrTt
2026-07-27 09:11:17 +03:00

133 lines
4.3 KiB
YAML

name: Grounded
description: Grounded — a to-do app that doesn't believe you.
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ^3.6.2
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
# ── State management (MVVM) ─────────────────────────────────────────────
stacked: ^3.5.0
# ── HTTP / env ──────────────────────────────────────────────────────────
dio: ^5.7.0
flutter_dotenv: ^6.0.1
# ── Secure storage ──────────────────────────────────────────────────────
flutter_secure_storage: ^10.3.1
shared_preferences: ^2.3.2
# ── Navigation ──────────────────────────────────────────────────────────
page_transition: ^2.0.5
# ── Connectivity / device ───────────────────────────────────────────────
connectivity_plus: ^7.1.1
device_info_plus: ^12.4.0
permission_handler: ^12.0.3
path_provider: ^2.0.11
uuid: ^4.5.1
# ── Proof capture (photo / timer / location) ────────────────────────────
camera: ^0.12.0+1
file_picker: ^11.0.2
image: ^4.2.0
geolocator: ^14.0.2
# ── Report card / charts ────────────────────────────────────────────────
fl_chart: ^1.2.0
# ── Notifications ───────────────────────────────────────────────────────
flutter_local_notifications: ^21.0.0
local_notifier: ^0.1.6
# ── UI ──────────────────────────────────────────────────────────────────
flutter_spinkit: ^5.1.0
modal_bottom_sheet: ^3.0.0-pre
smooth_page_indicator: ^2.0.1
group_button: ^5.3.4
pin_code_fields: ^9.3.0
calendar_date_picker2: ^3.0.0
photo_view: ^0.15.0
flutter_animate: ^4.5.0
vibration: ^3.1.2
url_launcher: ^6.1.11
intl: ^0.20.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^6.0.0
flutter_launcher_icons: ^0.14.4
flutter_native_splash: ^2.4.6
flutter:
uses-material-design: true
assets:
- assets/
- assets/icons/
- assets/images/
- .env
# General Sans (Fontshare, FFL) — see fonts/LICENSE-GeneralSans.txt
fonts:
- family: GroundedBold
fonts:
- asset: fonts/bold.ttf
- family: GroundedLight
fonts:
- asset: fonts/light.ttf
- family: GroundedRegular
fonts:
- asset: fonts/regular.ttf
- family: GroundedMedium
fonts:
- asset: fonts/medium.ttf
# ── Launcher icon ─────────────────────────────────────────────────────────────
flutter_launcher_icons:
image_path: "assets/icons/icon.png"
android: "ic_launcher"
adaptive_icon_background: "#141414"
adaptive_icon_foreground: "assets/icons/icon_foreground.png"
min_sdk_android: 21
ios: true
remove_alpha_ios: true
web:
generate: true
background_color: "#141414"
theme_color: "#141414"
windows:
generate: true
icon_size: 256
# ── Native splash ─────────────────────────────────────────────────────────────
# The native splash matches the Flutter splash exactly, so the handover from
# the OS screen to the app is invisible.
flutter_native_splash:
color: "#141414"
image: "assets/icons/splash.png"
android_12:
color: "#141414"
image: "assets/icons/icon_foreground.png"
icon_background_color: "#141414"
android: true
ios: true
web: true