View is a Mobile Application allowing users to write and read articles or blogs based on their interests
- Email and Password Signin / Signup
- Google Signin / Signup
- Reset Password
- Form Validation
- Contributors / Users and Topics Selection phase after first application access
- For You section: posts are shown based on the current selected filter
- Trending Now section, i.e., most saved posts
- Following section: following users posts
- Posts are loaded as a Stream for instant updates
- More Posts are loaded on end list reaching for better performances
- Posts can be searched by simply typing the name, topic or author of the Post
- Bookmarked Posts are placed in a single spot
- User Profile Customizaion
- User statistics
- Post creation with required fields for button enabling
- Image Upload
- Dark Mode
- Localization for ๐บ๐ธ/๐ฌ๐ง and ๐ฎ๐น languages
- Responsive Design for tablets
- The S.O.L.I.D principles are adhred to make the applications scalable, testable, maintanable, and resilient to change
- The Dependency Injection design pattern is implemented
The application is not fully tested. Main tests like Unit, Integration, and End-To-End are used to analyze testing within the framework
The application is written using the Jetpack Compose toolkit. The main libraries used are the following:
- com.google.firebase:firebase-auth-ktx: Firebase Authentication library for Kotlin
- com.google.firebase:firebase-firestore: Firebase Firestore library.
- com.google.firebase:firebase-storage: Firebase Cloud Storage library.
- com.google.dagger:hilt-android: Hilt for dependency injection in Android
- androidx.hilt:hilt-navigation-compose: Hilt integration with Compose navigation
- org.jetbrains.kotlinx:kotlinx-coroutines-core: Core coroutines functionality
- org.jetbrains.kotlinx:kotlinx-coroutines-android: Coroutines support for Android
- org.jetbrains.kotlinx:kotlinx-coroutines-play-services: Coroutines extension for Google Play services
- io.coil-kt:coil-compose: image loading library for Compose
- androidTestio.mockk:mockk: Mockk framework for Android instrumented tests.
- androidTestandroidx.test.ext:junit: JUnit testing framework for Android.
- androidTestandroidx.compose.ui:ui-test-junit4: Compose UI testing framework
- testcom.google.dagger:hilt-android-testing: Hilt testing libraries.
- code/app : your google-services.json
- code/app/src/main/res/values/strings.xml : your web_client_id
- code/app/src/main/res/values-it/strings.xml : your web_client_id