kasy-cli 1.2.1
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/README.md +56 -0
- package/bin/kasy.js +529 -0
- package/docs/cli-reference.md +251 -0
- package/lib/commands/add.js +777 -0
- package/lib/commands/check.js +240 -0
- package/lib/commands/codemagic.js +161 -0
- package/lib/commands/deploy.js +257 -0
- package/lib/commands/docs.js +47 -0
- package/lib/commands/doctor.js +227 -0
- package/lib/commands/features.js +36 -0
- package/lib/commands/ios.js +206 -0
- package/lib/commands/new.js +1870 -0
- package/lib/commands/notifications.js +207 -0
- package/lib/commands/remove.js +466 -0
- package/lib/commands/run.js +75 -0
- package/lib/commands/update.js +382 -0
- package/lib/commands/validate.js +131 -0
- package/lib/scaffold/CHANGELOG.json +6 -0
- package/lib/scaffold/backends/api/.flutter-plugins-dependencies +1 -0
- package/lib/scaffold/backends/api/analysis_options.yaml +5 -0
- package/lib/scaffold/backends/api/generator.js +76 -0
- package/lib/scaffold/backends/api/patch/README.md +85 -0
- package/lib/scaffold/backends/api/patch/android/app/src/main/AndroidManifest.xml +87 -0
- package/lib/scaffold/backends/api/patch/ios/Runner/AppDelegate.swift +61 -0
- package/lib/scaffold/backends/api/patch/lib/core/data/api/meta_ads_api.dart +80 -0
- package/lib/scaffold/backends/api/patch/lib/core/data/api/storage_api.dart +117 -0
- package/lib/scaffold/backends/api/patch/lib/core/data/api/user_api.dart +148 -0
- package/lib/scaffold/backends/api/patch/lib/core/data/entities/json_converters.dart +35 -0
- package/lib/scaffold/backends/api/patch/lib/core/data/entities/user_entity.dart +48 -0
- package/lib/scaffold/backends/api/patch/lib/core/rating/widgets/review_popup.dart +211 -0
- package/lib/scaffold/backends/api/patch/lib/environnements.dart +151 -0
- package/lib/scaffold/backends/api/patch/lib/features/authentication/api/authentication_api.dart +303 -0
- package/lib/scaffold/backends/api/patch/lib/features/authentication/api/authentication_api_interface.dart +80 -0
- package/lib/scaffold/backends/api/patch/lib/features/authentication/repositories/authentication_repository.dart +406 -0
- package/lib/scaffold/backends/api/patch/lib/features/camera/xfile_extension.dart +6 -0
- package/lib/scaffold/backends/api/patch/lib/features/feedbacks/api/entities/feature_request_entity.dart +24 -0
- package/lib/scaffold/backends/api/patch/lib/features/feedbacks/api/entities/feature_vote_entity.dart +21 -0
- package/lib/scaffold/backends/api/patch/lib/features/feedbacks/api/feature_request_api.dart +52 -0
- package/lib/scaffold/backends/api/patch/lib/features/feedbacks/api/feature_vote_api.dart +60 -0
- package/lib/scaffold/backends/api/patch/lib/features/llm_chat/api/llm_chat_api.dart +58 -0
- package/lib/scaffold/backends/api/patch/lib/features/llm_chat/api/llm_chat_message_entity.dart +29 -0
- package/lib/scaffold/backends/api/patch/lib/features/notifications/api/device_api.dart +398 -0
- package/lib/scaffold/backends/api/patch/lib/features/notifications/api/entities/device_entity.dart +39 -0
- package/lib/scaffold/backends/api/patch/lib/features/notifications/api/entities/notifications_entity.dart +23 -0
- package/lib/scaffold/backends/api/patch/lib/features/notifications/api/notifications_api.dart +333 -0
- package/lib/scaffold/backends/api/patch/lib/features/notifications/providers/models/notification.dart +185 -0
- package/lib/scaffold/backends/api/patch/lib/features/onboarding/api/entities/user_info_entity.dart +26 -0
- package/lib/scaffold/backends/api/patch/lib/features/onboarding/api/user_infos_api.dart +107 -0
- package/lib/scaffold/backends/api/patch/lib/features/onboarding/models/user_info.dart +94 -0
- package/lib/scaffold/backends/api/patch/lib/features/onboarding/repositories/user_infos_repository.dart +29 -0
- package/lib/scaffold/backends/api/patch/lib/features/onboarding/ui/animations/movefade_anim.dart +34 -0
- package/lib/scaffold/backends/api/patch/lib/features/onboarding/ui/components/onboarding_att_setup.dart +66 -0
- package/lib/scaffold/backends/api/patch/lib/features/onboarding/ui/components/onboarding_notifications_setup.dart +73 -0
- package/lib/scaffold/backends/api/patch/lib/features/onboarding/ui/widgets/onboarding_radio_question.dart +173 -0
- package/lib/scaffold/backends/api/patch/lib/features/settings/ui/widgets/avatar_utils.dart +33 -0
- package/lib/scaffold/backends/api/patch/lib/features/subscription/api/entities/subscription_entity.dart +34 -0
- package/lib/scaffold/backends/api/patch/lib/features/subscription/api/subscription_api.dart +49 -0
- package/lib/scaffold/backends/api/patch/lib/features/subscription/shared/maybeshow_premium.dart +88 -0
- package/lib/scaffold/backends/api/patch/lib/main.dart +256 -0
- package/lib/scaffold/backends/api/patch/lib/router.dart +133 -0
- package/lib/scaffold/backends/api/pubspec.yaml.tpl +108 -0
- package/lib/scaffold/backends/firebase/deploy.js +1006 -0
- package/lib/scaffold/backends/firebase/generator.js +24 -0
- package/lib/scaffold/backends/firebase/setup-from-scratch.js +1008 -0
- package/lib/scaffold/backends/firebase/tokens.js +113 -0
- package/lib/scaffold/backends/supabase/.flutter-plugins-dependencies +1 -0
- package/lib/scaffold/backends/supabase/analysis_options.yaml +5 -0
- package/lib/scaffold/backends/supabase/config.toml +34 -0
- package/lib/scaffold/backends/supabase/deploy.js +485 -0
- package/lib/scaffold/backends/supabase/edge-functions/delete-user-account/README.md +15 -0
- package/lib/scaffold/backends/supabase/edge-functions/delete-user-account/index.ts +97 -0
- package/lib/scaffold/backends/supabase/edge-functions/llm-chat/index.ts +156 -0
- package/lib/scaffold/backends/supabase/edge-functions/meta-track-event/index.ts +292 -0
- package/lib/scaffold/backends/supabase/edge-functions/revenuecat-webhook/README.md +30 -0
- package/lib/scaffold/backends/supabase/edge-functions/revenuecat-webhook/index.ts +488 -0
- package/lib/scaffold/backends/supabase/edge-functions/send-push-notification/README.md +35 -0
- package/lib/scaffold/backends/supabase/edge-functions/send-push-notification/index.ts +314 -0
- package/lib/scaffold/backends/supabase/generator.js +108 -0
- package/lib/scaffold/backends/supabase/migrations/20240101000001_initial_schema.sql +149 -0
- package/lib/scaffold/backends/supabase/migrations/20240101000002_storage_bucket.sql +40 -0
- package/lib/scaffold/backends/supabase/migrations/20240101000005_vote_triggers.sql +34 -0
- package/lib/scaffold/backends/supabase/migrations/20240101000006_notification_webhook.sql +36 -0
- package/lib/scaffold/backends/supabase/migrations/20240101000007_welcome_notification.sql +64 -0
- package/lib/scaffold/backends/supabase/migrations/20240101000008_user_feature_requests.sql +2 -0
- package/lib/scaffold/backends/supabase/migrations/20240101000009_llm_messages.sql +22 -0
- package/lib/scaffold/backends/supabase/migrations/20240101000010_notification_image.sql +2 -0
- package/lib/scaffold/backends/supabase/patch/README.md +121 -0
- package/lib/scaffold/backends/supabase/patch/android/app/src/main/AndroidManifest.xml +87 -0
- package/lib/scaffold/backends/supabase/patch/ios/Runner/AppDelegate.swift +61 -0
- package/lib/scaffold/backends/supabase/patch/lib/core/data/api/meta_ads_api.dart +75 -0
- package/lib/scaffold/backends/supabase/patch/lib/core/data/api/storage_api.dart +83 -0
- package/lib/scaffold/backends/supabase/patch/lib/core/data/api/user_api.dart +143 -0
- package/lib/scaffold/backends/supabase/patch/lib/core/data/entities/json_converters.dart +35 -0
- package/lib/scaffold/backends/supabase/patch/lib/core/data/entities/user_entity.dart +48 -0
- package/lib/scaffold/backends/supabase/patch/lib/core/rating/widgets/review_popup.dart +211 -0
- package/lib/scaffold/backends/supabase/patch/lib/environnements.dart +149 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/authentication/api/authentication_api.dart +546 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/authentication/repositories/authentication_repository.dart +410 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/camera/xfile_extension.dart +6 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/feedbacks/api/entities/feature_request_entity.dart +25 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/feedbacks/api/entities/feature_vote_entity.dart +21 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/feedbacks/api/feature_request_api.dart +59 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/feedbacks/api/feature_vote_api.dart +85 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/feedbacks/ui/component/add_feature_form.dart +199 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/llm_chat/api/llm_chat_api.dart +47 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/llm_chat/api/llm_chat_message_entity.dart +30 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/llm_chat/providers/llm_chat_notifier.dart +266 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/notifications/api/device_api.dart +410 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/notifications/api/entities/device_entity.dart +51 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/notifications/api/entities/notifications_entity.dart +26 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/notifications/api/notifications_api.dart +317 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/notifications/providers/models/notification.dart +174 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/api/entities/user_info_entity.dart +26 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/api/user_infos_api.dart +90 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/models/user_info.dart +94 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/repositories/user_infos_repository.dart +29 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/ui/animations/movefade_anim.dart +34 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/ui/components/onboarding_att_setup.dart +66 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/ui/components/onboarding_notifications_setup.dart +73 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/ui/widgets/onboarding_radio_question.dart +173 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/settings/ui/widgets/avatar_utils.dart +35 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/subscription/api/entities/subscription_entity.dart +35 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/subscription/api/subscription_api.dart +44 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/subscription/shared/maybeshow_premium.dart +85 -0
- package/lib/scaffold/backends/supabase/patch/lib/google_auth_options.dart +23 -0
- package/lib/scaffold/backends/supabase/patch/lib/main.dart +288 -0
- package/lib/scaffold/backends/supabase/patch/lib/router.dart +133 -0
- package/lib/scaffold/backends/supabase/pubspec.yaml.tpl +110 -0
- package/lib/scaffold/backends/supabase/tokens.js +9 -0
- package/lib/scaffold/catalog.js +177 -0
- package/lib/scaffold/engine.js +230 -0
- package/lib/scaffold/features/README.md +152 -0
- package/lib/scaffold/features/analytics/lib/core/data/api/analytics_api.dart +124 -0
- package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/BUG.es.md +35 -0
- package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/BUG.md +35 -0
- package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/BUG.pt.md +35 -0
- package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/feature_request.es.md +12 -0
- package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/feature_request.md +12 -0
- package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/feature_request.pt.md +12 -0
- package/lib/scaffold/features/ci/.github/PULL_REQUEST_TEMPLATE.es.md +17 -0
- package/lib/scaffold/features/ci/.github/PULL_REQUEST_TEMPLATE.md +17 -0
- package/lib/scaffold/features/ci/.github/PULL_REQUEST_TEMPLATE.pt.md +17 -0
- package/lib/scaffold/features/ci/.github/dependabot.yml +16 -0
- package/lib/scaffold/features/ci/.github/workflows/app.yml +20 -0
- package/lib/scaffold/features/ci/.gitlab/templates/deploy.yaml +14 -0
- package/lib/scaffold/features/ci/.gitlab/templates/dropbox.yaml +19 -0
- package/lib/scaffold/features/ci/.gitlab/templates/flutter.yaml +163 -0
- package/lib/scaffold/features/ci/.gitlab/templates/mailgun.yaml +28 -0
- package/lib/scaffold/features/ci/.gitlab-ci.yml +37 -0
- package/lib/scaffold/features/ci/codemagic.yaml +157 -0
- package/lib/scaffold/features/facebook/lib/core/data/api/tracking_api.dart +111 -0
- package/lib/scaffold/features/feedback/lib/features/feedbacks/api/entities/feature_request_entity.dart +27 -0
- package/lib/scaffold/features/feedback/lib/features/feedbacks/api/entities/feature_vote_entity.dart +27 -0
- package/lib/scaffold/features/feedback/lib/features/feedbacks/api/feature_request_api.dart +50 -0
- package/lib/scaffold/features/feedback/lib/features/feedbacks/api/feature_vote_api.dart +79 -0
- package/lib/scaffold/features/feedback/lib/features/feedbacks/models/feature_requests.dart +48 -0
- package/lib/scaffold/features/feedback/lib/features/feedbacks/models/feedback_state.dart +42 -0
- package/lib/scaffold/features/feedback/lib/features/feedbacks/providers/feedback_page_notifier.dart +147 -0
- package/lib/scaffold/features/feedback/lib/features/feedbacks/repositories/feature_request_repository.dart +95 -0
- package/lib/scaffold/features/feedback/lib/features/feedbacks/ui/component/add_feature_form.dart +199 -0
- package/lib/scaffold/features/feedback/lib/features/feedbacks/ui/feedback_page.dart +175 -0
- package/lib/scaffold/features/feedback/lib/features/feedbacks/ui/widgets/add_feature_button.dart +76 -0
- package/lib/scaffold/features/feedback/lib/features/feedbacks/ui/widgets/feature_card.dart +279 -0
- package/lib/scaffold/features/ios-release/.kasy/apple.env.example +8 -0
- package/lib/scaffold/features/ios-release/.kasy/codemagic.env.example +7 -0
- package/lib/scaffold/features/ios-release/docs/codemagic-release.en.md +50 -0
- package/lib/scaffold/features/ios-release/docs/codemagic-release.es.md +50 -0
- package/lib/scaffold/features/ios-release/docs/codemagic-release.pt.md +50 -0
- package/lib/scaffold/features/ios-release/docs/ios-release.en.md +41 -0
- package/lib/scaffold/features/ios-release/docs/ios-release.es.md +41 -0
- package/lib/scaffold/features/ios-release/docs/ios-release.pt.md +41 -0
- package/lib/scaffold/features/ios-release/scripts/bump-ios-version.js +38 -0
- package/lib/scaffold/features/ios-release/scripts/release-ios.sh +137 -0
- package/lib/scaffold/features/llm_chat/lib/features/llm_chat/llm_chat_page.dart +301 -0
- package/lib/scaffold/features/local_notifications/lib/features/local_reminder/providers/reminder_notifier.dart +81 -0
- package/lib/scaffold/features/local_notifications/lib/features/local_reminder/repositories/reminder_preferences.dart +76 -0
- package/lib/scaffold/features/local_notifications/lib/features/local_reminder/ui/reminder_page.dart +282 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/api/entities/user_info_entity.dart +24 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/api/user_infos_api.dart +71 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/models/user_info.dart +92 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/providers/onboarding_model.dart +15 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/providers/onboarding_provider.dart +78 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/repositories/user_infos_repository.dart +29 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/animations/page_transitions.dart +30 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_att_setup.dart +66 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_features.dart +72 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_loader.dart +92 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_notifications_setup.dart +73 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_questions.dart +89 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/onboarding_page.dart +94 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_background.dart +80 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_feature.dart +139 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_illustration_scaffold.dart +110 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_progress.dart +84 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_radio_question.dart +173 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_reassurance.dart +45 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_sticky_footer.dart +77 -0
- package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/selectable_row_tile.dart +392 -0
- package/lib/scaffold/features/revenuecat/lib/core/data/api/tracking_api.dart +116 -0
- package/lib/scaffold/features/revenuecat/lib/core/data/models/subscription.dart +322 -0
- package/lib/scaffold/features/revenuecat/lib/core/home_widgets/home_widget_background_task.dart +41 -0
- package/lib/scaffold/features/revenuecat/lib/core/states/user_state_notifier.dart +305 -0
- package/lib/scaffold/features/widget/lib/core/home_widgets/home_widget_background_task.dart +41 -0
- package/lib/scaffold/features/widget/lib/core/home_widgets/home_widget_mywidget_service.dart +57 -0
- package/lib/scaffold/features/widget/lib/core/home_widgets/home_widget_service.dart +54 -0
- package/lib/scaffold/features/widget/lib/features/settings/ui/components/admin/admin_home_widgets.dart +32 -0
- package/lib/scaffold/generate.js +370 -0
- package/lib/scaffold/patch.js +395 -0
- package/lib/scaffold/shared/backend-config.js +74 -0
- package/lib/scaffold/shared/fcm-service-account.js +126 -0
- package/lib/scaffold/shared/generator-utils.js +1664 -0
- package/lib/scaffold/shared/post-build.js +809 -0
- package/lib/scaffold/shared/template-strings.js +112 -0
- package/lib/utils/apple-release.js +273 -0
- package/lib/utils/checks.js +319 -0
- package/lib/utils/codemagic-release.js +127 -0
- package/lib/utils/fs.js +122 -0
- package/lib/utils/i18n.js +2123 -0
- package/lib/utils/license-gate.js +72 -0
- package/lib/utils/license.js +64 -0
- package/lib/utils/prompts.js +213 -0
- package/lib/utils/updates.js +97 -0
- package/package.json +55 -0
- package/templates/firebase/.env.example +24 -0
- package/templates/firebase/.firebaserc +5 -0
- package/templates/firebase/.kasy/apple.env.example +8 -0
- package/templates/firebase/.kasy/codemagic.env.example +7 -0
- package/templates/firebase/.metadata +30 -0
- package/templates/firebase/.windsurfrules +95 -0
- package/templates/firebase/Makefile +30 -0
- package/templates/firebase/README.en.md +180 -0
- package/templates/firebase/README.es.md +180 -0
- package/templates/firebase/README.md +180 -0
- package/templates/firebase/analysis_options.yaml +37 -0
- package/templates/firebase/android/app/build.gradle.kts +80 -0
- package/templates/firebase/android/app/src/debug/AndroidManifest.xml +7 -0
- package/templates/firebase/android/app/src/main/AndroidManifest.xml +93 -0
- package/templates/firebase/android/app/src/main/kotlin/com/aicrus/firebase/kit/MainActivity.kt +36 -0
- package/templates/firebase/android/app/src/main/kotlin/com/aicrus/firebase/kit/MyWidget.kt +50 -0
- package/templates/firebase/android/app/src/main/kotlin/com/aicrus/firebase/kit/MyWidgetReceiver.kt +7 -0
- package/templates/firebase/android/app/src/main/res/drawable/background.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable/launch_background.xml +9 -0
- package/templates/firebase/android/app/src/main/res/drawable-hdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-mdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-v21/background.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-v21/launch_background.xml +9 -0
- package/templates/firebase/android/app/src/main/res/drawable-xhdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-xxhdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-xxxhdpi/splash.png +0 -0
- package/templates/firebase/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/templates/firebase/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/templates/firebase/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/templates/firebase/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/templates/firebase/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/templates/firebase/android/app/src/main/res/values/strings.xml +6 -0
- package/templates/firebase/android/app/src/main/res/values/styles.xml +22 -0
- package/templates/firebase/android/app/src/main/res/values-night/styles.xml +22 -0
- package/templates/firebase/android/app/src/main/res/values-night-v31/styles.xml +20 -0
- package/templates/firebase/android/app/src/main/res/values-v31/styles.xml +20 -0
- package/templates/firebase/android/app/src/main/res/xml/locales_config.xml +7 -0
- package/templates/firebase/android/app/src/main/res/xml/mywidget_info.xml +11 -0
- package/templates/firebase/android/app/src/profile/AndroidManifest.xml +7 -0
- package/templates/firebase/android/build.gradle.kts +28 -0
- package/templates/firebase/android/gradle/wrapper/gradle-wrapper.properties +5 -0
- package/templates/firebase/android/gradle.properties +2 -0
- package/templates/firebase/android/settings.gradle.kts +29 -0
- package/templates/firebase/assets/icons/apple.png +0 -0
- package/templates/firebase/assets/icons/facebook.png +0 -0
- package/templates/firebase/assets/icons/google.png +0 -0
- package/templates/firebase/assets/icons/google_play_games.png +0 -0
- package/templates/firebase/assets/images/app_icon.png +0 -0
- package/templates/firebase/assets/images/empty_notifications.jpg +0 -0
- package/templates/firebase/assets/images/icon.png +0 -0
- package/templates/firebase/assets/images/onboarding/authentication-login-template.jpg +0 -0
- package/templates/firebase/assets/images/onboarding/img1.jpg +0 -0
- package/templates/firebase/assets/images/onboarding/img2.jpg +0 -0
- package/templates/firebase/assets/images/onboarding/img3.jpg +0 -0
- package/templates/firebase/assets/images/onboarding/notifications.png +0 -0
- package/templates/firebase/assets/images/onboarding/onboarding.png +0 -0
- package/templates/firebase/assets/images/onboarding/purchase.png +0 -0
- package/templates/firebase/assets/images/premium-bg.jpg +0 -0
- package/templates/firebase/assets/images/premium-switch-header.png +0 -0
- package/templates/firebase/assets/images/review.png +0 -0
- package/templates/firebase/assets/images/splashscreen.png +0 -0
- package/templates/firebase/assets/images/update.png +0 -0
- package/templates/firebase/build.yaml +13 -0
- package/templates/firebase/devtools_options.yaml +3 -0
- package/templates/firebase/docs/auth-setup.en.md +145 -0
- package/templates/firebase/docs/auth-setup.es.md +145 -0
- package/templates/firebase/docs/auth-setup.pt.md +145 -0
- package/templates/firebase/docs/codemagic-release.en.md +50 -0
- package/templates/firebase/docs/codemagic-release.es.md +50 -0
- package/templates/firebase/docs/codemagic-release.pt.md +50 -0
- package/templates/firebase/docs/ios-release.en.md +41 -0
- package/templates/firebase/docs/ios-release.es.md +41 -0
- package/templates/firebase/docs/ios-release.pt.md +54 -0
- package/templates/firebase/docs/navigation-transitions.md +80 -0
- package/templates/firebase/docs/revenuecat-setup.es.md +341 -0
- package/templates/firebase/docs/revenuecat-setup.pt.md +341 -0
- package/templates/firebase/firebase.json +1 -0
- package/templates/firebase/firestore.indexes.json +25 -0
- package/templates/firebase/firestore.rules +51 -0
- package/templates/firebase/functions/.eslintrc.js +45 -0
- package/templates/firebase/functions/jest.config.js +16 -0
- package/templates/firebase/functions/package-lock.json +6876 -0
- package/templates/firebase/functions/package.json +33 -0
- package/templates/firebase/functions/src/authentication/functions.ts +30 -0
- package/templates/firebase/functions/src/authentication/triggers.ts +103 -0
- package/templates/firebase/functions/src/core/api/meta_ads_api.ts +390 -0
- package/templates/firebase/functions/src/core/data/entities/entity_utils.ts +87 -0
- package/templates/firebase/functions/src/core/data/entities/notification_entity.ts +74 -0
- package/templates/firebase/functions/src/core/data/entities/page.ts +4 -0
- package/templates/firebase/functions/src/core/data/entities/subscription_entity.ts +76 -0
- package/templates/firebase/functions/src/core/data/entities/user_device_entity.ts +64 -0
- package/templates/firebase/functions/src/core/data/entities/user_entity.ts +43 -0
- package/templates/firebase/functions/src/core/data/repositories/repositories.ts +16 -0
- package/templates/firebase/functions/src/core/data/repositories/subscription_repository.ts +42 -0
- package/templates/firebase/functions/src/core/data/repositories/user_device_repository.ts +31 -0
- package/templates/firebase/functions/src/core/data/repositories/user_notifications_repository.ts +58 -0
- package/templates/firebase/functions/src/core/data/repositories/user_repository.ts +84 -0
- package/templates/firebase/functions/src/core/logger/logger.ts +13 -0
- package/templates/firebase/functions/src/core/storage/storage_manager.ts +52 -0
- package/templates/firebase/functions/src/core/utils/async_utils.ts +5 -0
- package/templates/firebase/functions/src/feature_requests/triggers.ts +3 -0
- package/templates/firebase/functions/src/index.ts +24 -0
- package/templates/firebase/functions/src/llm_chat/index.ts +181 -0
- package/templates/firebase/functions/src/notifications/admin_functions.ts +91 -0
- package/templates/firebase/functions/src/notifications/models/notification.ts +61 -0
- package/templates/firebase/functions/src/notifications/notifications_api.ts +147 -0
- package/templates/firebase/functions/src/notifications/triggers.ts +102 -0
- package/templates/firebase/functions/src/subscriptions/models/revenuecat_events.ts +162 -0
- package/templates/firebase/functions/src/subscriptions/models/subscription_status.ts +18 -0
- package/templates/firebase/functions/src/subscriptions/models/subscriptions.ts +173 -0
- package/templates/firebase/functions/src/subscriptions/subscriptions_functions.ts +135 -0
- package/templates/firebase/functions/src/subscriptions/triggers.ts +35 -0
- package/templates/firebase/functions/src/test/core/data/entities/entity_utils.spec.ts +44 -0
- package/templates/firebase/functions/tsconfig.dev.json +5 -0
- package/templates/firebase/functions/tsconfig.json +18 -0
- package/templates/firebase/home_widget_config.json +30 -0
- package/templates/firebase/ios/Flutter/AppFrameworkInfo.plist +24 -0
- package/templates/firebase/ios/Flutter/Debug.xcconfig +2 -0
- package/templates/firebase/ios/Flutter/Profile.xcconfig +2 -0
- package/templates/firebase/ios/Flutter/Release.xcconfig +2 -0
- package/templates/firebase/ios/HomeWidgetExtension/HomeWidgetBundle.swift +13 -0
- package/templates/firebase/ios/HomeWidgetExtension/Info.plist +29 -0
- package/templates/firebase/ios/HomeWidgetExtension/MyWidget.swift +86 -0
- package/templates/firebase/ios/HomeWidgetExtension.entitlements +10 -0
- package/templates/firebase/ios/NotificationService/Info.plist +31 -0
- package/templates/firebase/ios/NotificationService/NotificationService.swift +76 -0
- package/templates/firebase/ios/Podfile +111 -0
- package/templates/firebase/ios/Runner/AppDelegate.swift +75 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +1 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json +21 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +23 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +5 -0
- package/templates/firebase/ios/Runner/Base.lproj/LaunchScreen.storyboard +44 -0
- package/templates/firebase/ios/Runner/Base.lproj/Main.storyboard +26 -0
- package/templates/firebase/ios/Runner/Info.plist +132 -0
- package/templates/firebase/ios/Runner/Runner-Bridging-Header.h +1 -0
- package/templates/firebase/ios/Runner/Runner.entitlements +14 -0
- package/templates/firebase/ios/Runner/es.lproj/InfoPlist.strings +10 -0
- package/templates/firebase/ios/Runner/pt-BR.lproj/InfoPlist.strings +10 -0
- package/templates/firebase/ios/Runner/pt.lproj/InfoPlist.strings +10 -0
- package/templates/firebase/ios/Runner.xcodeproj/project.pbxproj +1108 -0
- package/templates/firebase/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/templates/firebase/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/templates/firebase/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
- package/templates/firebase/ios/Runner.xcodeproj/xcshareddata/xcschemes/NotificationService.xcscheme +58 -0
- package/templates/firebase/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +101 -0
- package/templates/firebase/ios/Runner.xcworkspace/contents.xcworkspacedata +10 -0
- package/templates/firebase/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/templates/firebase/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
- package/templates/firebase/ios/RunnerTests/RunnerTests.swift +12 -0
- package/templates/firebase/lib/components/components.dart +27 -0
- package/templates/firebase/lib/components/kasy_accordion.dart +384 -0
- package/templates/firebase/lib/components/kasy_alert.dart +266 -0
- package/templates/firebase/lib/components/kasy_app_bar.dart +536 -0
- package/templates/firebase/lib/components/kasy_avatar.dart +549 -0
- package/templates/firebase/lib/components/kasy_avatar_presets.dart +104 -0
- package/templates/firebase/lib/components/kasy_badge.dart +278 -0
- package/templates/firebase/lib/components/kasy_bottom_sheet.dart +338 -0
- package/templates/firebase/lib/components/kasy_button.dart +926 -0
- package/templates/firebase/lib/components/kasy_card.dart +128 -0
- package/templates/firebase/lib/components/kasy_checkbox.dart +429 -0
- package/templates/firebase/lib/components/kasy_chip.dart +83 -0
- package/templates/firebase/lib/components/kasy_dialog.dart +789 -0
- package/templates/firebase/lib/components/kasy_otp_verification_bottom_sheet.dart +233 -0
- package/templates/firebase/lib/components/kasy_skeleton.dart +225 -0
- package/templates/firebase/lib/components/kasy_text_area.dart +392 -0
- package/templates/firebase/lib/components/kasy_text_field.dart +591 -0
- package/templates/firebase/lib/components/kasy_text_field_otp.dart +532 -0
- package/templates/firebase/lib/components/kasy_toast.dart +803 -0
- package/templates/firebase/lib/core/ads/ads_provider.dart +136 -0
- package/templates/firebase/lib/core/ads/ads_state.dart +15 -0
- package/templates/firebase/lib/core/animations/bottomfade_anim.dart +37 -0
- package/templates/firebase/lib/core/animations/movefade_anim.dart +34 -0
- package/templates/firebase/lib/core/animations/slideright_anim.dart +38 -0
- package/templates/firebase/lib/core/bottom_menu/bart_inner_paths.dart +5 -0
- package/templates/firebase/lib/core/bottom_menu/bottom_menu.dart +127 -0
- package/templates/firebase/lib/core/bottom_menu/bottom_router.dart +281 -0
- package/templates/firebase/lib/core/bottom_menu/kasy_bart_navigation.dart +22 -0
- package/templates/firebase/lib/core/bottom_menu/kasy_bottom_bar_factory.dart +127 -0
- package/templates/firebase/lib/core/bottom_menu/notification_bottom_item.dart +48 -0
- package/templates/firebase/lib/core/config/app_env.dart +100 -0
- package/templates/firebase/lib/core/config/features.dart +15 -0
- package/templates/firebase/lib/core/data/api/analytics_api.dart +124 -0
- package/templates/firebase/lib/core/data/api/base_api_exceptions.dart +28 -0
- package/templates/firebase/lib/core/data/api/firestore_retry.dart +29 -0
- package/templates/firebase/lib/core/data/api/http_client.dart +38 -0
- package/templates/firebase/lib/core/data/api/image.dart +52 -0
- package/templates/firebase/lib/core/data/api/remote_config_api.dart +170 -0
- package/templates/firebase/lib/core/data/api/storage_api.dart +115 -0
- package/templates/firebase/lib/core/data/api/tracking_api.dart +119 -0
- package/templates/firebase/lib/core/data/api/user_api.dart +115 -0
- package/templates/firebase/lib/core/data/entities/json_converters.dart +39 -0
- package/templates/firebase/lib/core/data/entities/upload_result.dart +48 -0
- package/templates/firebase/lib/core/data/entities/user_entity.dart +54 -0
- package/templates/firebase/lib/core/data/models/pageable.dart +12 -0
- package/templates/firebase/lib/core/data/models/subscription.dart +322 -0
- package/templates/firebase/lib/core/data/models/user.dart +107 -0
- package/templates/firebase/lib/core/data/repositories/user_repository.dart +130 -0
- package/templates/firebase/lib/core/dev_inspector/dev_inspector.dart +464 -0
- package/templates/firebase/lib/core/dev_inspector/dev_inspector_highlight.dart +88 -0
- package/templates/firebase/lib/core/dev_inspector/dev_inspector_info.dart +70 -0
- package/templates/firebase/lib/core/dev_inspector/dev_inspector_panel.dart +204 -0
- package/templates/firebase/lib/core/dev_inspector/dev_inspector_service.dart +321 -0
- package/templates/firebase/lib/core/extensions/date.ext.dart +32 -0
- package/templates/firebase/lib/core/guards/authenticated_guard.dart +37 -0
- package/templates/firebase/lib/core/guards/guard.dart +68 -0
- package/templates/firebase/lib/core/guards/user_info_guard.dart +55 -0
- package/templates/firebase/lib/core/haptics/haptic_feedback_notifier.dart +19 -0
- package/templates/firebase/lib/core/haptics/kasy_haptics.dart +27 -0
- package/templates/firebase/lib/core/home_widgets/home_widget_background_task.dart +41 -0
- package/templates/firebase/lib/core/home_widgets/home_widget_mywidget_service.dart +57 -0
- package/templates/firebase/lib/core/home_widgets/home_widget_service.dart +54 -0
- package/templates/firebase/lib/core/icons/kasy_icons.dart +86 -0
- package/templates/firebase/lib/core/initializer/models/run_state.dart +14 -0
- package/templates/firebase/lib/core/initializer/onstart_service.dart +38 -0
- package/templates/firebase/lib/core/initializer/onstart_widget.dart +83 -0
- package/templates/firebase/lib/core/initializer/pending_notification_handler.dart +48 -0
- package/templates/firebase/lib/core/keyboard_fix/keyboard_flicker_fix.dart +164 -0
- package/templates/firebase/lib/core/navigation/kasy_fade_page_transitions_builder.dart +34 -0
- package/templates/firebase/lib/core/navigation/kasy_material_page_route.dart +41 -0
- package/templates/firebase/lib/core/navigation/kasy_navigation_config.dart +29 -0
- package/templates/firebase/lib/core/navigation/kasy_page_transition.dart +40 -0
- package/templates/firebase/lib/core/navigation/kasy_route_transition.dart +68 -0
- package/templates/firebase/lib/core/navigation/kasy_transition_kind.dart +17 -0
- package/templates/firebase/lib/core/navigation/navigation.dart +6 -0
- package/templates/firebase/lib/core/rating/api/rating_api.dart +99 -0
- package/templates/firebase/lib/core/rating/models/rating.dart +52 -0
- package/templates/firebase/lib/core/rating/models/review.dart +70 -0
- package/templates/firebase/lib/core/rating/providers/rating_repository.dart +75 -0
- package/templates/firebase/lib/core/rating/widgets/rate_banner.dart +190 -0
- package/templates/firebase/lib/core/rating/widgets/rate_popup.dart +54 -0
- package/templates/firebase/lib/core/rating/widgets/review_popup.dart +175 -0
- package/templates/firebase/lib/core/security/biometric_copy_slot.dart +20 -0
- package/templates/firebase/lib/core/security/biometric_guard.dart +114 -0
- package/templates/firebase/lib/core/security/biometric_preference_notifier.dart +17 -0
- package/templates/firebase/lib/core/security/biometric_service.dart +79 -0
- package/templates/firebase/lib/core/security/biometric_ui_bundle.dart +136 -0
- package/templates/firebase/lib/core/security/secured_storage.dart +46 -0
- package/templates/firebase/lib/core/shared_preferences/shared_preferences.dart +70 -0
- package/templates/firebase/lib/core/sidebar/kasy_sidebar.dart +2021 -0
- package/templates/firebase/lib/core/states/components/maybe_ask_biometric_setup.dart +88 -0
- package/templates/firebase/lib/core/states/components/maybe_ask_rating.dart +49 -0
- package/templates/firebase/lib/core/states/components/maybe_show_update_bottom_sheet.dart +86 -0
- package/templates/firebase/lib/core/states/components/maybeshow_component.dart +110 -0
- package/templates/firebase/lib/core/states/events_dispatcher.dart +103 -0
- package/templates/firebase/lib/core/states/models/event_model.dart +118 -0
- package/templates/firebase/lib/core/states/models/user_state.dart +22 -0
- package/templates/firebase/lib/core/states/notifications_dispatcher.dart +81 -0
- package/templates/firebase/lib/core/states/translations.dart +11 -0
- package/templates/firebase/lib/core/states/user_state_notifier.dart +321 -0
- package/templates/firebase/lib/core/theme/colors.dart +262 -0
- package/templates/firebase/lib/core/theme/extensions/theme_extension.dart +48 -0
- package/templates/firebase/lib/core/theme/providers/kasy_theme.dart +76 -0
- package/templates/firebase/lib/core/theme/providers/theme_provider.dart +212 -0
- package/templates/firebase/lib/core/theme/radius.dart +33 -0
- package/templates/firebase/lib/core/theme/shadows.dart +64 -0
- package/templates/firebase/lib/core/theme/spacing.dart +44 -0
- package/templates/firebase/lib/core/theme/texts.dart +176 -0
- package/templates/firebase/lib/core/theme/theme.dart +24 -0
- package/templates/firebase/lib/core/theme/theme_data/theme_data.dart +32 -0
- package/templates/firebase/lib/core/theme/theme_data/theme_data_factory.dart +15 -0
- package/templates/firebase/lib/core/theme/universal_theme.dart +210 -0
- package/templates/firebase/lib/core/toast/toast_service.dart +55 -0
- package/templates/firebase/lib/core/ui/app_dialog.dart +26 -0
- package/templates/firebase/lib/core/web_device_preview/web_device_preview.dart +1126 -0
- package/templates/firebase/lib/core/widgets/debouncer.dart +31 -0
- package/templates/firebase/lib/core/widgets/kasy_hover.dart +166 -0
- package/templates/firebase/lib/core/widgets/kasy_pressable.dart +2 -0
- package/templates/firebase/lib/core/widgets/kasy_pressable_depth.dart +161 -0
- package/templates/firebase/lib/core/widgets/kasy_scroll_behavior.dart +17 -0
- package/templates/firebase/lib/core/widgets/keyboard_visibility.dart +75 -0
- package/templates/firebase/lib/core/widgets/page_background.dart +71 -0
- package/templates/firebase/lib/core/widgets/page_not_found.dart +15 -0
- package/templates/firebase/lib/core/widgets/responsive_layout.dart +215 -0
- package/templates/firebase/lib/core/widgets/update_bottom_sheet.dart +192 -0
- package/templates/firebase/lib/environnements.dart +160 -0
- package/templates/firebase/lib/features/authentication/api/authentication_api.dart +528 -0
- package/templates/firebase/lib/features/authentication/api/authentication_api_interface.dart +84 -0
- package/templates/firebase/lib/features/authentication/providers/models/email.dart +36 -0
- package/templates/firebase/lib/features/authentication/providers/models/password.dart +37 -0
- package/templates/firebase/lib/features/authentication/providers/models/phone_signin_state.dart +21 -0
- package/templates/firebase/lib/features/authentication/providers/models/recover_state.dart +21 -0
- package/templates/firebase/lib/features/authentication/providers/models/signin_state.dart +20 -0
- package/templates/firebase/lib/features/authentication/providers/models/signup_state.dart +20 -0
- package/templates/firebase/lib/features/authentication/providers/phone_auth_notifier.dart +132 -0
- package/templates/firebase/lib/features/authentication/providers/recover_provider.dart +51 -0
- package/templates/firebase/lib/features/authentication/providers/signin_state_provider.dart +166 -0
- package/templates/firebase/lib/features/authentication/providers/signup_state_provider.dart +67 -0
- package/templates/firebase/lib/features/authentication/repositories/authentication_repository.dart +399 -0
- package/templates/firebase/lib/features/authentication/repositories/exceptions/authentication_exceptions.dart +85 -0
- package/templates/firebase/lib/features/authentication/ui/components/apple_signin.dart +19 -0
- package/templates/firebase/lib/features/authentication/ui/components/facebook_signin.dart +19 -0
- package/templates/firebase/lib/features/authentication/ui/components/google_signin.dart +32 -0
- package/templates/firebase/lib/features/authentication/ui/components/otp_verification.dart +100 -0
- package/templates/firebase/lib/features/authentication/ui/components/phone_input.dart +109 -0
- package/templates/firebase/lib/features/authentication/ui/phone_auth_page.dart +60 -0
- package/templates/firebase/lib/features/authentication/ui/recover_password_page.dart +101 -0
- package/templates/firebase/lib/features/authentication/ui/signin_page.dart +321 -0
- package/templates/firebase/lib/features/authentication/ui/signup_page.dart +310 -0
- package/templates/firebase/lib/features/authentication/ui/widgets/auth_brand.dart +35 -0
- package/templates/firebase/lib/features/authentication/ui/widgets/auth_page_back_button.dart +149 -0
- package/templates/firebase/lib/features/authentication/ui/widgets/otp_input.dart +194 -0
- package/templates/firebase/lib/features/authentication/ui/widgets/recover_password_result.dart +62 -0
- package/templates/firebase/lib/features/authentication/ui/widgets/round_signin.dart +73 -0
- package/templates/firebase/lib/features/authentication/ui/widgets/social_separator.dart +26 -0
- package/templates/firebase/lib/features/dev/keyboard_test_page.dart +93 -0
- package/templates/firebase/lib/features/feedbacks/api/entities/feature_request_entity.dart +27 -0
- package/templates/firebase/lib/features/feedbacks/api/entities/feature_vote_entity.dart +27 -0
- package/templates/firebase/lib/features/feedbacks/api/feature_request_api.dart +51 -0
- package/templates/firebase/lib/features/feedbacks/api/feature_vote_api.dart +79 -0
- package/templates/firebase/lib/features/feedbacks/models/feature_requests.dart +48 -0
- package/templates/firebase/lib/features/feedbacks/models/feedback_state.dart +43 -0
- package/templates/firebase/lib/features/feedbacks/providers/feedback_page_notifier.dart +147 -0
- package/templates/firebase/lib/features/feedbacks/repositories/feature_request_repository.dart +92 -0
- package/templates/firebase/lib/features/feedbacks/ui/component/add_feature_form.dart +112 -0
- package/templates/firebase/lib/features/feedbacks/ui/feedback_page.dart +184 -0
- package/templates/firebase/lib/features/feedbacks/ui/widgets/add_feature_button.dart +66 -0
- package/templates/firebase/lib/features/feedbacks/ui/widgets/feature_card.dart +266 -0
- package/templates/firebase/lib/features/home/design_system_page.dart +552 -0
- package/templates/firebase/lib/features/home/home_components_page.dart +314 -0
- package/templates/firebase/lib/features/home/home_components_preview_page.dart +791 -0
- package/templates/firebase/lib/features/home/home_components_preview_registry.dart +7712 -0
- package/templates/firebase/lib/features/home/home_features_page.dart +207 -0
- package/templates/firebase/lib/features/home/home_page.dart +348 -0
- package/templates/firebase/lib/features/llm_chat/api/llm_chat_api.dart +50 -0
- package/templates/firebase/lib/features/llm_chat/api/llm_chat_message_entity.dart +35 -0
- package/templates/firebase/lib/features/llm_chat/llm_chat_page.dart +352 -0
- package/templates/firebase/lib/features/llm_chat/providers/llm_chat_notifier.dart +315 -0
- package/templates/firebase/lib/features/llm_chat/ui/widgets/llm_chat_avatars.dart +148 -0
- package/templates/firebase/lib/features/llm_chat/ui/widgets/llm_chat_composer.dart +124 -0
- package/templates/firebase/lib/features/local_reminder/providers/reminder_notifier.dart +81 -0
- package/templates/firebase/lib/features/local_reminder/repositories/reminder_preferences.dart +76 -0
- package/templates/firebase/lib/features/local_reminder/ui/reminder_page.dart +288 -0
- package/templates/firebase/lib/features/notifications/api/device_api.dart +433 -0
- package/templates/firebase/lib/features/notifications/api/entities/device_entity.dart +62 -0
- package/templates/firebase/lib/features/notifications/api/entities/notifications_entity.dart +35 -0
- package/templates/firebase/lib/features/notifications/api/local_notifier.dart +409 -0
- package/templates/firebase/lib/features/notifications/api/notifications_api.dart +319 -0
- package/templates/firebase/lib/features/notifications/providers/models/device.dart +27 -0
- package/templates/firebase/lib/features/notifications/providers/models/notification.dart +196 -0
- package/templates/firebase/lib/features/notifications/providers/models/notification_list.dart +38 -0
- package/templates/firebase/lib/features/notifications/providers/notifications_provider.dart +120 -0
- package/templates/firebase/lib/features/notifications/repositories/background_notification_handler.dart +13 -0
- package/templates/firebase/lib/features/notifications/repositories/device_repository.dart +137 -0
- package/templates/firebase/lib/features/notifications/repositories/notifications_repository.dart +214 -0
- package/templates/firebase/lib/features/notifications/shared/att_permission.dart +75 -0
- package/templates/firebase/lib/features/notifications/shared/notification_permission_bottom_sheet.dart +144 -0
- package/templates/firebase/lib/features/notifications/ui/components/notification_settings_sheet.dart +169 -0
- package/templates/firebase/lib/features/notifications/ui/components/notification_tile.dart +46 -0
- package/templates/firebase/lib/features/notifications/ui/components/notifications_header.dart +32 -0
- package/templates/firebase/lib/features/notifications/ui/components/push_notification_switcher.dart +106 -0
- package/templates/firebase/lib/features/notifications/ui/notifications_page.dart +202 -0
- package/templates/firebase/lib/features/notifications/ui/request_notification_permission.dart +84 -0
- package/templates/firebase/lib/features/notifications/ui/widgets/empty_notifications.dart +73 -0
- package/templates/firebase/lib/features/notifications/ui/widgets/notification_tile.dart +362 -0
- package/templates/firebase/lib/features/onboarding/api/entities/user_info_entity.dart +24 -0
- package/templates/firebase/lib/features/onboarding/api/user_infos_api.dart +71 -0
- package/templates/firebase/lib/features/onboarding/models/user_info.dart +92 -0
- package/templates/firebase/lib/features/onboarding/providers/onboarding_model.dart +15 -0
- package/templates/firebase/lib/features/onboarding/providers/onboarding_provider.dart +78 -0
- package/templates/firebase/lib/features/onboarding/repositories/user_infos_repository.dart +29 -0
- package/templates/firebase/lib/features/onboarding/ui/animations/page_transitions.dart +33 -0
- package/templates/firebase/lib/features/onboarding/ui/components/onboarding_att_setup.dart +66 -0
- package/templates/firebase/lib/features/onboarding/ui/components/onboarding_features.dart +76 -0
- package/templates/firebase/lib/features/onboarding/ui/components/onboarding_loader.dart +92 -0
- package/templates/firebase/lib/features/onboarding/ui/components/onboarding_notifications_setup.dart +76 -0
- package/templates/firebase/lib/features/onboarding/ui/components/onboarding_questions.dart +89 -0
- package/templates/firebase/lib/features/onboarding/ui/onboarding_page.dart +108 -0
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_background.dart +80 -0
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_feature.dart +145 -0
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_illustration_scaffold.dart +125 -0
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_progress.dart +84 -0
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_radio_question.dart +173 -0
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_reassurance.dart +44 -0
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_sticky_footer.dart +77 -0
- package/templates/firebase/lib/features/onboarding/ui/widgets/selectable_row_tile.dart +392 -0
- package/templates/firebase/lib/features/settings/settings_page.dart +460 -0
- package/templates/firebase/lib/features/settings/ui/components/admin/admin_bottom_sheet.dart +301 -0
- package/templates/firebase/lib/features/settings/ui/components/admin/admin_home_widgets.dart +38 -0
- package/templates/firebase/lib/features/settings/ui/components/admin/admin_paywalls.dart +53 -0
- package/templates/firebase/lib/features/settings/ui/components/admin/admin_routes.dart +22 -0
- package/templates/firebase/lib/features/settings/ui/components/admin/send_push_notification_page.dart +366 -0
- package/templates/firebase/lib/features/settings/ui/components/admin/send_push_notifier.dart +40 -0
- package/templates/firebase/lib/features/settings/ui/components/avatar_component.dart +430 -0
- package/templates/firebase/lib/features/settings/ui/components/delete_user_component.dart +28 -0
- package/templates/firebase/lib/features/settings/ui/components/language_switcher.dart +163 -0
- package/templates/firebase/lib/features/settings/ui/widgets/admin_card.dart +59 -0
- package/templates/firebase/lib/features/settings/ui/widgets/avatar_utils.dart +51 -0
- package/templates/firebase/lib/features/settings/ui/widgets/round_progress.dart +151 -0
- package/templates/firebase/lib/features/settings/ui/widgets/settings_bottom_sheet_option_tile.dart +52 -0
- package/templates/firebase/lib/features/settings/ui/widgets/settings_tile.dart +163 -0
- package/templates/firebase/lib/features/subscription/api/entities/subscription_entity.dart +40 -0
- package/templates/firebase/lib/features/subscription/api/inapp_subscription_api.dart +389 -0
- package/templates/firebase/lib/features/subscription/api/subscription_api.dart +39 -0
- package/templates/firebase/lib/features/subscription/providers/models/premium_state.dart +35 -0
- package/templates/firebase/lib/features/subscription/providers/premium_page_provider.dart +259 -0
- package/templates/firebase/lib/features/subscription/repositories/subscription_repository.dart +177 -0
- package/templates/firebase/lib/features/subscription/shared/maybeshow_premium.dart +85 -0
- package/templates/firebase/lib/features/subscription/ui/component/active_premium_content.dart +171 -0
- package/templates/firebase/lib/features/subscription/ui/component/paywall_minimal.dart +146 -0
- package/templates/firebase/lib/features/subscription/ui/component/paywall_row.dart +332 -0
- package/templates/firebase/lib/features/subscription/ui/component/paywall_with_switch.dart +207 -0
- package/templates/firebase/lib/features/subscription/ui/component/premium_content.dart +157 -0
- package/templates/firebase/lib/features/subscription/ui/component/premium_page_factory.dart +161 -0
- package/templates/firebase/lib/features/subscription/ui/premium_page.dart +139 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/comparison_table.dart +346 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/feature_line.dart +131 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/paywall_empty_state.dart +68 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/premium_background.dart +63 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/premium_background_gradient.dart +53 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/premium_banner.dart +80 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/premium_bottom_menu.dart +102 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/premium_card.dart +26 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/premium_close_button.dart +61 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/premium_feature.dart +39 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/selectable_col.dart +377 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/selectable_row.dart +436 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/trial_switcher.dart +85 -0
- package/templates/firebase/lib/features/subscription/ui/widgets/unsubscribe_feedback_popup.dart +123 -0
- package/templates/firebase/lib/firebase_options.dart +75 -0
- package/templates/firebase/lib/google_auth_options.dart +10 -0
- package/templates/firebase/lib/i18n/app_locale_display.dart +17 -0
- package/templates/firebase/lib/i18n/en.i18n.json +514 -0
- package/templates/firebase/lib/i18n/es.i18n.json +514 -0
- package/templates/firebase/lib/i18n/pt.i18n.json +514 -0
- package/templates/firebase/lib/i18n/widgets/locale_code_badge.dart +47 -0
- package/templates/firebase/lib/main.dart +263 -0
- package/templates/firebase/lib/router.dart +226 -0
- package/templates/firebase/login-redesign-preview.png +0 -0
- package/templates/firebase/pubspec.yaml +177 -0
- package/templates/firebase/scripts/bump-ios-version.js +38 -0
- package/templates/firebase/scripts/release-ios.sh +137 -0
- package/templates/firebase/slang.yaml +7 -0
- package/templates/firebase/storage.rules +12 -0
- package/templates/firebase/test/core/data/api/analytics_api_fake.dart +25 -0
- package/templates/firebase/test/core/data/api/fake_remote_config_api.dart +45 -0
- package/templates/firebase/test/core/data/api/storage_api_fake.dart +28 -0
- package/templates/firebase/test/core/data/models/subscription_test.dart +42 -0
- package/templates/firebase/test/core/data/repositories/user_repository_test.dart +56 -0
- package/templates/firebase/test/core/guards/guard_test.dart +78 -0
- package/templates/firebase/test/core/navigation/kasy_page_transition_test.dart +30 -0
- package/templates/firebase/test/core/onstart_service_test.dart +18 -0
- package/templates/firebase/test/core/rating/rating_api_fake.dart +58 -0
- package/templates/firebase/test/core/rating/rating_banner_test.dart +117 -0
- package/templates/firebase/test/core/rating/rating_test.dart +60 -0
- package/templates/firebase/test/core/security/secured_storage_fake.dart +33 -0
- package/templates/firebase/test/core/states/event_dispatcher_test.dart +269 -0
- package/templates/firebase/test/core/states/user_state_notifier_test.dart +244 -0
- package/templates/firebase/test/core/widgets/responsive_layout_test.dart +50 -0
- package/templates/firebase/test/device_test_utils.dart +98 -0
- package/templates/firebase/test/features/authentication/data/api/auth_api_fake.dart +169 -0
- package/templates/firebase/test/features/authentication/data/api/user_api_fake.dart +86 -0
- package/templates/firebase/test/features/authentication/lost_password_page_test.dart +59 -0
- package/templates/firebase/test/features/authentication/repositories/authentication_repository_test.dart +88 -0
- package/templates/firebase/test/features/authentication/signin_page_test.dart +133 -0
- package/templates/firebase/test/features/authentication/signup_page_test.dart +136 -0
- package/templates/firebase/test/features/notifications/data/device_api_fake.dart +66 -0
- package/templates/firebase/test/features/notifications/data/fake_facebook_api.dart +40 -0
- package/templates/firebase/test/features/notifications/data/local_notifier_fake.dart +59 -0
- package/templates/firebase/test/features/notifications/data/notifications_api_fake.dart +120 -0
- package/templates/firebase/test/features/notifications/data/notifications_settings_fake.dart +34 -0
- package/templates/firebase/test/features/notifications/providers/device_repository_test.dart +68 -0
- package/templates/firebase/test/features/notifications/providers/notifications_repository_test.dart +74 -0
- package/templates/firebase/test/features/notifications/ui/notifications_page_test.dart +69 -0
- package/templates/firebase/test/features/subscription/api/fake_inapp_subscription_api.dart +85 -0
- package/templates/firebase/test/features/subscription/api/fake_revenuecat_product.dart +186 -0
- package/templates/firebase/test/features/subscription/api/fake_subscription_api.dart +11 -0
- package/templates/firebase/test/features/subscription/subscription_page_test.dart +119 -0
- package/templates/firebase/test/firebase_test_utils.dart +25 -0
- package/templates/firebase/test/test_utils.dart +272 -0
- package/templates/firebase/web/favicon.png +0 -0
- package/templates/firebase/web/firebase-messaging-sw.js +27 -0
- package/templates/firebase/web/icons/Icon-192.png +0 -0
- package/templates/firebase/web/icons/Icon-512.png +0 -0
- package/templates/firebase/web/icons/Icon-maskable-192.png +0 -0
- package/templates/firebase/web/icons/Icon-maskable-512.png +0 -0
- package/templates/firebase/web/index.html +110 -0
- package/templates/firebase/web/local_notifications.js +31 -0
- package/templates/firebase/web/manifest.json +35 -0
- package/templates/firebase/web/splash/img/dark-1x.png +0 -0
- package/templates/firebase/web/splash/img/dark-2x.png +0 -0
- package/templates/firebase/web/splash/img/dark-3x.png +0 -0
- package/templates/firebase/web/splash/img/dark-4x.png +0 -0
- package/templates/firebase/web/splash/img/light-1x.png +0 -0
- package/templates/firebase/web/splash/img/light-2x.png +0 -0
- package/templates/firebase/web/splash/img/light-3x.png +0 -0
- package/templates/firebase/web/splash/img/light-4x.png +0 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Social authentication setup
|
|
2
|
+
|
|
3
|
+
Guide to enable Google, Apple, and Facebook login in your project.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Google Sign-In
|
|
8
|
+
|
|
9
|
+
The CLI handles the technical setup automatically when generating the project:
|
|
10
|
+
- Reads the `REVERSED_CLIENT_ID` from `GoogleService-Info.plist`
|
|
11
|
+
- Registers the URL scheme in `ios/Runner/Info.plist`
|
|
12
|
+
- Writes `lib/google_auth_options.dart` with the Web Client ID
|
|
13
|
+
|
|
14
|
+
**What you need to verify once:**
|
|
15
|
+
|
|
16
|
+
1. [Firebase Console → Authentication → Sign-in method → Google](https://console.firebase.google.com/project/_/authentication/providers) → enable
|
|
17
|
+
2. The CLI automatically adds the debug keystore SHA-1 for Android. If you use a new computer or a different keystore, verify with:
|
|
18
|
+
```bash
|
|
19
|
+
kasy doctor
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Apple Sign-In
|
|
25
|
+
|
|
26
|
+
Requires an [Apple Developer](https://developer.apple.com) account (paid).
|
|
27
|
+
|
|
28
|
+
### Step 1 — Enable capability on Bundle ID
|
|
29
|
+
|
|
30
|
+
1. Open [Identifiers](https://developer.apple.com/account/resources/identifiers/list)
|
|
31
|
+
2. Select your Bundle ID
|
|
32
|
+
3. Enable **Sign In with Apple** → Enable as a primary App ID → **Save**
|
|
33
|
+
|
|
34
|
+
### Step 2 — Create a key
|
|
35
|
+
|
|
36
|
+
1. Open [Keys](https://developer.apple.com/account/resources/authkeys/list)
|
|
37
|
+
2. Click **+** → enter a name (e.g. `Firebase Sign In with Apple`)
|
|
38
|
+
3. Enable **Sign In with Apple** → Configure → select your Bundle ID → Save
|
|
39
|
+
4. Register → **download the `.p8` file** (can only be downloaded once — store it safely)
|
|
40
|
+
5. Note the **Key ID** (e.g. `6RR89XG535`)
|
|
41
|
+
|
|
42
|
+
### Step 3 — Create a Services ID
|
|
43
|
+
|
|
44
|
+
1. Open [Services IDs](https://developer.apple.com/account/resources/identifiers/list/serviceId)
|
|
45
|
+
2. Click **+** → select **Services IDs** → Continue
|
|
46
|
+
3. Fill in:
|
|
47
|
+
- **Description**: `Firebase Sign In with Apple`
|
|
48
|
+
- **Identifier**: `YOUR_BUNDLE_ID.signin` (e.g. `com.company.app.signin`)
|
|
49
|
+
4. Register → click the new Services ID → enable **Sign In with Apple** → Configure
|
|
50
|
+
5. Fill in:
|
|
51
|
+
- **Primary App ID**: your Bundle ID
|
|
52
|
+
- **Domains**: `YOUR_PROJECT.firebaseapp.com`
|
|
53
|
+
- **Return URLs**: `https://YOUR_PROJECT.firebaseapp.com/__/auth/handler`
|
|
54
|
+
6. Next → Done → Continue → **Save**
|
|
55
|
+
|
|
56
|
+
### Step 4 — Configure in Firebase
|
|
57
|
+
|
|
58
|
+
1. Open [Firebase Console → Authentication → Apple](https://console.firebase.google.com/project/_/authentication/providers)
|
|
59
|
+
2. Enable the Apple provider
|
|
60
|
+
3. Fill in under **OAuth code flow configuration**:
|
|
61
|
+
- **Services ID**: the identifier from Step 3 (e.g. `com.company.app.signin`)
|
|
62
|
+
- **Team ID**: found at [Membership Details](https://developer.apple.com/account#MembershipDetailsCard)
|
|
63
|
+
- **Key ID**: the Key ID from Step 2
|
|
64
|
+
- **Private key**: full content of the `.p8` file, including the `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----` lines
|
|
65
|
+
4. **Save**
|
|
66
|
+
|
|
67
|
+
### Step 5 — Enable capability in Xcode
|
|
68
|
+
|
|
69
|
+
1. Open `ios/Runner.xcworkspace` in Xcode
|
|
70
|
+
2. Target **Runner** → **Signing & Capabilities** → **+ Capability** → add **Sign In with Apple**
|
|
71
|
+
|
|
72
|
+
> **Android and Web**: no additional setup needed. The Firebase SDK handles the flow on Android. For Web, the Services ID (Step 3) already covers the redirect flow via `firebaseapp.com`.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Facebook Sign-In
|
|
77
|
+
|
|
78
|
+
Requires a [Meta for Developers](https://developers.facebook.com) account.
|
|
79
|
+
|
|
80
|
+
### Step 1 — Create an app on Meta
|
|
81
|
+
|
|
82
|
+
1. Open [Meta for Developers → My Apps](https://developers.facebook.com/apps)
|
|
83
|
+
2. Click **Create App** → select **Consumer** → Next
|
|
84
|
+
3. Enter the app name → Create App
|
|
85
|
+
4. In the app dashboard, note the **App ID** and **Client Token** (Settings → Advanced → Client Token)
|
|
86
|
+
|
|
87
|
+
### Step 2 — Enable Facebook Login
|
|
88
|
+
|
|
89
|
+
1. In the Meta app dashboard → Add Product → **Facebook Login** → Set Up → iOS/Android as needed
|
|
90
|
+
2. iOS: provide your app's Bundle ID
|
|
91
|
+
|
|
92
|
+
### Step 3 — iOS: update Info.plist
|
|
93
|
+
|
|
94
|
+
Edit `ios/Runner/Info.plist` and replace the placeholders:
|
|
95
|
+
|
|
96
|
+
```xml
|
|
97
|
+
<key>FacebookAppID</key>
|
|
98
|
+
<string>YOUR_APP_ID</string>
|
|
99
|
+
<key>FacebookClientToken</key>
|
|
100
|
+
<string>YOUR_CLIENT_TOKEN</string>
|
|
101
|
+
<key>FacebookDisplayName</key>
|
|
102
|
+
<string>Your app name</string>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
And the URL scheme (inside `CFBundleURLTypes`):
|
|
106
|
+
```xml
|
|
107
|
+
<string>fbYOUR_APP_ID</string>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Step 4 — Android: update strings.xml
|
|
111
|
+
|
|
112
|
+
Edit `android/app/src/main/res/values/strings.xml` and replace the placeholders:
|
|
113
|
+
|
|
114
|
+
```xml
|
|
115
|
+
<string name="facebook_app_id">YOUR_APP_ID</string>
|
|
116
|
+
<string name="facebook_client_token">YOUR_CLIENT_TOKEN</string>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Step 5 — Web: add domain in Meta
|
|
120
|
+
|
|
121
|
+
1. In the Meta app dashboard → Facebook Login → Settings
|
|
122
|
+
2. Under **Valid OAuth Redirect URIs**, add `https://YOUR_PROJECT.firebaseapp.com/__/auth/handler`
|
|
123
|
+
3. Under **Allowed Domains for the JavaScript SDK**, add `YOUR_PROJECT.firebaseapp.com`
|
|
124
|
+
|
|
125
|
+
Verify with:
|
|
126
|
+
```bash
|
|
127
|
+
kasy doctor
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Supabase
|
|
133
|
+
|
|
134
|
+
For projects using the Supabase backend, the Apple and Meta setup is identical. What changes is where you register the credentials:
|
|
135
|
+
|
|
136
|
+
| Provider | Where to configure |
|
|
137
|
+
|----------|--------------------|
|
|
138
|
+
| Google | Supabase Dashboard → Auth → Providers → Google |
|
|
139
|
+
| Apple | Supabase Dashboard → Auth → Providers → Apple (Services ID required) |
|
|
140
|
+
| Facebook | Supabase Dashboard → Auth → Providers → Facebook |
|
|
141
|
+
|
|
142
|
+
For Apple with Supabase, the Services ID **Return URL** must be:
|
|
143
|
+
```
|
|
144
|
+
https://YOUR_PROJECT.supabase.co/auth/v1/callback
|
|
145
|
+
```
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Configurar autenticación social
|
|
2
|
+
|
|
3
|
+
Guía para activar el inicio de sesión con Google, Apple y Facebook en tu proyecto.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Google Sign-In
|
|
8
|
+
|
|
9
|
+
La CLI se encarga de la configuración técnica automáticamente al generar el proyecto:
|
|
10
|
+
- Lee el `REVERSED_CLIENT_ID` del `GoogleService-Info.plist`
|
|
11
|
+
- Registra el URL scheme en `ios/Runner/Info.plist`
|
|
12
|
+
- Escribe `lib/google_auth_options.dart` con el Web Client ID
|
|
13
|
+
|
|
14
|
+
**Lo que debes verificar una sola vez:**
|
|
15
|
+
|
|
16
|
+
1. [Firebase Console → Authentication → Sign-in method → Google](https://console.firebase.google.com/project/_/authentication/providers) → activar
|
|
17
|
+
2. La CLI agrega el SHA-1 del debug keystore automáticamente en Android. Si usas un equipo nuevo o un keystore diferente, verifica con:
|
|
18
|
+
```bash
|
|
19
|
+
kasy doctor
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Apple Sign-In
|
|
25
|
+
|
|
26
|
+
Requiere cuenta de [Apple Developer](https://developer.apple.com) (de pago).
|
|
27
|
+
|
|
28
|
+
### Paso 1 — Activar capability en el Bundle ID
|
|
29
|
+
|
|
30
|
+
1. Abre [Identifiers](https://developer.apple.com/account/resources/identifiers/list)
|
|
31
|
+
2. Selecciona tu Bundle ID
|
|
32
|
+
3. Activa **Sign In with Apple** → Enable as a primary App ID → **Save**
|
|
33
|
+
|
|
34
|
+
### Paso 2 — Crear una clave
|
|
35
|
+
|
|
36
|
+
1. Abre [Keys](https://developer.apple.com/account/resources/authkeys/list)
|
|
37
|
+
2. Haz clic en **+** → escribe un nombre (ej: `Firebase Sign In with Apple`)
|
|
38
|
+
3. Activa **Sign In with Apple** → Configure → selecciona tu Bundle ID → Save
|
|
39
|
+
4. Regístrala → **descarga el archivo `.p8`** (solo se puede descargar una vez — guárdalo en un lugar seguro)
|
|
40
|
+
5. Anota el **Key ID** (ej: `6RR89XG535`)
|
|
41
|
+
|
|
42
|
+
### Paso 3 — Crear un Services ID
|
|
43
|
+
|
|
44
|
+
1. Abre [Services IDs](https://developer.apple.com/account/resources/identifiers/list/serviceId)
|
|
45
|
+
2. Haz clic en **+** → selecciona **Services IDs** → Continue
|
|
46
|
+
3. Rellena:
|
|
47
|
+
- **Description**: `Firebase Sign In with Apple`
|
|
48
|
+
- **Identifier**: `TU_BUNDLE_ID.signin` (ej: `com.empresa.app.signin`)
|
|
49
|
+
4. Regístralo → haz clic en el Services ID recién creado → activa **Sign In with Apple** → Configure
|
|
50
|
+
5. Rellena:
|
|
51
|
+
- **Primary App ID**: tu Bundle ID
|
|
52
|
+
- **Domains**: `TU_PROYECTO.firebaseapp.com`
|
|
53
|
+
- **Return URLs**: `https://TU_PROYECTO.firebaseapp.com/__/auth/handler`
|
|
54
|
+
6. Next → Done → Continue → **Save**
|
|
55
|
+
|
|
56
|
+
### Paso 4 — Configurar en Firebase
|
|
57
|
+
|
|
58
|
+
1. Abre [Firebase Console → Authentication → Apple](https://console.firebase.google.com/project/_/authentication/providers)
|
|
59
|
+
2. Activa el proveedor Apple
|
|
60
|
+
3. Rellena en **Configuración del flujo de código OAuth**:
|
|
61
|
+
- **Services ID**: el identifier del Paso 3 (ej: `com.empresa.app.signin`)
|
|
62
|
+
- **Team ID**: encuéntralo en [Membership Details](https://developer.apple.com/account#MembershipDetailsCard)
|
|
63
|
+
- **Key ID**: el Key ID del Paso 2
|
|
64
|
+
- **Clave privada**: contenido completo del archivo `.p8`, incluyendo las líneas `-----BEGIN PRIVATE KEY-----` y `-----END PRIVATE KEY-----`
|
|
65
|
+
4. **Guardar**
|
|
66
|
+
|
|
67
|
+
### Paso 5 — Activar capability en Xcode
|
|
68
|
+
|
|
69
|
+
1. Abre `ios/Runner.xcworkspace` en Xcode
|
|
70
|
+
2. Target **Runner** → **Signing & Capabilities** → **+ Capability** → agrega **Sign In with Apple**
|
|
71
|
+
|
|
72
|
+
> **Android y Web**: no se necesita configuración adicional. El SDK de Firebase gestiona el flujo en Android. Para Web, el Services ID (Paso 3) ya cubre el flujo de redirect vía `firebaseapp.com`.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Facebook Sign-In
|
|
77
|
+
|
|
78
|
+
Requiere cuenta en [Meta for Developers](https://developers.facebook.com).
|
|
79
|
+
|
|
80
|
+
### Paso 1 — Crear una app en Meta
|
|
81
|
+
|
|
82
|
+
1. Abre [Meta for Developers → My Apps](https://developers.facebook.com/apps)
|
|
83
|
+
2. Haz clic en **Create App** → selecciona **Consumer** → Next
|
|
84
|
+
3. Ingresa el nombre de la app → Create App
|
|
85
|
+
4. En el panel de la app, anota el **App ID** y el **Client Token** (Settings → Advanced → Client Token)
|
|
86
|
+
|
|
87
|
+
### Paso 2 — Activar Facebook Login
|
|
88
|
+
|
|
89
|
+
1. En el panel de la app Meta → Add Product → **Facebook Login** → Set Up → iOS/Android según corresponda
|
|
90
|
+
2. iOS: proporciona el Bundle ID de tu app
|
|
91
|
+
|
|
92
|
+
### Paso 3 — iOS: actualizar Info.plist
|
|
93
|
+
|
|
94
|
+
Edita `ios/Runner/Info.plist` y reemplaza los placeholders:
|
|
95
|
+
|
|
96
|
+
```xml
|
|
97
|
+
<key>FacebookAppID</key>
|
|
98
|
+
<string>TU_APP_ID</string>
|
|
99
|
+
<key>FacebookClientToken</key>
|
|
100
|
+
<string>TU_CLIENT_TOKEN</string>
|
|
101
|
+
<key>FacebookDisplayName</key>
|
|
102
|
+
<string>Nombre de tu app</string>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Y el URL scheme (dentro de `CFBundleURLTypes`):
|
|
106
|
+
```xml
|
|
107
|
+
<string>fbTU_APP_ID</string>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Paso 4 — Android: actualizar strings.xml
|
|
111
|
+
|
|
112
|
+
Edita `android/app/src/main/res/values/strings.xml` y reemplaza los placeholders:
|
|
113
|
+
|
|
114
|
+
```xml
|
|
115
|
+
<string name="facebook_app_id">TU_APP_ID</string>
|
|
116
|
+
<string name="facebook_client_token">TU_CLIENT_TOKEN</string>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Paso 5 — Web: agregar dominio en Meta
|
|
120
|
+
|
|
121
|
+
1. En el panel de la app Meta → Facebook Login → Settings
|
|
122
|
+
2. En **Valid OAuth Redirect URIs**, agrega `https://TU_PROYECTO.firebaseapp.com/__/auth/handler`
|
|
123
|
+
3. En **Allowed Domains for the JavaScript SDK**, agrega `TU_PROYECTO.firebaseapp.com`
|
|
124
|
+
|
|
125
|
+
Verifica con:
|
|
126
|
+
```bash
|
|
127
|
+
kasy doctor
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Supabase
|
|
133
|
+
|
|
134
|
+
Para proyectos con backend Supabase, la configuración del lado de Apple y Meta es idéntica. Lo que cambia es dónde registrar las credenciales:
|
|
135
|
+
|
|
136
|
+
| Proveedor | Dónde configurar |
|
|
137
|
+
|-----------|-----------------|
|
|
138
|
+
| Google | Supabase Dashboard → Auth → Providers → Google |
|
|
139
|
+
| Apple | Supabase Dashboard → Auth → Providers → Apple (Services ID obligatorio) |
|
|
140
|
+
| Facebook | Supabase Dashboard → Auth → Providers → Facebook |
|
|
141
|
+
|
|
142
|
+
Para Apple con Supabase, el **Return URL** del Services ID debe ser:
|
|
143
|
+
```
|
|
144
|
+
https://TU_PROYECTO.supabase.co/auth/v1/callback
|
|
145
|
+
```
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Configurar autenticação social
|
|
2
|
+
|
|
3
|
+
Guia para ativar login com Google, Apple e Facebook no seu projeto.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Google Sign-In
|
|
8
|
+
|
|
9
|
+
A CLI já faz a parte técnica automaticamente ao gerar o projeto:
|
|
10
|
+
- Lê o `REVERSED_CLIENT_ID` do `GoogleService-Info.plist`
|
|
11
|
+
- Registra o URL scheme no `ios/Runner/Info.plist`
|
|
12
|
+
- Grava o `lib/google_auth_options.dart` com o Web Client ID
|
|
13
|
+
|
|
14
|
+
**O que você precisa verificar uma única vez:**
|
|
15
|
+
|
|
16
|
+
1. [Firebase Console → Authentication → Sign-in method → Google](https://console.firebase.google.com/project/_/authentication/providers) → ativar
|
|
17
|
+
2. A CLI já adiciona o SHA-1 do debug keystore automaticamente no Android. Se usar um computador novo ou keystore diferente, verifique com:
|
|
18
|
+
```bash
|
|
19
|
+
kasy doctor
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Apple Sign-In
|
|
25
|
+
|
|
26
|
+
Requer conta [Apple Developer](https://developer.apple.com) (paga).
|
|
27
|
+
|
|
28
|
+
### Passo 1 — Ativar capability no Bundle ID
|
|
29
|
+
|
|
30
|
+
1. Abra [Identifiers](https://developer.apple.com/account/resources/identifiers/list)
|
|
31
|
+
2. Selecione seu Bundle ID
|
|
32
|
+
3. Ative **Sign In with Apple** → Enable as a primary App ID → **Save**
|
|
33
|
+
|
|
34
|
+
### Passo 2 — Criar chave
|
|
35
|
+
|
|
36
|
+
1. Abra [Keys](https://developer.apple.com/account/resources/authkeys/list)
|
|
37
|
+
2. Clique em **+** → dê um nome (ex: `Firebase Sign In with Apple`)
|
|
38
|
+
3. Ative **Sign In with Apple** → Configure → selecione seu Bundle ID → Save
|
|
39
|
+
4. Registre → **baixe o `.p8`** (só é possível baixar uma vez — guarde em lugar seguro)
|
|
40
|
+
5. Anote o **Key ID** (ex: `6RR89XG535`)
|
|
41
|
+
|
|
42
|
+
### Passo 3 — Criar Services ID
|
|
43
|
+
|
|
44
|
+
1. Abra [Services IDs](https://developer.apple.com/account/resources/identifiers/list/serviceId)
|
|
45
|
+
2. Clique em **+** → selecione **Services IDs** → Continue
|
|
46
|
+
3. Preencha:
|
|
47
|
+
- **Description**: `Firebase Sign In with Apple`
|
|
48
|
+
- **Identifier**: `SEU_BUNDLE_ID.signin` (ex: `com.empresa.app.signin`)
|
|
49
|
+
4. Registre → clique no Services ID recém-criado → ative **Sign In with Apple** → Configure
|
|
50
|
+
5. Preencha:
|
|
51
|
+
- **Primary App ID**: seu Bundle ID
|
|
52
|
+
- **Domains**: `SEU_PROJETO.firebaseapp.com`
|
|
53
|
+
- **Return URLs**: `https://SEU_PROJETO.firebaseapp.com/__/auth/handler`
|
|
54
|
+
6. Next → Done → Continue → **Save**
|
|
55
|
+
|
|
56
|
+
### Passo 4 — Configurar no Firebase
|
|
57
|
+
|
|
58
|
+
1. Abra [Firebase Console → Authentication → Apple](https://console.firebase.google.com/project/_/authentication/providers)
|
|
59
|
+
2. Ative o provedor Apple
|
|
60
|
+
3. Preencha em **Configuração do fluxo de código OAuth**:
|
|
61
|
+
- **Services ID**: o identifier do Passo 3 (ex: `com.empresa.app.signin`)
|
|
62
|
+
- **Team ID**: encontrado em [Membership Details](https://developer.apple.com/account#MembershipDetailsCard)
|
|
63
|
+
- **ID da chave**: o Key ID do Passo 2
|
|
64
|
+
- **Chave privada**: conteúdo completo do arquivo `.p8`, incluindo as linhas `-----BEGIN PRIVATE KEY-----` e `-----END PRIVATE KEY-----`
|
|
65
|
+
4. **Salvar**
|
|
66
|
+
|
|
67
|
+
### Passo 5 — Ativar capability no Xcode
|
|
68
|
+
|
|
69
|
+
1. Abra `ios/Runner.xcworkspace` no Xcode
|
|
70
|
+
2. Target **Runner** → **Signing & Capabilities** → **+ Capability** → adicione **Sign In with Apple**
|
|
71
|
+
|
|
72
|
+
> **Android e Web**: não precisam de configuração adicional. O Firebase SDK gerencia o fluxo no Android. Para Web, o Services ID (Passo 3) já cobre o fluxo de redirect via `firebaseapp.com`.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Facebook Sign-In
|
|
77
|
+
|
|
78
|
+
Requer conta no [Meta for Developers](https://developers.facebook.com).
|
|
79
|
+
|
|
80
|
+
### Passo 1 — Criar app no Meta
|
|
81
|
+
|
|
82
|
+
1. Abra [Meta for Developers → My Apps](https://developers.facebook.com/apps)
|
|
83
|
+
2. Clique em **Create App** → selecione **Consumer** → Next
|
|
84
|
+
3. Preencha o nome do app → Create App
|
|
85
|
+
4. No painel do app, anote o **App ID** e o **Client Token** (Settings → Advanced → Client Token)
|
|
86
|
+
|
|
87
|
+
### Passo 2 — Ativar Facebook Login
|
|
88
|
+
|
|
89
|
+
1. No painel do app Meta → Add Product → **Facebook Login** → Set Up → iOS/Android conforme necessário
|
|
90
|
+
2. iOS: informe o Bundle ID do seu app
|
|
91
|
+
|
|
92
|
+
### Passo 3 — iOS: atualizar Info.plist
|
|
93
|
+
|
|
94
|
+
Edite `ios/Runner/Info.plist` e substitua os placeholders:
|
|
95
|
+
|
|
96
|
+
```xml
|
|
97
|
+
<key>FacebookAppID</key>
|
|
98
|
+
<string>SEU_APP_ID</string>
|
|
99
|
+
<key>FacebookClientToken</key>
|
|
100
|
+
<string>SEU_CLIENT_TOKEN</string>
|
|
101
|
+
<key>FacebookDisplayName</key>
|
|
102
|
+
<string>Nome do seu app</string>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
E o URL scheme (dentro de `CFBundleURLTypes`):
|
|
106
|
+
```xml
|
|
107
|
+
<string>fbSEU_APP_ID</string>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Passo 4 — Android: atualizar strings.xml
|
|
111
|
+
|
|
112
|
+
Edite `android/app/src/main/res/values/strings.xml` e substitua os placeholders:
|
|
113
|
+
|
|
114
|
+
```xml
|
|
115
|
+
<string name="facebook_app_id">SEU_APP_ID</string>
|
|
116
|
+
<string name="facebook_client_token">SEU_CLIENT_TOKEN</string>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Passo 5 — Web: adicionar domínio no Meta
|
|
120
|
+
|
|
121
|
+
1. No painel do app Meta → Facebook Login → Settings
|
|
122
|
+
2. Em **Valid OAuth Redirect URIs**, adicione `https://SEU_PROJETO.firebaseapp.com/__/auth/handler`
|
|
123
|
+
3. Em **Allowed Domains for the JavaScript SDK**, adicione `SEU_PROJETO.firebaseapp.com`
|
|
124
|
+
|
|
125
|
+
Verifique com:
|
|
126
|
+
```bash
|
|
127
|
+
kasy doctor
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Supabase
|
|
133
|
+
|
|
134
|
+
Para projetos com backend Supabase, a configuração do lado da Apple e do Meta é idêntica. O que muda é onde cadastrar as credenciais:
|
|
135
|
+
|
|
136
|
+
| Provedor | Onde configurar |
|
|
137
|
+
|----------|----------------|
|
|
138
|
+
| Google | Supabase Dashboard → Auth → Providers → Google |
|
|
139
|
+
| Apple | Supabase Dashboard → Auth → Providers → Apple (Services ID obrigatório) |
|
|
140
|
+
| Facebook | Supabase Dashboard → Auth → Providers → Facebook |
|
|
141
|
+
|
|
142
|
+
No Apple com Supabase, o **Return URL** do Services ID deve ser:
|
|
143
|
+
```
|
|
144
|
+
https://SEU_PROJETO.supabase.co/auth/v1/callback
|
|
145
|
+
```
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Publish iOS with Codemagic (no Mac)
|
|
2
|
+
|
|
3
|
+
## Prerequisites
|
|
4
|
+
|
|
5
|
+
- [Codemagic](https://codemagic.io) account
|
|
6
|
+
- Git repository connected to Codemagic
|
|
7
|
+
- Apple Developer account + app in App Store Connect
|
|
8
|
+
|
|
9
|
+
## 1. Add CI to the project (if missing)
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
kasy add ci
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Creates `codemagic.yaml` at the project root.
|
|
16
|
+
|
|
17
|
+
## 2. Configure in the Codemagic dashboard
|
|
18
|
+
|
|
19
|
+
1. Open [codemagic.io/apps](https://codemagic.io/apps) and add your repository.
|
|
20
|
+
2. **Code signing (iOS):** set up App Store distribution certificate and profile.
|
|
21
|
+
3. **Integrations → App Store Connect:** link your Apple account.
|
|
22
|
+
4. **Environment variables:** add to your variable group (e.g. `appstore_credentials`):
|
|
23
|
+
- `BACKEND_URL`, `SENTRY_DSN`, `RC_IOS_API_KEY`, `RC_ANDROID_API_KEY`, `MIXPANEL_TOKEN`
|
|
24
|
+
5. In `codemagic.yaml`, set `APP_ID` (numeric App Store Connect app ID from the app URL).
|
|
25
|
+
|
|
26
|
+
## 3. Configure from the terminal
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
kasy codemagic configure
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Enter **API token** (Settings → Codemagic API), **App ID**, and **Workflow ID** (default `ios-workflow`).
|
|
33
|
+
|
|
34
|
+
## 4. Trigger a build
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
kasy codemagic release
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The cloud build runs and may upload to TestFlight per `codemagic.yaml`.
|
|
41
|
+
|
|
42
|
+
## Build status
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
kasy codemagic status <buildId>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Local Mac
|
|
49
|
+
|
|
50
|
+
If you have a Mac: [ios-release.md](./ios-release.md) and `kasy ios release`.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Publicar iOS con Codemagic (sin Mac)
|
|
2
|
+
|
|
3
|
+
## Requisitos
|
|
4
|
+
|
|
5
|
+
- Cuenta [Codemagic](https://codemagic.io)
|
|
6
|
+
- Repositorio Git conectado a Codemagic
|
|
7
|
+
- Cuenta Apple Developer + app en App Store Connect
|
|
8
|
+
|
|
9
|
+
## 1. Agregar CI al proyecto (si falta)
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
kasy add ci
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Crea `codemagic.yaml` en la raíz del proyecto.
|
|
16
|
+
|
|
17
|
+
## 2. Configurar en el panel Codemagic
|
|
18
|
+
|
|
19
|
+
1. Abre [codemagic.io/apps](https://codemagic.io/apps) y agrega el repositorio.
|
|
20
|
+
2. **Code signing (iOS):** certificado y perfil de distribución App Store.
|
|
21
|
+
3. **Integrations → App Store Connect:** vincula la cuenta Apple.
|
|
22
|
+
4. **Environment variables:** en el grupo del app (ej. `appstore_credentials`):
|
|
23
|
+
- `BACKEND_URL`, `SENTRY_DSN`, `RC_IOS_API_KEY`, `RC_ANDROID_API_KEY`, `MIXPANEL_TOKEN`
|
|
24
|
+
5. En `codemagic.yaml`, completa `APP_ID` (ID numérico del app en App Store Connect).
|
|
25
|
+
|
|
26
|
+
## 3. Configurar en la terminal
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
kasy codemagic configure
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Indica **API token** (Settings → Codemagic API), **App ID** y **Workflow ID** (`ios-workflow` por defecto).
|
|
33
|
+
|
|
34
|
+
## 4. Disparar build
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
kasy codemagic release
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
El build en la nube puede subir a TestFlight según `codemagic.yaml`.
|
|
41
|
+
|
|
42
|
+
## Estado del build
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
kasy codemagic status <buildId>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Mac local
|
|
49
|
+
|
|
50
|
+
Si tienes Mac: [ios-release.md](./ios-release.md) y `kasy ios release`.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Publicar iOS com Codemagic (sem Mac)
|
|
2
|
+
|
|
3
|
+
## Pré-requisitos
|
|
4
|
+
|
|
5
|
+
- Conta [Codemagic](https://codemagic.io)
|
|
6
|
+
- Repositório Git conectado ao Codemagic
|
|
7
|
+
- Conta Apple Developer + app no App Store Connect
|
|
8
|
+
|
|
9
|
+
## 1. Adicionar CI ao projeto (se ainda não tiver)
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
kasy add ci
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Isso cria `codemagic.yaml` na raiz do projeto.
|
|
16
|
+
|
|
17
|
+
## 2. Configurar no painel Codemagic
|
|
18
|
+
|
|
19
|
+
1. Abra [codemagic.io/apps](https://codemagic.io/apps) e adicione o repositório.
|
|
20
|
+
2. **Code signing (iOS):** configure certificado e perfil de distribuição App Store.
|
|
21
|
+
3. **Integrations → App Store Connect:** conecte a conta Apple (recomendado).
|
|
22
|
+
4. **Environment variables:** adicione no grupo do app (ex.: `appstore_credentials`):
|
|
23
|
+
- `BACKEND_URL`, `SENTRY_DSN`, `RC_IOS_API_KEY`, `RC_ANDROID_API_KEY`, `MIXPANEL_TOKEN`
|
|
24
|
+
5. No `codemagic.yaml`, preencha `APP_ID` (ID numérico do app no App Store Connect — aparece na URL do app).
|
|
25
|
+
|
|
26
|
+
## 3. Configurar no terminal
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
kasy codemagic configure
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Informe o **API token** (Settings → Codemagic API), **App ID** e **Workflow ID** (`ios-workflow` por padrão).
|
|
33
|
+
|
|
34
|
+
## 4. Disparar build
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
kasy codemagic release
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
O build roda na nuvem e, conforme o `codemagic.yaml`, pode enviar para TestFlight automaticamente.
|
|
41
|
+
|
|
42
|
+
## Status do build
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
kasy codemagic status <buildId>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Mac local
|
|
49
|
+
|
|
50
|
+
Se tiver Mac: [ios-release.md](./ios-release.md) e `kasy ios release`.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Publish to iOS (App Store)
|
|
2
|
+
|
|
3
|
+
## Prerequisites
|
|
4
|
+
|
|
5
|
+
- Paid [Apple Developer](https://developer.apple.com) account
|
|
6
|
+
- App created in [App Store Connect](https://appstoreconnect.apple.com) with the same **Bundle ID** as your project
|
|
7
|
+
- Mac with Xcode and Flutter installed
|
|
8
|
+
|
|
9
|
+
## One-time setup
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
kasy ios configure
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Opens Apple links, collects the API key (`.p8`), and writes `.kasy/apple.env` (gitignored).
|
|
16
|
+
|
|
17
|
+
## Ship a new build
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
kasy ios release
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Bumps the build number in `pubspec.yaml`, builds the IPA, and uploads to App Store Connect (no Transporter).
|
|
24
|
+
|
|
25
|
+
Shortcut: `make release-ios`
|
|
26
|
+
|
|
27
|
+
### Options
|
|
28
|
+
|
|
29
|
+
- `kasy ios build` — IPA only, no upload
|
|
30
|
+
- `kasy ios release --no-bump` — skip build number bump
|
|
31
|
+
- `kasy ios release --version-name 1.0.1` — change marketing version
|
|
32
|
+
|
|
33
|
+
## No Mac?
|
|
34
|
+
|
|
35
|
+
Use cloud builds: [codemagic-release.md](./codemagic-release.md) and `kasy codemagic configure` / `kasy codemagic release`.
|
|
36
|
+
|
|
37
|
+
## Check environment
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
kasy doctor
|
|
41
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Publicar en iOS (App Store)
|
|
2
|
+
|
|
3
|
+
## Requisitos
|
|
4
|
+
|
|
5
|
+
- Cuenta de pago [Apple Developer](https://developer.apple.com)
|
|
6
|
+
- App creada en [App Store Connect](https://appstoreconnect.apple.com) con el mismo **Bundle ID** del proyecto
|
|
7
|
+
- Mac con Xcode y Flutter instalados
|
|
8
|
+
|
|
9
|
+
## Configuración única
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
kasy ios configure
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Abre los enlaces de Apple, pide la clave API (`.p8`) y guarda `.kasy/apple.env` (no se sube a Git).
|
|
16
|
+
|
|
17
|
+
## Enviar nueva versión
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
kasy ios release
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Incrementa el build en `pubspec.yaml`, genera el IPA y lo sube a App Store Connect (sin Transporter).
|
|
24
|
+
|
|
25
|
+
Atajo: `make release-ios`
|
|
26
|
+
|
|
27
|
+
### Opciones
|
|
28
|
+
|
|
29
|
+
- `kasy ios build` — solo IPA, sin subir
|
|
30
|
+
- `kasy ios release --no-bump` — no incrementar build
|
|
31
|
+
- `kasy ios release --version-name 1.0.1` — cambiar versión visible
|
|
32
|
+
|
|
33
|
+
## ¿Sin Mac?
|
|
34
|
+
|
|
35
|
+
Build en la nube: [codemagic-release.md](./codemagic-release.md) y `kasy codemagic configure` / `kasy codemagic release`.
|
|
36
|
+
|
|
37
|
+
## Verificar entorno
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
kasy doctor
|
|
41
|
+
```
|