# Repository Guidelines

## Project Structure & Module Organization

- `lib/` follows Clean Architecture: `core/` (constants, network, services, theme), `data/` (models, datasources, repositories), `domain/` (entities, interfaces), `presentation/` (providers, screens, widgets), `router/` (GoRouter setup).
- Assets live in `assets/images/`, `assets/images/logos/`, and `assets/images/icons/` (declared in `pubspec.yaml`).
- Tests live in `test/` (example: `test/widget_test.dart`).
- Platform code is under `android/` and `ios/`.
- Specs and product notes are in `docs/specs/`.

## Build, Test, and Development Commands

- `flutter run` — run the app on the default device.
- `flutter run -d iphone` — run on a specific device.
- `dart run build_runner build --delete-conflicting-outputs` — regenerate Freezed/JSON/Riverpod code.
- `flutter analyze` — lint and static analysis (uses `flutter_lints`).
- `flutter test` — run the test suite.
- `flutter build apk --debug` / `flutter build ios --debug --no-codesign` — debug builds.

## Coding Style & Naming Conventions

- Dart formatting with 2-space indentation; use `dart format .` when needed.
- File names use `lower_snake_case`; classes and enums use `UpperCamelCase`.
- Follow `analysis_options.yaml` (Flutter lints).
- Patterns to follow: Riverpod 3.x `Notifier`, Freezed 3.x `abstract class`, domain entities extend `Equatable`.

## Testing Guidelines

- Framework: `flutter_test` with `mocktail` for mocking.
- Naming: `*_test.dart` (keep tests in `test/` unless explicitly co-locating).
- Add tests for new screens, providers, and critical business logic.

## Commit & Pull Request Guidelines

- Git history shows no established convention beyond concise subjects. Use short, imperative summaries (e.g., “Add schedule screen”).
- PRs should include a clear description, list testing run (e.g., `flutter test`), and include screenshots for UI changes. Link relevant specs in `docs/specs/` when applicable.

## Configuration & Permissions

- API base URLs live in `lib/core/constants/api_constants.dart` (dev/prod).
- Platform permissions are configured in `ios/Runner/Info.plist` and `android/app/src/main/AndroidManifest.xml` for biometrics and location.
