# ADHD Scheduler Workspace

SQLite-first Dart workspace for the ADHD scheduler backend, persistence
adapters, notifications, exports, backups, integration tests, and CI scripts.

## Test

```sh
scripts/test.sh
```

The test gate runs analyzer, tests with coverage, combines LCOV output, and
fails below 80% package `lib/` coverage.

## Development

```sh
scripts/bootstrap_dev.sh
scripts/dev.sh
```

The shell scripts prepare the default SQLite path and delegate to the Dart
development runner.

```sh
dart run scripts/dev.dart
```

The dev script prints the SQLite path, starts `dart run build_runner watch`, and
launches Flutter desktop with `SCHEDULER_SQLITE_PATH` passed as a dart define.

Prerequisites:

- Dart stable SDK
- Flutter stable SDK with desktop support enabled
- platform desktop toolchain: Xcode for macOS, Visual Studio Build Tools for
  Windows, and Linux desktop build dependencies for Linux

Optional flags:

```sh
dart run scripts/dev.dart --device linux --sqlite /tmp/scheduler.sqlite
```

## Flutter UI

The provisional UI app lives outside the root Dart workspace at
`apps/focus_flow_flutter` so backend package gates can stay Dart-only while the
Flutter foundation settles.

```sh
cd apps/focus_flow_flutter
flutter analyze
flutter test
```

## Packaging

```sh
scripts/package_release.sh --platform current --output build/releases
```

```sh
dart run scripts/build.dart --platform current --output build/releases
```

Packaging prerequisites:

- macOS: Flutter desktop support and Xcode; produces a `.app`
- Windows: Flutter desktop support, Visual Studio Build Tools, and `msix`
  package configuration available to `dart run msix:create`
- Linux: Flutter desktop support plus `appimage-builder` and
  `AppImageBuilder.yml`; produces an AppImage

Tagged CI runs upload release artifacts from `build/releases/`.
