Skip to content

Mohamed-Emad126/HandinHand

Repository files navigation

About the project

Student Service Zone (HandinHand) is based on two applications. a web application and an android application. Combined, these two applications will provide a social solidarity platform for students to show the spirit of kindness and help each other. Both applications will offer the same functionality and they are both connected via a RESTful api to ensure the consistency of data so the user can reach it no matter what device is being used. Mainly, HandinHand has 4 core resources which are items, hand made products, services and events and two types of users a normal user and a trusted user.

this repository is the android part of the project. you can find the other parts of the project here:

My journey

Before i work on this project my knowledge in android is:(RecyclerView, Room, SQLite).

And after we completed the project i'd love to mention my knowledge now and what i could do with it:

  • Retrofit (I can Deal with requests, responses, Headers, Upload files to the server and Download files from the server).
  • ViewModel and LiveData (i can deal with MVVM very well and now i read about Repository design pattern to use it with MVVM).
  • WorkManager.
  • Ask the permissions as best practices guidlines
  • ConstraintLayout (and now i learn the new version MotionLayout).
  • Material Design Component (MDC).
  • NavigationComponent (as you see in the picture of the Navigation Editor the complex of our project and also i used some shared element animations with it).
  • Pusher to deal with runtime events.
  • some other libraries as: Picasso, Glide, ShapeOfView, PhotoView and others.
  • and also some addition knowledge that i didn't use it in the project but i learned it: Kotlin, Notification, RXJava and Paging library and more...

note that the code might be not perfect we coded the project while we are learning a new technologies or new libraries to use it so you may find a garbage code 😥 and after we finished it or after we learned it in the right way we find it's not good but we put it in our future work to refactore the whole project in both the backend and the android.

Functionality in the app

the user of the app can:

  • Login.
  • Register and upload profile image.
  • Forget password.
  • Reset the password (open reset fragment directly with deep link).
  • Add item, Add event if the user is trusted, add service and add product.
  • Edit the profile.
  • Preview and Download the image of the product , item or event.
  • Book item, interest event, interest service, book product.
  • Ask for trusted account, send verification email.
  • Report item, event, service or product.
  • Real-time notification.
  • Response to the booking requests or close the item.
  • See the response of the owner about the item or product.
  • See the interesters of an event or service.
  • Logout.

3rd party libraries used

Feedback