Skip to content

Commit bd735b9

Browse files
authored
Merge pull request #65 from adeeteya/ai_setup
Ai setup
2 parents 771cf21 + ce20624 commit bd735b9

4 files changed

Lines changed: 146 additions & 26 deletions

File tree

AGENTS.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Repository Guidelines
2+
3+
## Project Structure & Module Organization
4+
- `lib/` holds app code: `core/` for shared services, `features/` for UI flows, `hive/` for adapters, and entry points in `main.dart`, `main_development.dart`, and `classipod_app.dart`.
5+
- Platform scaffolding lives in `android/`, `ios/`, `linux/`, `macos/`, `windows/`, and `web/`; assets and fonts sit in `assets/`; automation scripts live in `fastlane/` and `scripts/`.
6+
- Tests mirror production code under `test/unit_tests/` and `test/widget_tests/`, with reusable fixtures in `test/test_files/` and caches in `test/cache/`.
7+
8+
## Build, Test, and Development Commands
9+
- `flutter pub get --suppress-analytics` refreshes dependencies after any `pubspec.yaml` change.
10+
- `flutter pub run build_runner build --delete-conflicting-outputs` regenerates Hive TypeAdapters before building.
11+
- `flutter gen-l10n` keeps `lib/l10n/` synced with `l10n.yaml`.
12+
- `flutter analyze --suppress-analytics` or `dart run custom_lint` must be clean prior to committing.
13+
- Format with `flutter format --set-exit-if-changed lib/ test/`.
14+
- `flutter test --no-pub --coverage --suppress-analytics` is the required test invocation; upload `coverage/lcov.info` when CI or reviewers ask.
15+
- Release builds are standardized through Fastlane, e.g. `bundle exec fastlane build_flutter_app type:apk` (swap `ipa`, `appbundle`, etc. as needed).
16+
17+
## Coding Style & Naming Conventions
18+
- Respect `analysis_options.yaml`: declare return types, prefer `const`, keep package imports absolute, and stay ≤80 columns.
19+
- Use `snake_case.dart` filenames, `UpperCamelCase` for classes, and suffix Riverpod notifiers/controllers (`PlaybackController`, `LibraryNotifier`) inside `lib/features/`.
20+
- Factor reusable UI into `lib/core/widgets/`, include trailing commas, and avoid relative imports (`../`) entirely.
21+
22+
## Testing Guidelines
23+
- Store pure logic specs in `test/unit_tests/` and widget scenarios in `test/widget_tests/`, mirroring the folder layout under `lib/features/`.
24+
- Name every file `_test.dart`, group cases by behavior (`group('cover_flow', ...)`), and prefer golden tests for UI regressions.
25+
- Maintain coverage by extending suites whenever playback, persistence, or routing code changes; reuse fixtures from `test/test_files/` instead of adding new binaries.
26+
27+
## Commit & Pull Request Guidelines
28+
- Match the existing history with emoji-prefixed, present-tense commits such as `🐛 fix thumbnail path` or `✨ add coverflow filter`, referencing issues (`fixes #51`) when applicable.
29+
- Complete the checklist in `pull_request_template.md`, note platform verification (Android/Windows/Web), and include before/after screenshots for UI work.
30+
- Summarize any Fastlane or build-runner commands you ran so reviewers can reproduce the environment.
31+
32+
## Security & Configuration Tips
33+
- Keep store credentials and service accounts outside the repo; point Fastlane to them via environment variables like `GOOGLE_SERVICE_ACCOUNT_JSON_PATH`.
34+
- When bumping dependencies or assets, cross-check platform builds and update `CHANGELOG.md` alongside the code change.

GEMINI.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# ClassiPod Project Overview
2+
3+
This document provides a comprehensive overview of the ClassiPod project, including its purpose, architecture, and development conventions.
4+
5+
## Project Overview
6+
7+
ClassiPod is a local music player app designed to emulate the nostalgic experience of the iPod Classic. It features a click wheel interface and focuses on providing a simple, distraction-free music listening experience. The app is built with Flutter and supports Android, iOS, Linux, macOS, Windows, and web.
8+
9+
### Key Technologies
10+
11+
* **Framework:** Flutter
12+
* **State Management:** Riverpod
13+
* **Routing:** go_router
14+
* **Audio Playback:** just_audio
15+
* **Database:** Hive
16+
* **Localization:** flutter_localizations, intl
17+
* **CI/CD:** GitHub Actions
18+
19+
## Building and Running
20+
21+
To build and run the project, follow these steps:
22+
23+
1. **Clone the repository:**
24+
```bash
25+
git clone https://github.com/adeeteya/Classipod.git
26+
```
27+
2. **Install dependencies:**
28+
```bash
29+
flutter pub get
30+
```
31+
3. **Run the app in development mode:**
32+
```bash
33+
flutter run --flavor dev --target=lib/main_development.dart
34+
```
35+
36+
### Testing
37+
38+
The project includes unit and widget tests. To run the tests, use the following command:
39+
40+
```bash
41+
flutter test
42+
```
43+
44+
The project also has a GitHub Actions workflow that runs the tests on every pull request.
45+
46+
## Development Conventions
47+
48+
The project follows a strict set of development conventions to ensure code quality and consistency.
49+
50+
### Coding Style
51+
52+
The project uses the linting rules defined in the `analysis_options.yaml` file. These rules enforce a consistent coding style and help to prevent common errors. Some of the key style guidelines include:
53+
54+
* Always declare return types.
55+
* Always use package imports.
56+
* Avoid relative lib imports.
57+
* Use `const` constructors where possible.
58+
* Require trailing commas.
59+
* Sort pub dependencies.
60+
61+
### Contribution Guidelines
62+
63+
The `CONTRIBUTING.md` file provides detailed instructions for contributing to the project. Key guidelines include:
64+
65+
* Discuss changes via an issue before making a pull request.
66+
* Follow the code of conduct.
67+
* Provide clear and detailed bug reports and feature requests.
68+
69+
## Architecture
70+
71+
The project follows a feature-based architecture, with each feature located in its own directory under `lib/features`. The core functionality is located in the `lib/core` directory.
72+
73+
### Routing
74+
75+
The app uses the `go_router` package for routing. The routes are defined in the `lib/core/navigation/routes.dart` file. The `Routes` enum provides a type-safe way to navigate between screens.
76+
77+
### State Management
78+
79+
The app uses the `flutter_riverpod` package for state management. Providers are used to manage the state of the app and to provide dependencies to widgets.
80+
81+
### CI/CD
82+
83+
The project uses GitHub Actions for CI/CD. The `.github/workflows` directory contains two workflows:
84+
85+
* `pr-checker.yaml`: This workflow runs on every pull request and checks for linting errors and runs the tests.
86+
* `build-and-deploy.yaml`: This workflow is triggered manually and can build and deploy the app for Android, Linux, Windows, and the web.

pubspec.lock

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ packages:
2929
dependency: transitive
3030
description:
3131
name: analyzer_plugin
32-
sha256: de43608896f4207d59840cee55c6d39eebacabd599f9f6aaa4850400c72279fe
32+
sha256: "08cfefa90b4f4dd3b447bda831cecf644029f9f8e22820f6ee310213ebe2dd53"
3333
url: "https://pub.dev"
3434
source: hosted
35-
version: "0.13.9"
35+
version: "0.13.10"
3636
archive:
3737
dependency: transitive
3838
description:
@@ -141,18 +141,18 @@ packages:
141141
dependency: transitive
142142
description:
143143
name: build_daemon
144-
sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
144+
sha256: "409002f1adeea601018715d613115cfaf0e31f512cb80ae4534c79867ae2363d"
145145
url: "https://pub.dev"
146146
source: hosted
147-
version: "4.0.4"
147+
version: "4.1.0"
148148
build_runner:
149149
dependency: "direct dev"
150150
description:
151151
name: build_runner
152-
sha256: "4e54dbeefdc70691ba80b3bce3976af63b5425c8c07dface348dfee664a0edc1"
152+
sha256: "8cd45bdd6217138f4cfbaf6286c93f270ae4b3e2e281e69c904bd00cdf8aa626"
153153
url: "https://pub.dev"
154154
source: hosted
155-
version: "2.9.0"
155+
version: "2.10.0"
156156
built_collection:
157157
dependency: transitive
158158
description:
@@ -357,10 +357,10 @@ packages:
357357
dependency: transitive
358358
description:
359359
name: device_info_plus
360-
sha256: "49413c8ca514dea7633e8def233b25efdf83ec8522955cc2c0e3ad802927e7c6"
360+
sha256: dd0e8e02186b2196c7848c9d394a5fd6e5b57a43a546082c5820b1ec72317e33
361361
url: "https://pub.dev"
362362
source: hosted
363-
version: "12.1.0"
363+
version: "12.2.0"
364364
device_info_plus_platform_interface:
365365
dependency: transitive
366366
description:
@@ -506,10 +506,10 @@ packages:
506506
dependency: "direct main"
507507
description:
508508
name: go_router
509-
sha256: e1d7ffb0db475e6e845eb58b44768f50b830e23960e3df6908924acd8f7f70ea
509+
sha256: d8f590a69729f719177ea68eb1e598295e8dbc41bbc247fed78b2c8a25660d7c
510510
url: "https://pub.dev"
511511
source: hosted
512-
version: "16.2.5"
512+
version: "16.3.0"
513513
graphs:
514514
dependency: transitive
515515
description:
@@ -530,10 +530,10 @@ packages:
530530
dependency: "direct main"
531531
description:
532532
name: hive_ce_flutter
533-
sha256: f5bd57fda84402bca7557fedb8c629c96c8ea10fab4a542968d7b60864ca02cc
533+
sha256: "26d656c9e8974f0732f1d09020e2d7b08ba841b8961a02dbfb6caf01474b0e9a"
534534
url: "https://pub.dev"
535535
source: hosted
536-
version: "2.3.2"
536+
version: "2.3.3"
537537
hive_ce_generator:
538538
dependency: "direct dev"
539539
description:
@@ -871,10 +871,10 @@ packages:
871871
dependency: transitive
872872
description:
873873
name: path_provider_foundation
874-
sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd"
874+
sha256: efaec349ddfc181528345c56f8eda9d6cccd71c177511b132c6a0ddaefaa2738
875875
url: "https://pub.dev"
876876
source: hosted
877-
version: "2.4.2"
877+
version: "2.4.3"
878878
path_provider_linux:
879879
dependency: transitive
880880
description:
@@ -1071,10 +1071,10 @@ packages:
10711071
dependency: transitive
10721072
description:
10731073
name: shared_preferences_foundation
1074-
sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03"
1074+
sha256: "1c33a907142607c40a7542768ec9badfd16293bac51da3a4482623d15845f88b"
10751075
url: "https://pub.dev"
10761076
source: hosted
1077-
version: "2.5.4"
1077+
version: "2.5.5"
10781078
shared_preferences_linux:
10791079
dependency: transitive
10801080
description:
@@ -1316,10 +1316,10 @@ packages:
13161316
dependency: "direct main"
13171317
description:
13181318
name: tutorial_coach_mark
1319-
sha256: "99293a61756b31fe89adf416053359c8db02bf9102da018fbd9846b512d394f2"
1319+
sha256: "5a325d53bcf16ce7a969e2ab8d4dc9610f39ee3eab2b3cc57d5c98936129b891"
13201320
url: "https://pub.dev"
13211321
source: hosted
1322-
version: "1.3.2"
1322+
version: "1.3.3"
13231323
typed_data:
13241324
dependency: transitive
13251325
description:
@@ -1388,10 +1388,10 @@ packages:
13881388
dependency: transitive
13891389
description:
13901390
name: url_launcher_ios
1391-
sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7
1391+
sha256: "6b63f1441e4f653ae799166a72b50b1767321ecc263a57aadf825a7a2a5477d9"
13921392
url: "https://pub.dev"
13931393
source: hosted
1394-
version: "6.3.4"
1394+
version: "6.3.5"
13951395
url_launcher_linux:
13961396
dependency: transitive
13971397
description:
@@ -1404,10 +1404,10 @@ packages:
14041404
dependency: transitive
14051405
description:
14061406
name: url_launcher_macos
1407-
sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f
1407+
sha256: "8262208506252a3ed4ff5c0dc1e973d2c0e0ef337d0a074d35634da5d44397c9"
14081408
url: "https://pub.dev"
14091409
source: hosted
1410-
version: "3.2.3"
1410+
version: "3.2.4"
14111411
url_launcher_platform_interface:
14121412
dependency: transitive
14131413
description:

pubspec.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ dependencies:
2525
flutter_localizations:
2626
sdk: flutter
2727
flutter_riverpod: ^3.0.3
28-
go_router: ^16.2.5
28+
go_router: ^16.3.0
2929
hive_ce: ^2.15.0
30-
hive_ce_flutter: ^2.3.2
30+
hive_ce_flutter: ^2.3.3
3131
intl: any
3232
just_audio: ^0.10.5
3333
just_audio_background: ^0.0.1-beta.17
@@ -42,15 +42,15 @@ dependencies:
4242
path_provider: ^2.1.5
4343
permission_handler: ^12.0.1
4444
shared_preferences: ^2.5.3
45-
tutorial_coach_mark: ^1.3.2
45+
tutorial_coach_mark: ^1.3.3
4646
universal_html: ^2.2.4
4747
url_launcher: ^6.3.2
4848
vibration: ^3.1.4
4949
vibration_web: ^1.6.8
5050
volume_controller: ^3.4.0
5151

5252
dev_dependencies:
53-
build_runner: ^2.9.0
53+
build_runner: ^2.10.0
5454
custom_lint: ^0.8.1
5555
flutter_lints: ^6.0.0
5656
flutter_test:

0 commit comments

Comments
 (0)