Skip to content

Latest commit

 

History

36 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Marsad

Marsad is a feature-rich weather app that provides accurate and up-to-date weather information for several locations

Table of Contents

About Marsad

Features

  • Get detailed weather information for your current location, including temperature, wind speed, humidity, and more.
  • Add locations to your favorites list to get the same weather information for them.
  • Schedule weather alerts to get notified when your location has a weather condition of interest.
  • Get weather information about your location using GPS or Google Maps.
  • Change the app's language to Arabic or English, and switch between temperature and wind speed units. And much more!

Screenshots

Mockup

Technologies and Libraries Used

  • MVVM: Model-View-viewModel architecture pattern
  • Repository Pattern: For separating data storage and access from the rest of the app
  • Singleton Pattern: To provides a global point of access to certain classes like db and api classes
  • Retrofit: For making HTTP requests and handling API responses from Open Weather
  • Room: For local data storage and access
  • Kotlin coroutines: For reactive programming and asynchronous data flow
  • Unit testing with JUnit 4 for view models and repositories
  • Local notifications
  • Google Material Design
  • Alarm Manager and Broadcast Receivers
  • Location-based services

Dependencies

Marsad uses the following dependencies:

dependencies {

    implementation 'androidx.core:core-ktx:1.7.0'
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    //Coroutines
    implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1'
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1"
    //Retrofit
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation 'com.google.code.gson:gson:2.10.1'
    implementation 'com.squareup.retrofit2:converter-moshi:2.9.0'
    implementation 'com.squareup.moshi:moshi-kotlin:1.14.0'
    //Room
    implementation "androidx.room:room-ktx:2.5.2"
    implementation "androidx.room:room-runtime:2.5.2"
    implementation 'androidx.preference:preference:1.2.0'
    //DataBinding
    implementation 'androidx.databinding:databinding-common:8.0.2'
    kapt "androidx.room:room-compiler:2.5.2"
    //ViewModel
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
    implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
    //Picasso: For network Images
    implementation 'com.squareup.picasso:picasso:2.71828'
    //MDC
    implementation 'com.google.android.material:material:1.9.0'
    //Splash Screen
    implementation 'androidx.core:core-splashscreen:1.0.1'
    //Navigation
    implementation 'androidx.navigation:navigation-fragment:2.5.3'
    implementation 'androidx.navigation:navigation-ui:2.5.3'
    //Location Service
    implementation 'com.google.android.gms:play-services-location:21.0.1'
    //Maps Service
    implementation 'com.google.android.gms:play-services-maps:18.1.0'
    //Instrumented Testing
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
    /*Unit Testing*/
    //JUnit
    testImplementation 'junit:junit:4.13.2'
    //AndroidX testing
    testImplementation "androidx.test.ext:junit-ktx:1.1.5"
    testImplementation "androidx.test:core-ktx:1.5.0"
    //Robolectric
    testImplementation "org.robolectric:robolectric:4.8"
    //Turbine: For coroutines flows testing
    testImplementation 'app.cash.turbine:turbine:1.0.0'
    //Mockk for creating mock objects
    testImplementation 'io.mockk:mockk:1.12.0'
    //coroutines-test
    testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.1'
    // hamcrest
    testImplementation "org.hamcrest:hamcrest:2.2"
    testImplementation "org.hamcrest:hamcrest-library:2.2"
    // InstantTaskExecutorRule
    testImplementation "androidx.arch.core:core-testing:2.2.0"
}

Installation

To install and run the FoodFlow app, you can follow these steps:

  1. Clone the repository to your local machine:

    git clone https://github.com/mahmoodawd/Marsad.git
    
  2. Open the project in Android Studio.

  3. Build the project using the Gradle build system.

  4. Run the app on an emulator or a physical device.

That's it! The app should now be up and running on your device.

Contact

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages