|
1 | | -# 🎬 Cairo Squad – Movies App Preparation |
| 1 | +<p align="center"> |
| 2 | + <img width="480" height="270" alt="cover" src="https://github.com/user-attachments/assets/bc8f4631-309f-4011-b0ac-bccb3dbff243" /> |
| 3 | + <p align="center"> |
| 4 | + Movio is an Android app designed for movie and TV enthusiasts. It lets you discover and explore a vast collection of trending films and shows powered by The Movie Database (TMDb) API. With its modern and intuitive interface, Movio makes finding your next watch simple and enjoyable. Whether you’re in the mood for a blockbuster or a hidden gem, Movio is your go-to companion for everything movies and TV. |
| 5 | + </p> |
| 6 | + <br> |
| 7 | +</p> |
| 8 | + |
| 9 | +## Architecture |
| 10 | +This project is built using Multi-module architecture (modularization by component) |
| 11 | +<img width="1483" height="580" alt="by_component (1)" src="https://github.com/user-attachments/assets/e02974f9-2570-4815-be1e-a789c660af5c" /> |
| 12 | + |
| 13 | + |
| 14 | +## Technologies |
| 15 | +> [!TIP] |
| 16 | +> - Jetpack Compose |
| 17 | +> - Room Database |
| 18 | +> - Paging3 |
| 19 | +> - Dagger/hilt |
| 20 | +> - Firebase (Analytic & Crashlytics) |
| 21 | +> - Firebase ML kit |
| 22 | +> - Retrofit & Okhttp |
| 23 | +> - Coil |
| 24 | +> - Lottie Compose |
| 25 | +> - Compose Navigation 2 |
| 26 | +> - Deep Link |
| 27 | +
|
| 28 | +## Features |
| 29 | +### OnBoarding |
| 30 | +| On Boarding 1 | On Boarding 2 | |
| 31 | +|------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------| |
| 32 | +| <img width="384" height="776" alt="Pixel 9 Pro" src="https://github.com/user-attachments/assets/653718dd-62e1-4c0e-8186-4ed461f08bef" /> | <img width="384" height="776" alt="on boarding 2" src="https://github.com/user-attachments/assets/b7562f07-fab5-4015-8fb6-89ef2a91d5cd" /> | |
| 33 | + |
| 34 | + |
| 35 | +### Authentication |
| 36 | +| Login | Sign up | Forget Password | |
| 37 | +|------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------| |
| 38 | +| <img width="384" height="776" alt="login" src="https://github.com/user-attachments/assets/ba74151f-60b0-4294-8be8-809cc1bde3ca" /> | <img width="384" height="776" alt="signup" src="https://github.com/user-attachments/assets/d1b1d4cd-3fcb-4274-bf69-2a78167e1bb8" /> | <img width="384" height="776" alt="forget password" src="https://github.com/user-attachments/assets/aa73f59e-8c63-4bb6-9d37-c0c70e276fc1" /> | |
| 39 | +> [!Note] |
| 40 | +> |
| 41 | +> - **Login**: So you can login to your TMDB account. |
| 42 | +> - **Sign up**: So you can create new account if you don't have one yet. |
| 43 | +> - **Forget Password**: So you can easily restore your password if you forgot it. |
| 44 | +
|
| 45 | + |
| 46 | +### Home Screen |
| 47 | +| Home Movies | Home Tv Shows | Home Categories | |
| 48 | +|------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------| |
| 49 | +| <img width="384" height="776" alt="home movies" src="https://github.com/user-attachments/assets/155c55a2-2f44-4a46-9be2-833ecd484a38" /> | <img width="384" height="776" alt="home tv shows" src="https://github.com/user-attachments/assets/96c36a18-90b1-47a9-a669-d5343ac283b4" /> | <img width="384" height="776" alt="home categories" src="https://github.com/user-attachments/assets/3aeb7925-3c30-406d-8c91-9616d804f877" /> | |
| 50 | +> [!Note] |
| 51 | +> |
| 52 | +> - **Top Rating**: Displays the top rated movies/tv shows for you. |
| 53 | +> - **Now Playing**: Displays all new movies/tv shows. |
| 54 | +> - **Upcoming**: Displays the new movies/tv shows that are going to be released soon. |
| 55 | +> - **More Recommended**: Displays recommended movies/tv shows based on your taste. |
| 56 | +
|
| 57 | + |
| 58 | +### Search |
| 59 | +| Explore | Search | Search Results | For You | |
| 60 | +|--------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------| |
| 61 | +| <img width="384" height="776" alt="explore" src="https://github.com/user-attachments/assets/2509847a-72fc-4af4-bf33-5d5c817b3704" /> | <img width="384" height="776" alt="search" src="https://github.com/user-attachments/assets/14f28034-222b-403c-8b7c-98461b5b420f" /> | <img width="384" height="776" alt="search results" src="https://github.com/user-attachments/assets/d00dd1d0-f309-4a3f-958c-4c42508d5bf9" /> | <img width="384" height="776" alt="for you" src="https://github.com/user-attachments/assets/cefc37c0-d3ba-47e0-95c4-9040943948a5" /> | |
| 62 | +> [!Note] |
| 63 | +> |
| 64 | +> - Displays personalized movies and tv shows based on your previous watch history. |
| 65 | +> - Recommend some new trending and top rated movies and tv shows. |
| 66 | +> - Auto complete for your search results. |
| 67 | +> - Displays the search results for movies, tv shows and actors. |
| 68 | +
|
| 69 | +### Details Screens |
| 70 | +#### Movie Details: |
| 71 | +> **_Displays all the details about the movie and you can share it with your friends._** |
| 72 | +<table> |
| 73 | + <thead> |
| 74 | + <tr> |
| 75 | + <th>Movies Details 1</th> |
| 76 | + <th>Movie Details 2</th> |
| 77 | + <th>Similar Movies</th> |
| 78 | + </tr> |
| 79 | + </thead> |
| 80 | + <tbody> |
| 81 | + <tr> |
| 82 | + <td> |
| 83 | + <img width="384" height="776" alt="movie details 1" src="https://github.com/user-attachments/assets/0345079a-51f2-4e73-929a-42f63ca5f86a" /> |
| 84 | + </td> |
| 85 | + <td> |
| 86 | + <img width="384" height="776" alt="movie details 2" src="https://github.com/user-attachments/assets/96653772-200e-432f-aceb-af6c6085972b" /> |
| 87 | + </td> |
| 88 | + <td> |
| 89 | + <img width="384" height="776" alt="similar movies" src="https://github.com/user-attachments/assets/72c8c7e0-f291-4e49-b6a1-65fde26f2ea6" /> |
| 90 | + </td> |
| 91 | + </tr> |
| 92 | + </tbody> |
| 93 | +</table> |
| 94 | +
|
| 95 | +> [!Note] |
| 96 | +> |
| 97 | +> - **Basic Details**: Displays the movie details and every thing related to it. |
| 98 | +> - **Similar Movies**: Displays similar movies, the actors whom worked in this project. |
| 99 | +
|
| 100 | + |
| 101 | +#### TV Show Details: |
| 102 | +> **_Displays all the details about the tv show and you can share it with your friends._** |
| 103 | +<table> |
| 104 | + <thead> |
| 105 | + <tr> |
| 106 | + <th>Tv show details 1</th> |
| 107 | + <th>Tv show details 2</th> |
| 108 | + <th>Seasons</th> |
| 109 | + <th>Episodes</th> |
| 110 | + <th>Similar Tv shows</th> |
| 111 | + </tr> |
| 112 | + </thead> |
| 113 | + <tbody> |
| 114 | + <tr> |
| 115 | + <td> |
| 116 | + <img width="384" height="776" alt="tv show details 1" src="https://github.com/user-attachments/assets/34069c2e-4a62-4596-9ea3-5124d29db77e" /> |
| 117 | + </td> |
| 118 | + <td> |
| 119 | + <img width="384" height="776" alt="tv show details 2" src="https://github.com/user-attachments/assets/81848a33-b641-49d8-bd95-c82bee3e1ed4" /> |
| 120 | + </td> |
| 121 | + <td> |
| 122 | + <img width="384" height="776" alt="seasons" src="https://github.com/user-attachments/assets/07a23403-c3f3-4156-baff-b1c09b14d386" /> |
| 123 | + </td> |
| 124 | + <td> |
| 125 | + <img width="384" height="776" alt="episodes" src="https://github.com/user-attachments/assets/88f7323d-868f-4eae-a3fc-6f32bc4c57c1" /> |
| 126 | + </td> |
| 127 | + <td> |
| 128 | + <img width="384" height="776" alt="similar tv shows" src="https://github.com/user-attachments/assets/1c26a317-5ec0-48a7-bdab-8dd041e18e96" /> |
| 129 | + </td> |
| 130 | + </tr> |
| 131 | + </tbody> |
| 132 | +</table> |
| 133 | +
|
| 134 | +> [!Note] |
| 135 | +> |
| 136 | +> - **Basic Details**: Displays the tv show details and every thing related to it. |
| 137 | +> - **Similar Movies**: Displays similar tv shows, the actors whom worked in this project and also it's seasons. |
| 138 | +> - **Seasons**: You can select easily the season you want to watch. |
| 139 | +> - **Episode**: Displays all the episodes that is inside this season. |
| 140 | +
|
| 141 | + |
| 142 | + |
| 143 | +### Library: |
| 144 | +| Library (Guest) | Library (Logged In) | Lists | Favorites | History | |
| 145 | +|--------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------| |
| 146 | +| <img width="384" height="776" alt="library guest" src="https://github.com/user-attachments/assets/3d824337-3c81-4643-8350-51c59ecdd577" /> | <img width="384" height="776" alt="library logged in" src="https://github.com/user-attachments/assets/16e24d73-b185-4e8b-92d8-8ec00d2fca87" /> | <img width="384" height="776" alt="lists" src="https://github.com/user-attachments/assets/1a02fad9-bacb-4849-be9c-d4a943a4a815" /> | <img width="384" height="776" alt="favorites" src="https://github.com/user-attachments/assets/1277192e-4d8c-4a53-be03-e93f616b9563" /> | <img width="384" height="776" alt="history" src="https://github.com/user-attachments/assets/50438e46-fd06-4abf-9cf4-db8c18c777f1" /> | |
| 147 | +> [!Note] |
| 148 | +> |
| 149 | +> - Displays all of your lists, favorite items and your watch history. |
| 150 | +> - Check the lists you have and the items inside of it. |
| 151 | +> - Display all of your favorite movies and tv shows. |
| 152 | +> - Display your watch history for everything you have watched. |
| 153 | +
|
| 154 | + |
| 155 | + |
| 156 | + |
| 157 | +### Profile Screen: |
| 158 | +| Profile (Guest) | Profile (Logged In) | Theme Switch | Language Change | |
| 159 | +|--------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------| |
| 160 | +| <img width="384" height="776" alt="profile guest" src="https://github.com/user-attachments/assets/e5b380b2-8acb-4b26-bffb-ac2c5f59f21c" /> | <img width="384" height="776" alt="profile logged in" src="https://github.com/user-attachments/assets/cf490858-d0b4-4c5b-aa79-d31dfd8b0c50" /> | <img width="384" height="776" alt="change theme" src="https://github.com/user-attachments/assets/d96e373a-7f5d-4bc0-949a-f94e8d1cfa73" /> | <img width="384" height="776" alt="change language" src="https://github.com/user-attachments/assets/352b90f3-fa09-4691-b9bb-b1407c95b167" /> | |
| 161 | +> [!Note] |
| 162 | +> |
| 163 | +> - You displays your image and user name. |
| 164 | +> - Can change the application theme to light or dark. |
| 165 | +> - Can switch easily the language of the application to arabic or english. |
| 166 | +
|
| 167 | + |
| 168 | + |
| 169 | +### My Ratings: |
| 170 | +| Rating Empty | Rating filled | |
| 171 | +|-------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------| |
| 172 | +| <img width="384" height="776" alt="rating empty" src="https://github.com/user-attachments/assets/1b254e9e-0e93-4d87-8956-d2477f96d783" /> | <img width="384" height="776" alt="rating filled" src="https://github.com/user-attachments/assets/40206fd6-abc6-4ddc-934e-3b00abc0b5ca" /> | |
| 173 | +> [!Note] |
| 174 | +> |
| 175 | +> - You can easily know what series or movies you have rated. |
| 176 | +> - Easily to remove the item you don't want by swiping it. |
| 177 | +
|
| 178 | + |
| 179 | + |
| 180 | +### Islamic Image Viewer: |
| 181 | +| Islamic Image Viewer | |
| 182 | +|---------------------------------------------------------------------------------------------------------------------------------------------------| |
| 183 | +| <img width="384" height="776" alt="islamic image viewer" src="https://github.com/user-attachments/assets/2a9af823-1869-4990-a0cf-905b17bbc379" /> | |
| 184 | +> [!Note] |
| 185 | +> |
| 186 | +> - AI-driven content detection aligned with Islamic guidelines |
| 187 | +> - Intelligent image blurring for sensitive material |
| 188 | +> - Coil-based image loading with customizable transformations |
| 189 | +> - Adjustable sensitivity settings |
2 | 190 |
|
3 | | -Welcome to our Movies app project! |
4 | | -We are **Cairo Squad** (part of the Movio team), and this README outlines the setup and responsibilities we've taken on during the preparation phase. |
5 | 191 |
|
6 | 192 | --- |
7 | | - |
8 | | -## ✅ What We've Done |
9 | | - |
10 | | -### 🧱 Modularization: By Component |
11 | | - |
12 | | -We followed the **By Component** structure: |
13 | | -Each part of the app (e.g., networking, UI components, image loader) is separated into reusable modules. |
14 | | - |
15 | | -Examples: |
16 | | -- `core_networking` |
17 | | -- `core_ui` |
18 | | -- `safe_image_viewer` |
19 | | -- `feature_home` |
20 | | - |
21 | | ---- |
22 | | - |
23 | | -### 🎨 Design System: Movio |
24 | | - |
25 | | -As part of the **Movio** team, we implemented the **Movio design system** in a separate `design_system` module. |
26 | | - |
27 | | -✅ Presentation modules **only depend on `design_system`**. |
28 | | -🚫 We did **not** add Material 3 directly to any screen. |
29 | | - |
30 | | ---- |
31 | | - |
32 | | -### 🔥 Firebase Setup |
33 | | - |
34 | | -We integrated the following Firebase tools into the app: |
35 | | - |
36 | | -- App Performance Monitoring |
37 | | -- Analytics |
38 | | -- Crashlytics |
39 | | - |
40 | | ---- |
41 | | - |
42 | | -### ⚙️ CI/CD Setup |
43 | | - |
44 | | -#### ✅ CI (Continuous Integration) |
45 | | - |
46 | | -- Checks that the project **builds** before merging into `develop`. |
47 | | -- Ensures **test coverage is above 80%** — otherwise, merging is blocked. |
48 | | - |
49 | | -#### 🚀 CD (Continuous Deployment) |
50 | | - |
51 | | -- When a PR is approved and merged into `develop`, a new **APK/app bundle** is automatically built and uploaded to **Firebase App Distribution**. |
52 | | - |
53 | | ---- |
54 | | - |
55 | | -## ⭐ Extra Work: Custom Image Viewer |
56 | | - |
57 | | -We created a new module: `safe_image_viewer` |
58 | | - |
59 | | -- Built on top of **Coil** |
60 | | -- Exposes a single `Image` composable |
61 | | -- Uses on-device ML to **blur inappropriate content** (based on Islamic culture) |
62 | | - |
63 | | ---- |
64 | | - |
65 | | -## 🧰 Libraries We Used |
66 | | - |
67 | | -| Purpose | Library | |
68 | | -|----------------------|---------------| |
69 | | -| Networking | ktor | |
70 | | -| Dependency Injection | Dagger & Hilt | |
71 | | -| Navigation | Navigation 2 | |
72 | | -| Image Loading | Coil | |
73 | | - |
74 | | ---- |
75 | | - |
76 | | -## 🧠 Notes |
77 | | - |
78 | | -- We focused only on the required tasks. |
79 | | -- Some teammates didn’t have tasks this week — and that’s totally okay. |
80 | | -- Code is clean, modular, and ready for feature development. |
81 | | - |
82 | | ---- |
83 | | - |
84 | | -### 🏁 We're ready for the next sprint! |
85 | | -**– Cairo Squad 🚀** |
| 193 | +## Installation |
| 194 | +1- Clone the Repository |
| 195 | +``` |
| 196 | +git clone https://github.com/Cairo-Squad/Movio |
| 197 | +``` |
| 198 | +2- open the project in android studio. |
| 199 | +3- Add the required parameters in `local.properties` file. |
| 200 | +**Add required properties** |
| 201 | + In the project root, open or create a `local.properties` file and add the following: |
| 202 | + |
| 203 | + ```properties |
| 204 | + IMAGE_BASE_URL="https://image.tmdb.org/t/p/w500/" |
| 205 | + BASE_URL = "https://api.themoviedb.org/3/" |
| 206 | + API_KEY = "You Own API Key" |
| 207 | + ``` |
| 208 | + > To obtain your `YOUR_API_KEY`: |
| 209 | + > |
| 210 | + > 1. Create an account at [The Movie Database (TMDB)](https://www.themoviedb.org/signup) |
| 211 | + > 2. Go to **Settings → API** in your TMDB account |
| 212 | + > 3. Generate a **API Key** and paste it as `apiKey` above. |
| 213 | +
|
| 214 | +4- Build and run the project on an emulator or physical device. |
| 215 | + |
| 216 | +## Contributors |
| 217 | +<a href="https://github.com/Cairo-Squad/Movio/graphs/contributors"> |
| 218 | + <img src="https://contrib.rocks/image?repo=Cairo-Squad/Movio" /> |
| 219 | +</a> |
0 commit comments