This project was generated with Angular CLI version 18.0.6.
hoseted link: https://entertainment-web-app-kappa-five.vercel.app/
The objective of this project is to build a multi-page entertainment web application that closely matches the provided design. The application should be responsive, user-friendly, and provide a seamless experience across different devices.
Users should be able to:
- View the optimal layout for the app depending on their device's screen size.
- See hover states for all interactive elements on the page.
- Navigate between Home, Movies, TV Series, and Bookmarked Shows pages.
- Add/Remove bookmarks from all movies and TV series.
- Search for relevant shows on all pages.
- Register with a valid email address and password.
- Log in to their account after registration.
-
Responsive Design
- The app should display a responsive design that adjusts the layout based on the user's screen size.
- The app should display a mobile-friendly layout on smaller screens.
- The navigation menu should be fixed to the left for larger screens.
-
Hover States
- All interactive elements (such as buttons and links) should display a hover state when the user hovers over them with their mouse.
-
Navigation
- Users should be able to navigate between Home, Movies, TV Series, and Bookmarked Shows pages by clicking on their respective links in the interface.
- Home: The trending section should scroll sideways to reveal other trending shows. Any search input should search through all shows (i.e., all movies and TV series).
- Movies: This page should only display shows with the "Movie" category. Any search input should search through all movies.
- TV Series: This page should only display shows with the "TV Series" category. Any search input should search through all TV series.
- Bookmarked Shows: This page should display all bookmarked shows from both categories. Any search input should search through all bookmarked shows.
-
Bookmarks
- Users should be able to add a movie or TV series to their bookmarks by clicking on a "Bookmark" button associated with the respective show.
- Users should be able to remove a movie or TV series from their bookmarks by clicking on a "Remove Bookmark" button associated with the respective show.
-
Search
- Users should be able to search for relevant movies or TV series by entering a search query in a search bar provided in the interface.
- The search results should include all movies or TV series that match the user's search query.
-
Registration
- Users should be able to visit the app URL and access the registration page.
- Users should be able to enter a valid email address and password in the registration form.
- If the user tries to submit the registration form with invalid data, form validation should notify the user of the error.
-
Login
- Users should be able to log in to their account after registering with a valid email address and password.
- When a user enters a registered email address and their password used in registering, they should see a prompt which tells them that their login was successful.
- If the user tries to log in with invalid credentials, they should receive an error message notifying them of the invalid login attempt.
- Frontend: TypeScript, Angular
- State Management: NgRx
- Styling: Tailwind CSS
- Testing: Jest
- Other Libraries: ngx-toastr, uuid
-
Clone the repository: git clone https://github.com/omarkarake/entertainment-web-app cd entertainment-web-app
-
Install dependencies: npm install
-
Start the development server: npm start
npm start: Start the development server. npm build: Build the application for production. npm test: Run unit tests using Jest. npm test:watch: Run unit tests in watch mode. npm test:coverage: Run unit tests and generate a coverage report.
entertainment-web-app/ ├── src/ │ ├── app/ │ │ ├── components/ │ │ ├── models/ │ │ ├── services/ │ │ ├── store/ │ │ │ ├── actions/ │ │ │ ├── effects/ │ │ │ ├── reducers/ │ │ │ ├── selectors/ │ │ ├── app.module.ts │ │ ├── app.component.ts │ │ ├── app.component.html │ │ ├── app.component.css │ ├── assets/ │ ├── environments/ │ ├── index.html │ ├── main.ts │ ├── styles.css ├── [package.json] ├── [README.md]
The project includes automated unit and integration tests using Jest. To run the tests, use the following commands:
npm test: Run all tests. npm test:watch: Run tests in watch mode. npm test:coverage: Run tests and generate a coverage report.
This project is licensed under the MIT License. See the LICENSE file for details.
Contributions are welcome! Please read the CONTRIBUTING guidelines before submitting a pull request.