PlantGameGroup / PlantGame

1 stars 1 forks source link

Deciding on SDKs to use #2

Closed johanneshoelker closed 11 months ago

johanneshoelker commented 11 months ago

Maybe Flutter and Dart for FrontEnd evtl Firebase or Superbase for Backend

johanneshoelker commented 11 months ago

Flutter:

Advantages:

Cross-platform development: Write code once and deploy it on both Android and iOs

Fast development: Flutter's hot reload feature allows for rapid iteration and debugging.

Rich set of customizable widgets for building beautiful and consistent UIs

Strong community support and a growing ecosystem of packages and plugins

Considerations:

Kotlin:

Advantages:

Direct access to all Android APIs and features. Excellent performance and smaller app size compared to cross-platform solutions. Strong integration with Android Studio and official Android development tools. Large developer community and extensive resources.

Considerations:

If you want to target both Android and iOS, you'll need to develop a separate iOS app using Swift or Objective-C. Development may be slower compared to Flutter due to more code for UI and platform-specific tasks. Kotlin is specific to Android development, so it won't be directly applicable for iOS or web development.

React Native:

If you're already familiar with JavaScript, React Native is another cross-platform option with a large community.

Advantages

  1. Cross-Platform Development: One of the most significant advantages of React Native is its ability to write code once and deploy it on both iOS and Android. This reduces development time and costs.

  2. Reusability: React Native allows you to reuse a significant portion of your codebase across platforms. Typically, only the UI components need to be platform-specific.

  3. Performance: React Native's architecture enables near-native performance by rendering components directly to native APIs, resulting in smooth animations and a responsive user interface.

  4. Large Community: React Native has a vast and active community, which means you can find plenty of resources, libraries, and third-party packages to accelerate development.

  5. Hot Reloading: The hot reload feature allows developers to see changes in the code reflected instantly in the running app, making the development process faster and more efficient.

  6. JavaScript: If your team is already familiar with JavaScript, transitioning to React Native is relatively straightforward.

  7. Access to Native Modules: You can access native modules or write custom native code in Java, Objective-C, or Swift if you need to use platform-specific features or libraries.

  8. Supported by Facebook: React Native is developed and maintained by Facebook, ensuring ongoing updates and improvements.

Considerations for React Native:

  1. Native Performance Limitations: While React Native offers excellent performance, there may still be situations where you require the performance of a fully native app, especially for computationally intensive tasks.

  2. Platform-Specific Code: Although you can share a lot of code, some parts of your app will need platform-specific code for features not supported by React Native out of the box.

  3. Third-Party Library Compatibility: While React Native has a rich ecosystem of libraries, you may encounter situations where a critical third-party library lacks support for React Native.

  4. Learning Curve: While JavaScript developers can quickly adapt to React Native, there is still a learning curve for understanding the framework's architecture and best practices.

  5. Debugging Challenges: Debugging can be more complex in React Native, especially when dealing with platform-specific issues. However, tools like React Native Debugger can help.

  6. Overhead from Bridge: Communication between JavaScript and native code is managed by a bridge, which can introduce a slight performance overhead for certain operations.

  7. Limited Access to Advanced Features: If your app relies heavily on advanced platform-specific features, you may face limitations when using React Native.

  8. Long-Term Maintenance: As React Native evolves, you may need to keep your project up to date with new releases, which can require additional effort for long-term maintenance.

johanneshoelker commented 11 months ago

Votes: Flutter: 2 React Native: 1 Undecided: 1

So we use Flutter: https://docs.flutter.dev/get-started/install