No description
Find a file
Ashley Venn cbdf437a92
Some checks failed
CI / test (macos-latest) (push) Has been cancelled
CI / test (ubuntu-latest) (push) Has been cancelled
CI / test (windows-latest) (push) Has been cancelled
CI / package (macos-latest, macos) (push) Has been cancelled
CI / package (ubuntu-latest, linux) (push) Has been cancelled
CI / package (windows-latest, windows) (push) Has been cancelled
Merge branch 'reorganization-cleanup'
2026-07-16 22:37:50 -07:00
.githooks chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
.github/workflows chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
apps/focus_flow_flutter chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
archives chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
documentation chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
generted_files chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
installer feat(installer): add dynamic local installers 2026-07-16 09:45:54 -07:00
packages chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
scripts chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
.earthlyignore chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
.gitignore chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
AGENTS.md chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
analysis_options.yaml chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
Earthfile chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
Focus Flow Contributors.md refactor: group scheduler core src modules 2026-07-01 13:54:28 -07:00
LICENSE.md Initial commit 2026-06-19 15:30:42 -07:00
pubspec.yaml docs: expand dartdocs and add compliance hooks 2026-07-01 13:36:12 -07:00
README.md chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00
REUSE.toml chore: reorganize workspace and repair project tooling 2026-07-16 22:35:36 -07:00

ADHD Scheduler Workspace

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

Workspace Layout

  • documentation/ contains Codex plans, human-facing product documentation, archived plans, and documentation handoffs.
  • generted_files/ is the single root for project-controlled generated API docs, coverage, release outputs, packaged builds, and test artifacts.
  • archives/ contains manually retained files that are no longer relevant to the active application and is excluded from builds.
  • apps/, packages/, installer/, and scripts/ contain maintained source and validation code. Workspace-level tests live in packages/scheduler_integration_tests/test/.

The generted_files spelling is intentional and is part of the repository path contract. Flutter and Dart may still create toolchain-required .dart_tool/ and app-local build/ caches; those are ignored and are not release outputs.

Local Workflow

Set up the workspace and local SQLite path:

scripts/bootstrap_dev.sh

On Windows, use the PowerShell wrapper:

.\scripts\bootstrap_dev.ps1

Run the local app during development:

scripts/dev.sh

On Windows:

.\scripts\dev.ps1

Run the full local quality gate:

scripts/test.sh

The test gate runs analyzer, tests with coverage, combines LCOV output, and fails below 80% package lib/ coverage. It discovers workspace tests from packages/scheduler_integration_tests/test/.

Build a local desktop bundle with the host toolchain:

scripts/package_release.sh --platform current --artifact local-bundle --output generted_files/build/releases

On Windows:

.\scripts\package_release.ps1 -Platform windows -Artifact local-bundle -Output generted_files\build\releases

Equivalent Dart entry points:

dart run scripts/dev.dart
dart run scripts/build.dart --platform current --artifact local-bundle --output generted_files/build/releases

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. Normal Flutter startup uses that SQLite file for scheduler state rather than inserting seeded demo tasks.

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

For Windows setup and troubleshooting details, see apps/focus_flow_flutter/windows/README.md.

Optional flags:

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

Earthly Workflow

Earthly is the supported containerized build path going forward. It builds a Linux desktop Flutter bundle and exports a runnable application under generted_files/builds/.

Install prerequisites on the host:

  • Earthly
  • Docker or another Earthly-compatible container runtime

Set up the Earthly build image:

earthly +setup

Copy code and resolve Dart/Flutter dependencies inside Earthly:

earthly +code

Run all style and metadata checks:

earthly +lint

Run all Dart and Flutter tests:

earthly +test

Build and package the runnable Linux desktop app:

earthly +build

Run lint, all tests, build, and package in one command:

earthly +all

Smoke-run the Earthly-built Linux desktop app under a virtual display:

earthly +run

Earthly outputs:

generted_files/builds/focus_flow_linux_x64/
generted_files/builds/focus_flow_linux_x64.zip

Useful focused lint targets:

earthly +format
earthly +dart-analyze
earthly +flutter-analyze
earthly +reuse
earthly +docs
earthly +pre-commit

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.

From the repository root, start the desktop UI with the default local SQLite database:

scripts/bootstrap_dev.sh
cd apps/focus_flow_flutter
flutter pub get
flutter run -d linux

Replace linux with macos or windows on those hosts. Use flutter devices to list available device IDs. The desktop runners are committed; do not regenerate them during normal development.

For a disposable dev database, pass an explicit SQLite path:

flutter run -d linux --dart-define=SCHEDULER_SQLITE_PATH=/tmp/focus_flow_dev.sqlite

The default database path is ~/ADHD_Scheduler/scheduler.sqlite. To reset local UI data, close the app and delete the SQLite file you used.

Windows users can use the dedicated PowerShell workflow in apps/focus_flow_flutter/windows/README.md instead of the Bash examples above.

cd apps/focus_flow_flutter
flutter analyze
flutter test

Local Installers

./installer/linux/install.sh
./installer/linux/recompile.sh
./installer/linux/uninstall.sh

macOS and Windows provide matching per-user installer entry points:

./installer/mac/install.sh
./installer/mac/uninstall.sh
.\installer\windows\install.ps1
.\installer\windows\uninstall.ps1

Ordinary uninstall preserves ~/ADHD_Scheduler or %USERPROFILE%\ADHD_Scheduler. Purging that user data requires both explicit purge flags. See installer/README.md for paths, overrides, and dry-run commands.

Build Artifacts

dart run scripts/build.dart --platform current --artifact local-bundle --output generted_files/build/releases

The local-bundle artifact is the supported installer input:

  • macOS: Flutter desktop support and Xcode; produces generted_files/build/releases/macos/FocusFlow.app
  • Windows: Flutter desktop support and Visual Studio Build Tools; produces a release bundle folder under generted_files/build/releases/windows/bundle
  • Linux: Flutter desktop support and Linux desktop build dependencies; produces a raw release bundle under generted_files/build/releases/linux/bundle

Public distribution formats such as MSIX, signed DMG/PKG, AppImage, DEB/RPM, Flatpak, Snap, and app-store packages are deferred until separate packaging and signing work exists.