maxsim-flutter 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/scaffold/template-helpers.d.ts.map +1 -1
- package/dist/scaffold/template-helpers.js +4 -0
- package/dist/scaffold/template-helpers.js.map +1 -1
- package/package.json +1 -1
- package/templates/core/README.md.hbs +88 -0
- package/templates/core/lib/core/router/app_router.dart.hbs +13 -0
- package/templates/modules/push/lib/features/push/domain/usecases/handle_notification_usecase.dart.hbs +13 -0
- package/templates/modules/push/lib/features/push/domain/usecases/request_permission_usecase.dart.hbs +12 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-helpers.d.ts","sourceRoot":"","sources":["../../src/scaffold/template-helpers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"template-helpers.d.ts","sourceRoot":"","sources":["../../src/scaffold/template-helpers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,CA4BzE;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,GAAE,MAAM,EAAO,GAC1B,OAAO,CAAC,aAAa,EAAE,CAAC,CA6B1B;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,gBAAgB,EAC1B,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CAoD/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-helpers.js","sourceRoot":"","sources":["../../src/scaffold/template-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;AAK/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAQ1D;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAmB;IACtD,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QACrC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,MAAM,OAAO,GAAoD,EAAE,CAAC;IACpE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,KAAgC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP,IAAI,EAAE,GAAG,CAAC,WAAW;YACrB,GAAG,EAAE,GAAG,CAAC,KAAK;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B;QACD,SAAS;QACT,OAAO;
|
|
1
|
+
{"version":3,"file":"template-helpers.js","sourceRoot":"","sources":["../../src/scaffold/template-helpers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# {{project.name}}
|
|
2
|
+
|
|
3
|
+
{{project.description}}
|
|
4
|
+
|
|
5
|
+
## Getting Started
|
|
6
|
+
|
|
7
|
+
### Prerequisites
|
|
8
|
+
|
|
9
|
+
- Flutter SDK >= 3.24.0
|
|
10
|
+
- Dart SDK >= 3.5.0
|
|
11
|
+
|
|
12
|
+
### Installation
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
flutter pub get
|
|
16
|
+
dart run build_runner build --delete-conflicting-outputs
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Running the App
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
flutter run
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Architecture
|
|
26
|
+
|
|
27
|
+
This project follows Clean Architecture with Riverpod state management and go_router navigation.
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
lib/
|
|
31
|
+
├── core/ # Shared utilities, router, theme
|
|
32
|
+
│ ├── router/ # go_router configuration
|
|
33
|
+
│ ├── theme/ # App theming
|
|
34
|
+
│ └── providers/ # Global providers
|
|
35
|
+
└── features/ # Feature modules
|
|
36
|
+
└── home/ # Home feature (presentation, domain, data)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Enabled Modules
|
|
40
|
+
{{#if modules.auth}}
|
|
41
|
+
- **Authentication** — {{modules.auth.provider}} provider
|
|
42
|
+
{{/if}}
|
|
43
|
+
{{#if modules.api}}
|
|
44
|
+
- **API Client** — HTTP client with interceptors
|
|
45
|
+
{{/if}}
|
|
46
|
+
{{#if modules.database}}
|
|
47
|
+
- **Database** — {{modules.database.engine}} local storage
|
|
48
|
+
{{/if}}
|
|
49
|
+
{{#if modules.push}}
|
|
50
|
+
- **Push Notifications** — {{modules.push.provider}} provider
|
|
51
|
+
{{/if}}
|
|
52
|
+
{{#if modules.analytics}}
|
|
53
|
+
- **Analytics** — Firebase Analytics with route observer
|
|
54
|
+
{{/if}}
|
|
55
|
+
{{#if modules.deepLinking}}
|
|
56
|
+
- **Deep Linking** — Universal links via app_links
|
|
57
|
+
{{/if}}
|
|
58
|
+
{{#if modules.i18n}}
|
|
59
|
+
- **Internationalization** — Multi-locale support
|
|
60
|
+
{{/if}}
|
|
61
|
+
{{#if modules.theme}}
|
|
62
|
+
- **Theming** — Dynamic theme with seed color
|
|
63
|
+
{{/if}}
|
|
64
|
+
{{#if modules.cicd}}
|
|
65
|
+
- **CI/CD** — {{modules.cicd.provider}} pipelines
|
|
66
|
+
{{/if}}
|
|
67
|
+
{{#if claude.agentTeams}}
|
|
68
|
+
|
|
69
|
+
## AI-Assisted Development (Claude Agent Teams)
|
|
70
|
+
|
|
71
|
+
This project includes Claude Code Agent Teams configuration for AI-assisted development.
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 claude
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
See `.claude/` for agent definitions and skills.
|
|
78
|
+
{{/if}}
|
|
79
|
+
|
|
80
|
+
## Testing
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
flutter test
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
*Scaffolded with [maxsim-flutter](https://github.com/maxsim/maxsim-flutter)*
|
|
@@ -2,13 +2,26 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
2
2
|
import 'package:go_router/go_router.dart';
|
|
3
3
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
4
4
|
import '../../features/home/presentation/pages/home_page.dart';
|
|
5
|
+
{{#if modules.analytics}}
|
|
6
|
+
import '../../features/analytics/presentation/providers/analytics_provider.dart';
|
|
7
|
+
{{/if}}
|
|
8
|
+
{{#if modules.deepLinking}}
|
|
9
|
+
import '../../features/deep_linking/presentation/providers/deep_link_provider.dart';
|
|
10
|
+
{{/if}}
|
|
5
11
|
|
|
6
12
|
part 'app_router.g.dart';
|
|
7
13
|
|
|
8
14
|
@riverpod
|
|
9
15
|
GoRouter router(Ref ref) {
|
|
16
|
+
{{#if modules.deepLinking}}
|
|
17
|
+
// Activate deep link handler — listens for incoming links and navigates via go_router
|
|
18
|
+
ref.watch(deepLinkHandlerProvider);
|
|
19
|
+
{{/if}}
|
|
10
20
|
return GoRouter(
|
|
11
21
|
initialLocation: '/',
|
|
22
|
+
{{#if modules.analytics}}
|
|
23
|
+
observers: [ref.watch(analyticsRouteObserverProvider)],
|
|
24
|
+
{{/if}}
|
|
12
25
|
routes: [
|
|
13
26
|
GoRoute(
|
|
14
27
|
path: '/',
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import '../repositories/push_repository.dart';
|
|
2
|
+
|
|
3
|
+
/// Use case for handling incoming push notification messages.
|
|
4
|
+
/// Exposes a stream of foreground [PushMessage]s to presentation layer.
|
|
5
|
+
class HandleNotificationUseCase {
|
|
6
|
+
final PushRepository _repository;
|
|
7
|
+
|
|
8
|
+
const HandleNotificationUseCase(this._repository);
|
|
9
|
+
|
|
10
|
+
Stream<PushMessage> call() {
|
|
11
|
+
return _repository.onMessage;
|
|
12
|
+
}
|
|
13
|
+
}
|
package/templates/modules/push/lib/features/push/domain/usecases/request_permission_usecase.dart.hbs
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import '../repositories/push_repository.dart';
|
|
2
|
+
|
|
3
|
+
/// Use case for requesting push notification permission from the user.
|
|
4
|
+
class RequestPermissionUseCase {
|
|
5
|
+
final PushRepository _repository;
|
|
6
|
+
|
|
7
|
+
const RequestPermissionUseCase(this._repository);
|
|
8
|
+
|
|
9
|
+
Future<bool> call() {
|
|
10
|
+
return _repository.requestPermission();
|
|
11
|
+
}
|
|
12
|
+
}
|