BinDetective is an Android application that provides features like authentication, data collection, image-based predictions, quizzes, and user profile management. This README serves as a comprehensive guide for developers and contributors.
- Google Sign-In using Firebase Authentication.
- Collects user's name, profile picture, and Gmail address.
- Displays the user's name and profile picture.
- Includes a RecyclerView with clickable items for navigation to detailed articles.
- Fetches and displays collections using the user's Gmail address.
- Allows users to select or capture a photo.
- Uploads the photo to an API for prediction and displays results.
- Retrieves questions and options from an API.
- Provides feedback for correct answers.
- Displays the user's name, profile picture, and a sign-out option.
- MVVM (Model-View-ViewModel) pattern.
- Retrofit handles API communication.
- Data Binding and View Binding enable efficient UI management.
Key dependencies used:
- AndroidX Libraries: Core, AppCompat, Lifecycle, Navigation.
- Firebase: Authentication.
- Retrofit: HTTP requests and JSON parsing.
- Glide and Picasso: Image loading.
- CameraX: Camera integration.
- JUnit and Espresso: Testing frameworks.
POST /users: Create a new user.
GET /articles: Retrieve all articles.
POST /predict: Upload an image for prediction.GET /predict/collections: Retrieve prediction history based on user ID.
GET /quizzes: Retrieve all quizzes.GET /quizzes/{quizId}: Retrieve quiz details by ID.POST /quizzes/{quizId}/submit: Submit answers for a specific quiz.
- api: API-related classes (
ApiService,ApiConfig). - model: Data models (
User,CreateUserResponse,QuizDetailResponse,PredictResponse,ArticleResponseItem, etc.). - ui: UI components like activities and fragments.
- viewmodel: ViewModel classes for managing UI-related