{"id":24983339,"url":"https://github.com/mohamedelkhoreby/watch","last_synced_at":"2026-02-23T04:09:17.150Z","repository":{"id":262438888,"uuid":"884855813","full_name":"mohamedelkhoreby/watch","owner":"mohamedelkhoreby","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-22T04:00:58.000Z","size":150,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-22T05:17:48.698Z","etag":null,"topics":["bloc","clean-architecture","dio","easy-localization","json-serialization","mvvm","provider-state-management","sharedpreferences"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mohamedelkhoreby.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-07T14:08:54.000Z","updated_at":"2025-03-22T04:30:23.000Z","dependencies_parsed_at":"2025-03-22T05:17:49.891Z","dependency_job_id":"6e7c52b4-7f13-4d62-9968-b29a94ee2086","html_url":"https://github.com/mohamedelkhoreby/watch","commit_stats":null,"previous_names":["mohamedelkhoreby/watch"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohamedelkhoreby%2Fwatch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohamedelkhoreby%2Fwatch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohamedelkhoreby%2Fwatch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohamedelkhoreby%2Fwatch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mohamedelkhoreby","download_url":"https://codeload.github.com/mohamedelkhoreby/watch/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246168083,"owners_count":20734390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bloc","clean-architecture","dio","easy-localization","json-serialization","mvvm","provider-state-management","sharedpreferences"],"created_at":"2025-02-04T09:13:52.577Z","updated_at":"2025-10-18T22:15:34.795Z","avatar_url":"https://github.com/mohamedelkhoreby.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Watch App\nThis document outlines the specifications and requirements for the Flutter application task during the internship process. The project involves creating a functional app with registration, login, and movie list features, using the **Parse Platform API** for backend and local database integration.\n\n---\n\n## **Task Overview**\n\nThe application consists of two main screens:\n\n1. **Login Screen**:  \n   - Includes input fields for username and password.\n   - Buttons to either register a new user or log in with existing credentials.\n\n2. **Dashboard Screen**:  \n   - Displays a scrollable list of movies retrieved from a remote database.\n   - Shows details for each movie, such as the title, description, and additional movie information.\n\n---\n\n## **Requirements**\n\n### **1. Login Functionality**\n- Allow user registration with a unique username and password.\n- Enable users to log in using their registered credentials.\n\n### **2. Remote Database Integration**\n- Use the **Parse Platform API** for backend services.\n- Store and retrieve movie list data locally using a caching mechanism.\n\n---\n\n## **Implementation**\n\n### **1. Technology Stack**\n- **Frontend**: Flutter for cross-platform development.\n- **Backend**: Parse Platform API for data fetching and local storage management.\n\n### **2. User Interface**\n- Design the UI as per the provided wireframes.\n- Ensure the app is responsive across various screen sizes.\n\n### **3. Code Quality**\n- Write clean and modular code.\n- Add comments to explain the purpose of functions and components.\n\n---\n\n## **Features**\n\n### **Main Functionality**\n1. **Movies List**:\n   - Fetch and display movies with pagination.\n2. **Details Navigation**:\n   - View detailed information about a movie.\n3. **Pagination**:\n   - Navigate through pages of movies using arrow buttons.\n\n---\n\n## **Architecture Overview**\n\n### **1. Login to MainView Navigation**\n- Upon successful login, the app navigates to `MainView` using a custom router.\n\n### **2. Dependency Injection Setup**\n- Use `initHomeModule()` to set up necessary dependencies, such as `HomeUseCase` and `MainViewModel`.\n\n### **3. State Management with Provider**\n- Use `ChangeNotifierProvider` to manage state updates and notify UI components reactively.\n\n### **4. Data Fetching Flow**\n1. **Start Method**:\n   - Initiates data loading in `MainViewModel`.\n2. **Repository Pattern**:\n   - Fetch data from the local database first. If unavailable, retrieve it from the remote API via `AppServiceClient`.\n\n### **5. Error Handling**\n- Handle API response errors gracefully using the `Either` type.\n\n---\n\n## **Packages Used**\n\n| Package                     | Version | Purpose                                                                 |\n|-----------------------------|---------|-------------------------------------------------------------------------|\n| **Lottie**                  | 3.1.3   | Provides animated illustrations.                                       |\n| **Freezed Annotation**      | 2.4.4   | Helps create immutable data models.                                    |\n| **Dartz**                   | 0.10.1  | Functional programming utilities for safe data handling.               |\n| **Json Annotation**         | 4.9.0   | Facilitates JSON serialization.                                        |\n| **Internet Connection Checker** | 1.0.0+1 | Checks for active internet connections.                                |\n| **Dio**                     | 5.7.0   | Handles HTTP requests.                                                 |\n| **Pretty Dio Logger**       | 1.4.0   | Logs API requests for debugging.                                       |\n| **Get It**                  | 8.0.2   | Service locator for dependency injection.                              |\n| **Flutter Phoenix**         | 1.1.1   | Allows app restarts for session management.                            |\n| **Provider**                | 6.1.2   | Simplifies state management.                                           |\n| **Shared Preferences**      | 2.3.3   | Stores simple key-value pairs locally.                                 |\n| **Easy Localization**       | 3.0.7   | Adds localization and internationalization.                            |\n\n---\n\n## **Development Tools**\n\n| Tool                     | Version          |\n|--------------------------|------------------|\n| **Flutter**              | 3.24.3 (stable) |\n| **Dart SDK**             | 3.3.4 (stable)  |\n| **Android SDK**          | 34.0.0          |\n| **Android Studio**       | 2024.2          |\n| **VS Code**              | 1.95.2          |\n| **OpenJDK**              | 17.0.8.1        |\n| **Gradle**               | 8.4             |\n| **OS**                   | Windows 10      |\n\n---\n\n## **Resources**\n\n- [Parse Platform API for Flutter Documentation](https://api.themoviedb.org/3)  \n- Official Flutter Documentation: [flutter.dev](https://flutter.dev)  \n\n---\n\nThis document ensures clarity in the implementation and provides a structured approach to completing the task efficiently.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohamedelkhoreby%2Fwatch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmohamedelkhoreby%2Fwatch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohamedelkhoreby%2Fwatch/lists"}