| 1. Overview | 6. Actions |
| 2. Technologies | 7. Profile |
| 3. Features | 8. Permissions |
| 4. Authentication | 9. Dependencies |
| 5. Homepage | 10. Demo |
Welfare is an application designed as a money-free sharing platform, facilitating the exchange of unused items among individuals in need. Users can offer their surplus items and also discover items they require, fostering a sustainable approach to resource utilization. By promoting the exchange of second-hand goods using application points, the app contributes to environmental protection, waste reduction, and community sharing. Our project participated in the GDSC Solution Challenge 2024, aiming to address the United Nations' Sustainable Development Goals (SDGs), specifically targeting No Poverty and Responsible Consumption & Production.
| Technology | Description |
|---|---|
| Google Maps | Integration for location-based services. |
| Retrofit | Used for handling RESTful API requests. |
| Room | Android SQLite database library for local data storage. |
| MVVM Architecture | Adopted to ensure a clear separation of concerns and facilitate maintainability and scalability. |
-
Compatibility with Our Website: We ensure seamless login and registration processes that are compatible with our website. It's essential to capture your real-time location during registration. Products near your location will be displayed on the homepage to facilitate easy shopping. We aim to make product browsing easier by allowing you to filter products by tags such as "Phone, Dress, Guitar." You can preview all categories on a separate screen by clicking on the category selection icon at the top left.
-
Interactive Homepage: Upon successful login, products available for lottery based on your city will be listed on the homepage. You can also check the status of your recent lottery entries. Additionally, you can search for products by tags, and by selecting a category, you can view products in that category.
-
Product Details Page: When viewing a product, you can see its description, the cost in points needed to participate in the lottery, the current number of participants, the minimum number of participants required for the lottery to start, the seller's rating, and the detailed Google Maps location. You can choose to participate in the lottery or add the product to your favorites without participating.
-
Actions Section: In this section, you can view all lottery entries you've participated in and their statuses. If you're a seller, you can also view a list of all your sales, along with their statuses. You can add new products by clicking on the plus icon at the bottom.
-
Product Management: When adding a new product, you can specify its type and category by selecting predefined tags. You can then write the product description. After selecting product photos from your phone's gallery, the product's location and address will be automatically determined using the phone's location data.
-
Profile Section: Here, you can view your profile information, including your average seller rating. You can also update your information, change your password, and update your location. Additionally, you can view and manage your favorites list and donations.
-
Donations: In the Donations section, brands can display special product campaigns where users can donate products in bulk. We plan to incorporate this feature into the homepage as a campaign in the future.
-
Logout: Finally, you can log out of the application by clicking on the logout button.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
dependencies {
implementation("androidx.core:core-ktx:1.9.0")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.11.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
implementation("com.google.android.gms:play-services-location:21.1.0")
implementation("com.google.android.gms:play-services-maps:18.2.0")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
val nav_version = "2.7.6"
implementation("androidx.navigation:navigation-fragment-ktx:$nav_version")
implementation("androidx.navigation:navigation-ui-ktx:$nav_version")
implementation ("com.github.bumptech.glide:glide:4.16.0")
val room_version = "2.6.1"
implementation("androidx.room:room-runtime:$room_version")
annotationProcessor("androidx.room:room-compiler:$room_version")
ksp("androidx.room:room-compiler:$room_version")
implementation ("androidx.room:room-ktx:$room_version")
implementation ("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
implementation("com.intuit.sdp:sdp-android:1.0.6")
implementation("pl.droidsonroids.gif:android-gif-drawable:1.2.17")
implementation("com.squareup.picasso:picasso:2.71828")
implementation("com.github.bumptech.glide:glide:4.15.1")
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation ("com.squareup.retrofit2:converter-gson:2.9.0")
implementation("com.google.android.gms:play-services-maps:18.2.0")
implementation("com.google.android.gms:play-services-location:18.0.0")
}















