From a5b79193dd0c72fe5e03a6965c1bd2174e001252 Mon Sep 17 00:00:00 2001 From: cschlaefke Date: Sat, 18 Jul 2026 22:25:41 +0200 Subject: [PATCH] Projekt in leafittome umbenannt (App-Name LeafItToMe, Bundle-ID dev.leafittome.app) - pubspec, Paket-Imports, App-Klasse, ARB-Titel, iOS/Android-Konfiguration - README und Doku auf neuen Namen und Repo leafittome umgestellt Co-Authored-By: Claude Fable 5 --- README.md | 4 ++-- android/app/build.gradle.kts | 4 ++-- android/app/src/main/AndroidManifest.xml | 2 +- .../planty => leafittome/app}/MainActivity.kt | 2 +- docs/architektur.md | 2 +- docs/firebase-einrichtung.md | 4 ++-- docs/git-forgejo.md | 12 ++++++------ ios/Runner.xcodeproj/project.pbxproj | 12 ++++++------ ios/Runner/Info.plist | 4 ++-- lib/app.dart | 4 ++-- lib/core/theme/app_theme.dart | 2 +- lib/l10n/app_de.arb | 2 +- lib/l10n/generated/app_localizations.dart | 2 +- lib/l10n/generated/app_localizations_de.dart | 2 +- lib/main.dart | 2 +- pubspec.yaml | 4 ++-- test/widget_test.dart | 6 +++--- 17 files changed, 35 insertions(+), 35 deletions(-) rename android/app/src/main/kotlin/dev/{planty/planty => leafittome/app}/MainActivity.kt (77%) diff --git a/README.md b/README.md index d136ba5..301f459 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Planty 🌱 +# LeafItToMe 🌱 App zur Verwaltung und Pflege von Pflanzen — für den eigenen Haushalt und Pflanzen-Sitter. @@ -36,4 +36,4 @@ flutter analyze # Statische Analyse - **Firebase** (Auth, Firestore, Storage, Cloud Functions, FCM) — Anbindung folgt im nächsten Block - **KI hybrid:** PlantNet (kostenlose Arterkennung) + Claude (Pflegetexte, Diagnose) über Cloud Functions - **i18n:** Alle Texte liegen in `lib/l10n/app_de.arb`; Englisch ist später nur eine zweite ARB-Datei -- Bundle-ID: vorläufig `dev.planty.app` — wird vor dem ersten TestFlight-Upload final gesetzt +- Bundle-ID: vorläufig `dev.leafittome.app` — wird vor dem ersten TestFlight-Upload final gesetzt diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 8085d49..95c2e20 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } android { - namespace = "dev.planty.planty" + namespace = "dev.leafittome.app" compileSdk = flutter.compileSdkVersion ndkVersion = flutter.ndkVersion @@ -21,7 +21,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId = "dev.planty.planty" + applicationId = "dev.leafittome.app" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = flutter.minSdkVersion diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 862b65e..1a1da22 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ und melde dich mit deinem Google-Konto an. -2. **„Projekt hinzufügen"** → Name: `planty` → Google Analytics kannst du **deaktivieren** (brauchen wir nicht). +2. **„Projekt hinzufügen"** → Name: `leafittome` → Google Analytics kannst du **deaktivieren** (brauchen wir nicht). 3. Nach dem Anlegen bist du in der Projekt-Übersicht. Fertig für heute — Apps registrieren wir gemeinsam per CLI (Schritt 3). ## Schritt 2: Auf den Blaze-Tarif umstellen (machst du, ~5 Minuten) diff --git a/docs/git-forgejo.md b/docs/git-forgejo.md index 08af32f..5965675 100644 --- a/docs/git-forgejo.md +++ b/docs/git-forgejo.md @@ -90,11 +90,11 @@ FORGEJO__server__ROOT_URL=https://git.deine-domain.de/ - **2FA aktivieren:** Einstellungen → Sicherheit → Zwei-Faktor-Authentifizierung (z. B. mit derselben Authenticator-App wie für Coolify). - **Kontrolle Registrierung:** Site Administration → Configuration — „Registrierung deaktiviert" muss aktiv sein (kommt aus der Umgebungsvariable). -- Da Forgejo nur über den Coolify-Proxy (HTTPS) und Port 2222 (Git-SSH mit Schlüssel) erreichbar ist, ist die Angriffsfläche damit klein: kein offenes Web-Registrierungsformular, keine Passwort-Logins über SSH. +- Da Forgejo nur über den Coolify-Proxy (HTTPS) erreichbar ist (Git-SSH auf Port 2222 nur, falls du Variante B nutzt), ist die Angriffsfläche klein: kein offenes Web-Registrierungsformular, keine Passwort-Logins über SSH. -## 5. Repository anlegen und Planty pushen +## 5. Repository anlegen und LeafItToMe pushen -In der Web-UI **Neues Repository** → Name `planty` → **ohne** README/Lizenz initialisieren (das Repo existiert lokal schon). +In der Web-UI **Neues Repository** → Name `leafittome` → **ohne** README/Lizenz initialisieren (das Repo existiert lokal schon). ### Variante A: HTTPS mit Zugriffs-Token (empfohlen — kein extra Port nötig) @@ -103,7 +103,7 @@ In der Web-UI **Neues Repository** → Name `planty` → **ohne** README/Lizenz ```bash cd ~/Documents/Projekte/Planty -git remote add origin https://git.deine-domain.de//planty.git +git remote add origin https://git.deine-domain.de//leafittome.git git push -u origin main ``` @@ -121,10 +121,10 @@ Die Forgejo-Vorlage hat kein Port-Mapping in der Coolify-UI, aber jede Service-V Zusätzlich als Umgebungsvariablen `FORGEJO__server__SSH_DOMAIN=git.deine-domain.de` und `FORGEJO__server__SSH_PORT=2222` setzen (für korrekte Clone-URLs), Port 2222 in der Hetzner-Firewall öffnen, Service neu deployen. Dann in Forgejo unter **Einstellungen → SSH/GPG-Schlüssel** den Inhalt von `~/.ssh/id_ed25519.pub` hinterlegen und als Remote nutzen: ```bash -git remote add origin ssh://git@git.deine-domain.de:2222//planty.git +git remote add origin ssh://git@git.deine-domain.de:2222//leafittome.git ``` -Ab dann genügt nach jedem Arbeitsstand ein `git push`. Test: Die Dateien erscheinen unter `https://git.deine-domain.de//planty`. +Ab dann genügt nach jedem Arbeitsstand ein `git push`. Test: Die Dateien erscheinen unter `https://git.deine-domain.de//leafittome`. ## 6. Backups diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index bee60e7..088f616 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -369,7 +369,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = dev.planty.planty; + PRODUCT_BUNDLE_IDENTIFIER = dev.leafittome.app; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -385,7 +385,7 @@ CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = dev.planty.planty.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = dev.leafittome.app.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -402,7 +402,7 @@ CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = dev.planty.planty.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = dev.leafittome.app.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; @@ -417,7 +417,7 @@ CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = dev.planty.planty.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = dev.leafittome.app.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; @@ -549,7 +549,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = dev.planty.planty; + PRODUCT_BUNDLE_IDENTIFIER = dev.leafittome.app; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -572,7 +572,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = dev.planty.planty; + PRODUCT_BUNDLE_IDENTIFIER = dev.leafittome.app; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index f824b5a..c1e7c1a 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - Planty + LeafItToMe CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -13,7 +13,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - planty + leafittome CFBundlePackageType APPL CFBundleShortVersionString diff --git a/lib/app.dart b/lib/app.dart index a986b5d..7244ebf 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -6,8 +6,8 @@ import 'core/settings/settings_provider.dart'; import 'core/theme/app_theme.dart'; import 'l10n/generated/app_localizations.dart'; -class PlantyApp extends ConsumerWidget { - const PlantyApp({super.key}); +class LeafItToMeApp extends ConsumerWidget { + const LeafItToMeApp({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { diff --git a/lib/core/theme/app_theme.dart b/lib/core/theme/app_theme.dart index dfd1421..2d08e4a 100644 --- a/lib/core/theme/app_theme.dart +++ b/lib/core/theme/app_theme.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -/// Planty-Grün als Ausgangsfarbe für das gesamte Farbschema. +/// LeafItToMe-Grün als Ausgangsfarbe für das gesamte Farbschema. const _seedColor = Color(0xFF2E7D32); ThemeData buildAppTheme({ diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index b73754c..78d3a8b 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -1,6 +1,6 @@ { "@@locale": "de", - "appTitle": "Planty", + "appTitle": "LeafItToMe", "menuToday": "Heute", "menuPlants": "Meine Pflanzen", "menuLocations": "Stellplätze", diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart index f966a14..4fdbfe8 100644 --- a/lib/l10n/generated/app_localizations.dart +++ b/lib/l10n/generated/app_localizations.dart @@ -97,7 +97,7 @@ abstract class AppLocalizations { /// No description provided for @appTitle. /// /// In de, this message translates to: - /// **'Planty'** + /// **'LeafItToMe'** String get appTitle; /// No description provided for @menuToday. diff --git a/lib/l10n/generated/app_localizations_de.dart b/lib/l10n/generated/app_localizations_de.dart index e73daac..ddced7e 100644 --- a/lib/l10n/generated/app_localizations_de.dart +++ b/lib/l10n/generated/app_localizations_de.dart @@ -9,7 +9,7 @@ class AppLocalizationsDe extends AppLocalizations { AppLocalizationsDe([String locale = 'de']) : super(locale); @override - String get appTitle => 'Planty'; + String get appTitle => 'LeafItToMe'; @override String get menuToday => 'Heute'; diff --git a/lib/main.dart b/lib/main.dart index cf9f0cc..10010e4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -11,7 +11,7 @@ Future main() async { runApp( ProviderScope( overrides: [sharedPreferencesProvider.overrideWithValue(prefs)], - child: const PlantyApp(), + child: const LeafItToMeApp(), ), ); } diff --git a/pubspec.yaml b/pubspec.yaml index f2aee31..a2ac678 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ -name: planty -description: "Planty – App zur Verwaltung und Pflege von Pflanzen." +name: leafittome +description: "LeafItToMe – App zur Verwaltung und Pflege von Pflanzen." # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev diff --git a/test/widget_test.dart b/test/widget_test.dart index 6e53435..ea175b4 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:planty/app.dart'; -import 'package:planty/core/settings/settings_provider.dart'; +import 'package:leafittome/app.dart'; +import 'package:leafittome/core/settings/settings_provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; Future buildTestApp() async { @@ -10,7 +10,7 @@ Future buildTestApp() async { final prefs = await SharedPreferences.getInstance(); return ProviderScope( overrides: [sharedPreferencesProvider.overrideWithValue(prefs)], - child: const PlantyApp(), + child: const LeafItToMeApp(), ); }