bounswe / bounswe2023group2

Disaster Response Platform
10 stars 2 forks source link

Decide on what technologies are going to be used for the Mobile development #272

Closed rburaksaritas closed 9 months ago

rburaksaritas commented 9 months ago

Issue Description

Mobile team must decide on the technologies to be used during the project development.

Deadline of the Issue

10.10.2023

Reviewer

None

egecans commented 9 months ago

In my opinion, the mobile part of the project should be done with native programming. Therefore, we should develop the project for Android using Kotlin and Java languages. Kotlin is a popular and easy-to-learn language recommended by Google for Android app developers. Additionally, since it originated from Java, its syntax is quite similar to Java. Furthermore, both languages run on the Java Virtual Machine (JVM), so we have the opportunity to write certain parts of the project in Java and certain parts in Kotlin. This is advantageous for us as most of us are familiar with Java. Many popular Android apps are also developed in the native language Kotlin to achieve better performance. Examples of these include newer companies like Netflix, Airbnb, and Uber. Moreover, since I have been developing and providing support for Android projects with Kotlin for about 1.5 years, I can assist beginners on this path and recommend courses.

Technologies we can use when developing the project for Android with Kotlin: Code Structure: MVVM Local DB (for saving user's actions when there is no connection): Room Network Library: Retrofit AsyncTasks: Coroutine UI: LiveData, XML (Jetpack Compose if requested) Dependency Injection: Dagger Hilt

mehmetkuzu commented 9 months ago

Is it possible or simple to have the app for IOS?

In my opinion, the mobile part of the project should be done with native programming. Therefore, we should develop the project for Android using Kotlin and Java languages. Kotlin is a popular and easy-to-learn language recommended by Google for Android app developers. Additionally, since it originated from Java, its syntax is quite similar to Java. Furthermore, both languages run on the Java Virtual Machine (JVM), so we have the opportunity to write certain parts of the project in Java and certain parts in Kotlin. This is advantageous for us as most of us are familiar with Java. Many popular Android apps are also developed in the native language Kotlin to achieve better performance. Examples of these include newer companies like Netflix, Airbnb, and Uber. Moreover, since I have been developing and providing support for Android projects with Kotlin for about 1.5 years, I can assist beginners on this path and recommend courses.

Technologies we can use when developing the project for Android with Kotlin: Code Structure: MVVM Local DB (for saving user's actions when there is no connection): Room Network Library: Retrofit AsyncTasks: Coroutine UI: LiveData, XML (Jetpack Compose if requested) Dependency Injection: Dagger Hilt

mehmetkuzu commented 9 months ago

https://kotlinlang.org/docs/multiplatform-mobile-getting-started.html

Says here: Kotlin multiplatform is in beta. (I do not oppose to use Kotlin btw)

cahidenes commented 9 months ago

We can ask if cross-platform is OK. Other than that, Kotlin-Java seems to be the only option. For other technologies, I have no clue.

mehmetkuzu commented 9 months ago

I checked the requirements. Says: 2.1.1. The application shall be available as a native website via modern web browsers. (Chrome, Edge, Firefox, Opera, Safari) 2.1.2. The application shall be available as a native mobile application on Android platforms.

So regarding the requirements I recall the cross-platform idea. (Should recheck with the project owner though. Is it really OK to have an Android-only application, without IOS support?)

And yes. Agree on Kotlin.

HasanBingolbali commented 9 months ago

I have been developing native mobile apps(mostly iOS side) independently more than 1.5 years. My suggestions are using Kotlin and Jetpack Compose for UI library. If you use declarative UI, we will be able to support variety of screens including tablets. For other utilities we can use built in features of Kotlin. For Local storage, we can use file system and we can network through built-in functions.

egecans commented 9 months ago

We decided to proceed with Kotlin in the meeting as we discussed here.