This application has been converted to Kotlin Multiplatform with Compose Multiplatform for native Android and iOS builds.
This project was migrated from React Native (TypeScript/JavaScript) to Kotlin Native (pure Kotlin multiplatform). Key changes include:
- UI Framework: React Native with TypeScript
- Build: Metro bundler + React Native CLI
- Runtime: JavaScript bridge to native modules
- Platform Support: Android & iOS via React Native
- UI Framework: Compose Multiplatform (Kotlin)
- Build: Gradle with Kotlin Native compiler
- Runtime: Compiled to native machine code (no bridge)
- Platform Support: Android & iOS via Kotlin Native
The project uses a Kotlin Multiplatform structure:
MoneyGeneratorApp/
├── composeApp/ # Shared library module
│ ├── src/
│ │ ├── commonMain/ # Shared UI and business logic
│ │ ├── androidMain/ # Android-specific code
│ │ └── iosMain/ # iOS-specific code
│ └── build.gradle.kts
│
├── androidApp/ # Android application module
│ └── build.gradle.kts
│
├── build.gradle.kts # Root build configuration
└── settings.gradle.kts # Project modules
- JDK 17 or higher
- Kotlin 2.1.20
- Android SDK with:
- Compile SDK: 36
- Min SDK: 24
- Target SDK: 36
- Build Tools: 36.0.0
- Gradle 9.0.0 (via wrapper)
For iOS builds (macOS only):
- Xcode 15.0+
- CocoaPods
./gradlew :androidApp:assembleDebugOutput: androidApp/build/outputs/apk/debug/androidApp-debug.apk
./gradlew :androidApp:assembleReleaseOutput: androidApp/build/outputs/apk/release/androidApp-release.apk
./gradlew :androidApp:installDebug./gradlew :composeApp:linkDebugFrameworkIosSimulatorArm64For physical devices:
./gradlew :composeApp:linkReleaseFrameworkIosArm64- Kotlin 2.1.20: Programming language for all platforms
- Compose Multiplatform 1.8.1: Cross-platform UI framework
- Material 3: Modern design system
- Kotlin Native: Native compilation for iOS
- Android Gradle Plugin 8.5.2: Build system
- Single Codebase: Shared UI and business logic across platforms
- Native Performance: Compiled to machine code (no JavaScript bridge)
- Modern UI: Compose Multiplatform with Material 3
- Type Safety: Full Kotlin type system across all code
The Money Generator app provides:
- Job Boards: Categorized job listings (Local Missions, Digital Services, Shift-Based Ops)
- Smart Workflows: Delivery Mode, Freelance Mode, Support Mode
- Financial Stack: Liquidity, Benefits, Expense Intelligence
- Integration Hub: Unified API Gateway and White-Label Marketplace
- Master Key Architecture: Secure routing and billing
- Monetization Engine: Subscriptions, cost-plus billing, commissions
- Compliance: Enterprise-grade security and audit trails
- Roadmap: MVP → Scale → Enterprise phases
./gradlew clean./gradlew build./gradlew tasksThe TypeScript/React UI has been fully ported to Kotlin Compose:
- React Components → @Composable functions
- StyleSheet → Modifier chains
- useState/useEffect → remember/LaunchedEffect
- Props → Function parameters
- Type definitions → data classes
All business logic, data models, and UI styling have been preserved in the conversion.
./gradlew --stop
rm -rf ~/.gradle/caches/
./gradlew build --refresh-dependenciesEnsure correct SDK versions in Android Studio:
- SDK Platform 36
- Build Tools 36.0.0
If Maven repositories are unavailable:
./gradlew build --offlineSee README_KOTLIN_NATIVE.md for detailed Kotlin Native build instructions.
See README_REACT_NATIVE.md.backup for the original React Native documentation (deprecated).
See BUILD_INSTRUCTIONS.md for the original React Native build documentation (deprecated).
- React Native Website - learn more about React Native.
- Getting Started - an overview of React Native and how setup your environment.
- Learn the Basics - a guided tour of the React Native basics.
- Blog - read the latest official React Native Blog posts.
@facebook/react-native- the Open Source; GitHub repository for React Native.
We ship a minimal backend under /server to keep secrets off-device and centralize integrations.
- Copy
.env.exampleto.envand fill in PayPal/Plaid secrets (only on the backend). - Install server deps:
npm install --prefix server. - Start the API:
npm run dev --prefix server(default port 4000).
- Use a tunneling tool (e.g., ngrok) pointing at
localhost:4000. Configure the public URL in PayPal/Plaid console. - Webhooks are signed (HMAC-SHA256) and idempotent. Duplicate
ids will returnstatus: duplicate. - Correlation IDs and structured logs are emitted for every request; metrics counters available at
/health.
- Unit tests for webhook signature verification + idempotency:
npm test --prefix server.
- Point PayPal webhooks to
/webhooks/paypal. - Configure
PAYPAL_WEBHOOK_SECRETin.envto match your PayPal app. - Subscription flows use backend-only endpoints:
POST /billing/paypal/subscription/create-> returnsapprovalUrl+providerSubscriptionId.- After user approval, call
POST /billing/paypal/subscription/confirmto activate and grant entitlements. POST /billing/paypal/subscription/cancelto terminate.
- Webhooks are idempotent and state transitions are validated server-side; outbound CRM webhooks are queued with retries. See LICENSE file for details.