+
+
+
+
+
diff --git a/MovieVerse-Frontend/README.md b/MovieVerse-Frontend/README.md
index cb6f9620..08035ab6 100644
--- a/MovieVerse-Frontend/README.md
+++ b/MovieVerse-Frontend/README.md
@@ -2,6 +2,22 @@
Welcome to the MovieVerse app, your ultimate guide to the world of movies! This application is designed to help users explore and learn about their favorite movies, directors, actors, and more. Dive into an immersive experience with our comprehensive directory structure.
+## Table of Contents
+- [Overview](#overview)
+- [Directory Structure](#directory-structure)
+ - [CSS Directory - `css`](#css-directory---css)
+ - [HTML Directory - `html`](#html-directory---html)
+ - [JS Directory - `js`](#js-directory---js)
+ - [React Directory - `react`](#react-directory---react)
+ - [Tests Directory - `tests`](#tests-directory---tests)
+- [Getting Started](#getting-started)
+- [Contributing](#contributing)
+- [License](#license)
+
+## Overview
+
+The `MovieVerse-Frontend` directory contains the frontend codebase for the MovieVerse application. This directory includes all the necessary files, scripts, and stylesheets to create an interactive and engaging user experience. The frontend is built using a combination of HTML, CSS, Vue, JavaScript, and React components to provide a seamless browsing experience for users.
+
## Directory Structure
The MovieVerse app's `MovieVerse-Frontend` directory is organized into four primary directories: `css`, `html`, `js`, and `react`. Each directory contains specific files that contribute to the functionality and appearance of the app. Here's a detailed overview:
@@ -108,10 +124,30 @@ The tests directory contains a collection of test scripts and suites for the `Mo
To get started with MovieVerse:
-1. **Clone the repository**: Use Git to clone the app to your local machine.
-2. **Navigate to the app directory**: Change your directory to the MovieVerse folder.
-3. **Install dependencies**: If the app requires any dependencies, install them via your package manager.
-4. **Run the app**: Start the app on your local server and navigate to the appropriate port to view it.
+1. **Clone the repository**: Use Git to clone the app to your local machine:
+ ```bash
+ git clone https://github.com/hoangsonww/The-MovieVerse-Database.git
+ ```
+2. **Navigate to the app directory**: Change your directory to the `MovieVerse-Frontend` folder:
+ ```bash
+ cd The-MovieVerse-Database/MovieVerse-Frontend
+ ```
+3. **Install dependencies**: Install the necessary dependencies for the app using npm:
+ ```bash
+ npm install
+ ```
+ Or using yarn:
+ ```bash
+ yarn install
+ ```
+4. **Run the app**: Start the frontend server on your local server and navigate to the appropriate port to view it:
+ ```bash
+ npm start
+ ```
+ Or using yarn:
+ ```bash
+ yarn start
+ ```
5. **Explore the app**: Interact with the app's features, pages, and functionalities to get a feel for how it works.
## Contributing
@@ -124,4 +160,4 @@ This project is licensed under MIT license. Refer to the `LICENSE` file in each
---
-Enjoy exploring the MovieVerse and delve into the fascinating world of cinema!
+Enjoy exploring the MovieVerse and delve into the fascinating world of cinema! 🎬🍿
diff --git a/MovieVerse-Frontend/html/index.ejs b/MovieVerse-Frontend/html/index.ejs
deleted file mode 100644
index 3689fa2f..00000000
--- a/MovieVerse-Frontend/html/index.ejs
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/MovieVerse-Middleware/.idea/.gitignore b/MovieVerse-Middleware/.idea/.gitignore
index 13566b81..b4d61126 100644
--- a/MovieVerse-Middleware/.idea/.gitignore
+++ b/MovieVerse-Middleware/.idea/.gitignore
@@ -1,6 +1,5 @@
# Default ignored files
/shelf/
-/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
diff --git a/MovieVerse-Middleware/.idea/workspace.xml b/MovieVerse-Middleware/.idea/workspace.xml
new file mode 100644
index 00000000..7399e407
--- /dev/null
+++ b/MovieVerse-Middleware/.idea/workspace.xml
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "associatedIndex": 7
+}
+
+
+
+
+
+ {
+ "keyToString": {
+ "ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "SHARE_PROJECT_CONFIGURATION_FILES": "true",
+ "git-widget-placeholder": "main-deployment-branch",
+ "last_opened_file_path": "/Users/davidnguyen/WebstormProjects/The-MovieVerse-Database/MovieVerse-Middleware",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "settings.editor.selected.configurable": "reference.settings.ide.settings.new.ui",
+ "vue.rearranger.settings.migration": "true"
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1718791887479
+
+
+ 1718791887479
+
+
+
+
+ 1718791992500
+
+
+
+ 1718791992500
+
+
+
+ 1718792203778
+
+
+
+ 1718792203778
+
+
+
+ 1718792314582
+
+
+
+ 1718792314582
+
+
+
+ 1718792336956
+
+
+
+ 1718792336956
+
+
+
+ 1718792346693
+
+
+
+ 1718792346693
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MovieVerse-Mobile/package.json b/MovieVerse-Mobile/package.json
index 8e643d5a..d3d95de9 100644
--- a/MovieVerse-Mobile/package.json
+++ b/MovieVerse-Mobile/package.json
@@ -27,4 +27,4 @@
"devDependencies": {
"cordova-plugin-statusbar": "^4.0.0"
}
-}
+}
\ No newline at end of file
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/.flake8 b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/.flake8
deleted file mode 100644
index e3f299bb..00000000
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/.flake8
+++ /dev/null
@@ -1,27 +0,0 @@
-[flake8]
-# Ignore certain error codes
-ignore =
- E501, # Line too long
- W503, # Line break occurred before a binary operator (conflicts with W504)
-
-# Exclude files or directories
-exclude =
- .git,
- __pycache__,
- migrations,
- settings.py,
-
-# Set maximum line length allowed
-max-line-length = 120
-
-# Set the complexity threshold
-max-complexity = 10
-
-# Include warning for TODO comments
-enable-extensions = T100
-
-# Show source code for each error
-show-source = True
-
-# Count the total number of errors
-count = True
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/Dockerfile b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/Dockerfile
deleted file mode 100644
index 42dab7d1..00000000
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/Dockerfile
+++ /dev/null
@@ -1,41 +0,0 @@
-# ---- Base Node ----
-FROM node:14 AS base
-WORKDIR /app
-COPY package*.json ./
-
-# ---- Dependencies ----
-FROM base AS dependencies
-RUN npm set progress=false && npm config set depth 0
-RUN npm install --only=production
-COPY . .
-RUN npm run build
-
-# ---- Copy Frontend Artifacts ----
-# Separate stage for extracting frontend build artifacts
-FROM dependencies AS frontend-artifacts
-RUN mkdir -p /app/public
-RUN cp -R build/ /app/public/
-
-# ---- Python Base ----
-FROM python:3.8 AS python-base
-WORKDIR /app
-COPY --from=frontend-artifacts /app/public /app/public
-COPY backend/requirements.txt /app/
-RUN pip install --no-cache-dir -r requirements.txt
-
-# ---- Copy Backend Code ----
-FROM python-base AS backend-code
-COPY backend /app
-
-# ---- Release with Gunicorn ----
-FROM backend-code AS release
-# Set environment variables
-ENV PYTHONUNBUFFERED=1 \
- PYTHONDONTWRITEBYTECODE=1 \
- PATH="/app:${PATH}"
-
-# Expose port for the backend
-EXPOSE 8080
-
-# Start Gunicorn
-CMD ["gunicorn", "--bind", "0.0.0.0:8080", "--workers", "3", "--threads", "3", "TheMovieVerseApp.wsgi:application"]
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/LICENSE b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/LICENSE
deleted file mode 100644
index 19bed0c9..00000000
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/LICENSE
+++ /dev/null
@@ -1,151 +0,0 @@
-Creative Commons Attribution-NonCommercial 4.0 International Public License
-
-By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
-
-Section 1 – Definitions.
-
-a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
-
-b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
-
-c. BY-NC Compatible License means a license listed at https://creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License.
-
-d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
-
-e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
-
-f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
-
-g. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
-
-h. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
-
-i. Licensor means the individual(s) or entity(ies) granting rights under this Public License.
-
-j. NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.
-
-k. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
-
-l. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
-
-m. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
-
-Section 2 – Scope.
-
-a. License grant.
-
- 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
-
- a. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and
-
- b. produce, reproduce, and Share Adapted Material for NonCommercial purposes only.
-
- 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
-
- 3. Term. The term of this Public License is specified in Section 6(a).
-
- 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
-
- 5. Downstream recipients.
-
- a. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
-
- b. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
-
- 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
-
-b. Other rights.
-
- 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
-
- 2. Patent and trademark rights are not licensed under this Public License.
-
- 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes.
-
-Section 3 – License Conditions.
-
-Your exercise of the Licensed Rights is expressly made subject to the following conditions.
-
-a. Attribution.
-
- 1. If You Share the Licensed Material (including in modified form), You must:
-
- a. retain the following if it is supplied by the Licensor with the Licensed Material:
-
- i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
-
- ii. a copyright notice;
-
- iii. a notice that refers to this Public License;
-
- iv. a notice that refers to the disclaimer of warranties;
-
- v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
-
- b. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
-
- c. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
-
- 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
-
- 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
-
-b. ShareAlike.
-
- 1. In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply.
-
- a. The Adapter's License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-NC Compatible License.
-
- b. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material.
-
- c. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply.
-
-Section 4 – Sui Generis Database Rights.
-
-Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
-
-a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only;
-
-b. if You include all or a substantial portion of the database contents in a database in which You have Copyright or Sui Generis Database Rights, then the database in which You have Copyright or Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
-
-c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
-
-Section 5 – Disclaimer of Warranties and Limitation of Liability.
-
-a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
-
-b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
-
-c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
-
-Section 6 – Term and Termination.
-
-a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
-
-b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
-
- 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
-
- 2. upon express reinstatement by the Licensor.
-
- For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
-
-c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
-
-d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
-
-Section 7 – Other Terms and Conditions.
-
-a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
-
-b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
-
-Section 8 – Interpretation.
-
-a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
-
-b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
-
-c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
-
-d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/README.md b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/README.md
deleted file mode 100644
index cf32d182..00000000
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/README.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# The MovieVerse - `MovieVerse-APIs` Directory
-
-Welcome to the `MovieVerse-APIs` directory of the MovieVerse App! This directory is an essential part of the application, containing various files that define and interact with the web APIs. Below is a detailed overview of each file and its role in the project.
-
----
-
-## Overview
-
-The `MovieVerse-APIs` directory plays a crucial role in interfacing with the web services and APIs that power the MovieVerse application. This directory contains files that help test, define, and document the API endpoints.
-
-### api.http
-
-This file contains HTTP requests for testing the web APIs. It is used to send requests to endpoints, allowing developers to test and debug APIs directly within an IDE like Visual Studio Code.
-
-### Dockerfile
-
-A Dockerfile that defines the environment for running the MovieVerse API tests. It specifies the base image, dependencies, and commands needed to execute the tests in a containerized environment.
-
-### http-client.env.json
-
-A configuration file for setting up environment variables used in the `api.http` file. This might include variables like base URL, API keys, or any other common data required in HTTP requests.
-
-### http-client.private.env.json
-
-Similar to `http-client.env.json`, but used for storing private or sensitive information like API keys, secrets, and tokens. This file should not be checked into version control to maintain security.
-
-### movieverse-openapi.yaml
-
-An OpenAPI (formerly Swagger) specification file that provides a standard, language-agnostic interface to RESTful APIs. It is used to define the MovieVerse API's structure, including endpoints, operations, and parameters.
-
-### api_test_suite.py
-
-This file contains a test suite for the MovieVerse APIs. It uses the `requests` library to send HTTP requests to the API endpoints and validate the responses. The test suite can be run to ensure that the API is functioning as expected.
-
-### sample_initial_api_response.json
-
-A sample JSON file containing the initial response from the API. This file can be used to understand the structure of the API response and develop the application accordingly.
-
-### package.json
-
-A `package.json` file that defines the dependencies and scripts needed to run the API tests. It specifies the required packages and commands for executing the tests.
-
-### .flake8
-
-A configuration file for the `flake8` linter, which checks the code for style and quality issues. It defines the rules and settings for the linter to ensure consistent code quality across the project.
-
-## Using these Files
-
-To utilize these files effectively, familiarity with API testing and OpenAPI specifications is recommended. Ensure that sensitive information in `.env` files is properly secured and not exposed in public repositories.
-
-## Customization and Adaptation
-
-These configurations may need adjustments to align with specific API endpoints, parameters, or security requirements of the project. Review and update these files as your API evolves.
-
----
\ No newline at end of file
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/api.http b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/api.http
deleted file mode 100644
index 87c2d17c..00000000
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/api.http
+++ /dev/null
@@ -1,54 +0,0 @@
-@host = http://localhost:8000
-@authToken = 123xyz
-
-### List Movies
-GET {{host}}/api/movies/
-Accept: application/json
-
-### Get Movie Details
-GET {{host}}/api/movies/1/
-Accept: application/json
-
-### User Login
-POST {{host}}/api/auth/login/
-Content-Type: application/json
-
-{
- "username": "user",
- "password": "password"
-}
-
-### User Registration
-POST {{host}}/api/auth/register/
-Content-Type: application/json
-
-{
- "username": "new_user",
- "email": "new_user@movie-verse.com",
- "password": "new_password"
-}
-
-### Add Movie Review
-POST {{host}}/api/reviews/
-Authorization: Bearer {{authToken}}
-Content-Type: application/json
-
-{
- "movie_id": 1,
- "review": "Great movie!",
- "rating": 5
-}
-
-### Update Movie Review
-PUT {{host}}/api/reviews/1/
-Authorization: Bearer {{authToken}}
-Content-Type: application/json
-
-{
- "review": "Updated review text",
- "rating": 4
-}
-
-### Delete Movie Review
-DELETE {{host}}/api/reviews/1/
-Authorization: Bearer {{authToken}}
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/api_test_suite.py b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/api_test_suite.py
deleted file mode 100644
index 36d60986..00000000
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/api_test_suite.py
+++ /dev/null
@@ -1,96 +0,0 @@
-import requests
-
-# Configuration
-BASE_URL = "http://localhost:8000"
-AUTH_TOKEN = "123xyz"
-
-
-# Helper Functions
-def get_headers(auth=False, json_content=True):
- headers = {}
- if auth:
- headers["Authorization"] = f"Bearer {AUTH_TOKEN}"
- if json_content:
- headers["Content-Type"] = "application/json"
- return headers
-
-
-def login():
- url = f"{BASE_URL}/api/auth/login/"
- data = {"username": "user", "password": "password"}
- response = requests.post(url, json=data, headers=get_headers())
- return response.json().get("token")
-
-
-# Test Cases
-def test_list_movies():
- url = f"{BASE_URL}/api/movies/"
- response = requests.get(url, headers=get_headers())
- assert response.status_code == 200
- print("Test List Movies: Passed")
-
-
-def test_get_movie_details():
- url = f"{BASE_URL}/api/movies/1/"
- response = requests.get(url, headers=get_headers())
- assert response.status_code == 200
- print("Test Get Movie Details: Passed")
-
-
-def test_user_login():
- token = login()
- assert token is not None
- print("Test User Login: Passed")
-
-
-def test_user_registration():
- url = f"{BASE_URL}/api/auth/register/"
- data = {
- "username": "new_user",
- "email": "new_user@movie-verse.com",
- "password": "new_password"
- }
- response = requests.post(url, json=data, headers=get_headers())
- assert response.status_code == 201
- print("Test User Registration: Passed")
-
-
-def test_add_movie_review():
- url = f"{BASE_URL}/api/reviews/"
- data = {
- "movie_id": 1,
- "review": "Great movie!",
- "rating": 5
- }
- response = requests.post(url, json=data, headers=get_headers(auth=True))
- assert response.status_code == 201
- print("Test Add Movie Review: Passed")
-
-
-def test_update_movie_review():
- url = f"{BASE_URL}/api/reviews/1/"
- data = {
- "review": "Updated review text",
- "rating": 4
- }
- response = requests.put(url, json=data, headers=get_headers(auth=True))
- assert response.status_code == 200
- print("Test Update Movie Review: Passed")
-
-
-def test_delete_movie_review():
- url = f"{BASE_URL}/api/reviews/1/"
- response = requests.delete(url, headers=get_headers(auth=True))
- assert response.status_code == 204
- print("Test Delete Movie Review: Passed")
-
-
-# Main Execution
-if __name__ == "__main__":
- test_list_movies()
- test_get_movie_details()
- test_user_login()
- test_user_registration()
- test_add_movie_review()
- test_update_movie_review()
- test_delete_movie_review()
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/config.yml b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/config.yml
deleted file mode 100644
index b7d996e0..00000000
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/config.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-app:
- name: The MovieVerse
- description: "Explore The MovieVerse to discover and learn about your favorite movies, directors, actors, and more."
- language: en
- theme_color: "#7378c5"
- author: Son Nguyen
-
-meta:
- viewport: "width=device-width, initial-scale=1.0"
- robots: "index, follow"
- rating: "General"
- revisit_after: "3 days"
- distribution: "global"
- keywords: "movies, film guide, directors, actors, movie genres, cinema, film reviews"
-
-og:
- title: "The MovieVerse - Your Ultimate Movie Guide"
- type: website
- url: "https://movie-verse.com/"
- image: "https://movie-verse.com/images/image.png"
- description: "Explore The MovieVerse to discover and learn about your favorite movies, directors, actors, and more."
- locale: en_US
- site_name: The MovieVerse
-
-twitter:
- card: "https://movie-verse.com/images/image.png"
- title: "The MovieVerse - Your Ultimate Movie Guide"
- description: "Explore The MovieVerse to discover and learn about your favorite movies, directors, actors, and more."
- image: "https://movie-verse.com/images/image.png"
-
-analytics:
- google_tag_manager_id: G-CQKJ67FXZ4
-
-resources:
- css:
- - "MovieVerse-Frontend/css/style.css"
- - "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
- js:
- - "MovieVerse-Frontend/js/settings.js"
- - "index.js"
- - "https://www.googletagmanager.com/gtag/js?id=G-CQKJ67FXZ4"
- favicon: "images/favicon.ico"
- manifest: "manifest.json"
- service_worker: "MovieVerse-Frontend/js/service-worker.js"
-
-paths:
- about: "./MovieVerse-Frontend/html/about.html"
- favorites: "./MovieVerse-Frontend/html/favorites.html"
- user_profile: "./MovieVerse-Frontend/html/user-profile.html"
- settings: "MovieVerse-Frontend/html/settings.html"
- movie_match: "MovieVerse-Frontend/html/movie-match.html"
- movie_timeline: "MovieVerse-Frontend/html/movie-timeline.html"
- chatbot: "MovieVerse-Frontend/html/chatbot.html"
- trivia: "./MovieVerse-Frontend/html/trivia.html"
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/http-client.env.json b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/http-client.env.json
deleted file mode 100644
index 9e585cd2..00000000
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/http-client.env.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "dev": {
- "name": "value"
- }
-}
\ No newline at end of file
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/http-client.private.env.json b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/http-client.private.env.json
deleted file mode 100644
index 9e585cd2..00000000
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/http-client.private.env.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "dev": {
- "name": "value"
- }
-}
\ No newline at end of file
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/movieverse-openapi.yaml b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/movieverse-openapi.yaml
deleted file mode 100644
index 56ea5291..00000000
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/movieverse-openapi.yaml
+++ /dev/null
@@ -1,63 +0,0 @@
-openapi: 3.0.0
-info:
- title: MovieVerse API
- version: 1.0.0
- description: API for MovieVerse, a platform for exploring and reviewing movies.
-servers:
- - url: http://localhost:8000/api
- description: Development server
-
-paths:
- /movies:
- get:
- summary: List all movies
- responses:
- '200':
- description: A list of movies
-# content:
-# application/json:
-# schema:
-# type: array
-# items:
-# $ref: '#/components/schemas/Movie'
-
- /movies/{id}:
- get:
- summary: Get a movie by its ID
- parameters:
- - in: path
- name: id
- required: true
- schema:
- type: integer
- responses:
- '200':
- description: Details of a movie
-# content:
-# application/json:
-# schema:
-# $ref: '#/components/schemas/Movie'
- '404':
- description: Movie not found
-
-components:
- schemas:
- Movie:
- type: object
- properties:
- id:
- type: integer
- title:
- type: string
- overview:
- type: string
- releaseDate:
- type: string
- format: date
- rating:
- type: number
- format: float
- genres:
- type: array
- items:
- type: string
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/sample_initial_api_response.json b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/sample_initial_api_response.json
deleted file mode 100644
index d074b0d3..00000000
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-APIs/sample_initial_api_response.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "movies": [
- {
- "id": 1,
- "title": "Eternal Sunshine of the Spotless Mind",
- "year": 2004,
- "genres": ["Drama", "Romance", "Sci-Fi"],
- "director": "Michel Gondry",
- "cast": ["Jim Carrey", "Kate Winslet", "Tom Wilkinson"],
- "synopsis": "When their relationship turns sour, a couple undergoes a medical procedure to have each other erased from their memories.",
- "rating": 8.3
- },
- {
- "id": 2,
- "title": "Inception",
- "year": 2010,
- "genres": ["Action", "Adventure", "Sci-Fi"],
- "director": "Christopher Nolan",
- "cast": ["Leonardo DiCaprio", "Joseph Gordon-Levitt", "Ellen Page"],
- "synopsis": "A thief who steals corporate secrets through the use of dream-sharing technology is given the inverse task of planting an idea into the mind of a CEO.",
- "rating": 8.8
- },
- {
- "id": 3,
- "title": "Parasite",
- "year": 2019,
- "genres": ["Comedy", "Drama", "Thriller"],
- "director": "Bong Joon Ho",
- "cast": ["Song Kang-ho", "Lee Sun-kyun", "Cho Yeo-jeong"],
- "synopsis": "Greed and class discrimination threaten the newly formed symbiotic relationship between the wealthy Park family and the destitute Kim clan.",
- "rating": 8.6
- },
- {
- "id": 4,
- "title": "The Matrix",
- "year": 1999,
- "genres": ["Action", "Sci-Fi"],
- "director": "Lana Wachowski, Lilly Wachowski",
- "cast": ["Keanu Reeves", "Laurence Fishburne", "Carrie-Anne Moss"],
- "synopsis": "A computer hacker learns from mysterious rebels about the true nature of his reality and his role in the war against its controllers.",
- "rating": 8.7
- },
- {
- "id": 5,
- "title": "The Grand Budapest Hotel",
- "year": 2014,
- "genres": ["Adventure", "Comedy", "Crime"],
- "director": "Wes Anderson",
- "cast": ["Ralph Fiennes", "F. Murray Abraham", "Mathieu Amalric"],
- "synopsis": "A writer encounters the owner of an aging high-class hotel, who tells him of his early years serving as a lobby boy in the hotel's glorious years under an exceptional concierge.",
- "rating": 8.1
- }
- ]
-}
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-Backend/README.md b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-Backend/README.md
index 8f614f4a..dfd808c7 100644
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-Backend/README.md
+++ b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-Backend/README.md
@@ -6,9 +6,11 @@
- [Getting Started](#getting-started)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- - [Running the Services](#running-the-services)
+ - [Quick Start](#quick-start)
+ - [Running the Services (Recommended)](#running-the-services-recommended)
- [Database Services](#database-services)
- [Django Service](#django-service)
+ - [API Service](#api-service)
- [Flask Service](#flask-service)
- [Machine Learning Services](#machine-learning-services)
- [Crawler Service](#crawler-service)
@@ -17,9 +19,9 @@
## Overview
-The backend of MovieVerse is built using a microservices architecture. This architecture allows for independent scalability and enhanced flexibility in the development of different functionalities of the app, such as authentication, user management, movie data processing, and more.
+The backend of MovieVerse is built using the **microservices architecture**. This architecture allows for independent scalability and enhanced flexibility in the development of different functionalities of the app, such as authentication, user management, movie data processing, and more.
-**Important**: Be sure to read this file and the [README.md](databases/README.md) file in the `databases` directory for more information on the backend services of MovieVerse before you start developing.
+**Important**: Be sure to carefully read this file and the [README.md](databases/README.md) file in the `databases` directory for more information on the backend services of MovieVerse before you start developing.
## Architecture
@@ -70,7 +72,7 @@ pip install -r requirements.txt
2. Navigate to the repository:
```bash
- cd mobile-backend
+ cd MovieVerse-Backend
```
3. Create a Virtual Environment (optional but recommended):
@@ -81,7 +83,19 @@ pip install -r requirements.txt
4. Follow the specific installation instructions for each service below.
-### Running the Services
+### Quick Start
+
+To quickly start the backend services of MovieVerse, simply run:
+
+```bash
+npm start
+```
+
+This command will start most (but not all) of the services required for the backend of MovieVerse. Note that before running this command, you must have all the prerequisites installed on your machine.
+
+**Important**: Remember to set the `SECRET_KEY` and set `Debug` to `True` in the [settings.py](django_backend/django_backend/settings.py) file in the `django_backend` directory. This is crucial for running the Django server locally. Additionally, you are also required to obtain a Django secret key and set it in the `settings.py` file.
+
+### Running the Services (Recommended)
To run the MovieVerse's backend services, follow these steps **in order**:
@@ -179,11 +193,11 @@ MovieVerse currently uses MongoDB, Redis, PostgreSQL, and MySQL as its primary d
7. For the next steps, refer to the [README.md](databases/README.md) file in the `databases` directory for more information on the database services.
**Disclaimer**: These servers are for your local development environment only, in order for you to see how our backend services interact with each other.
-In our production environment, we use cloud-based services like AWS, Azure, and Google Cloud to host our databases and services. This thus will look different from what you might see on your end.
+In our production environment, we use cloud-based services like AWS, Azure, and Google Cloud (in our case, **Heroku**) to host our databases and services. This thus will look different from what you might see on your end.
#### Django Service
-The Django service is responsible for handling the majority of backend functionalities of MovieVerse, such as API endpoints, movies management, database interactions, user management, and more. To run the Django service, follow these steps:
+The Django service is responsible for handling the majority of backend functionalities of MovieVerse, such as API endpoints, movies management, database interactions, user management, and more. It was designed using the **Model-View-Controller (MVC)** architecture. To run the Django service, follow these steps:
1. Navigate to the `django_backend` directory:
```bash
@@ -227,10 +241,44 @@ If you go to `http://127.0.0.1:8000/admin/` in your browser, you should see te f
-This is the Django admin interface for the backend of MovieVerse. It allows you to manage users, movies, reviews, and more.
+This is the Django admin interface for the backend of MovieVerse. It allows you (the admin and other authorized users) to manage users, movies, reviews, and more in the databases.
+
+For example, if you click on `Movies`, you should see the following interface, which allows you to manage movies in the database:
+
+
+
+
Note that the UI that you see when you go to `http://127.0.0.1:8000/` in your browser is only a template and does not represent the actual UI of the MovieVerse app. The actual UI is built using React and Vue and can be found in the [MovieVerse-Frontend](../MovieVerse-Frontend) directory.
+**Important**: There has been a known Django bug where the admin interface' CSS styles are not loaded properly. If you encounter this issue, you can fix it by:
+
+1. Set the `STATIC_ROOT` variable in the `settings.py` file to the path of the `static` directory in the `django_backend` directory:
+
+ ```python
+ import os
+
+ STATIC_ROOT = os.path.join(BASE_DIR, 'static')
+ ```
+
+2. Set the `STATIC_URL` variable in the `settings.py` file to the path of the `static` directory in the `django_backend` directory:
+
+ ```python
+ STATIC_URL = '/static/'
+ ```
+
+3. Run the following command to collect the static files:
+
+ ```bash
+ python manage.py collectstatic
+ ```
+
+If the issue is still not fixed, contact me at [info@movie-verse.com](mailto:info@movie-verse.com) so that I can take a look at your situation.
+
+#### API Service
+
+The API service is responsible for handling API requests from the frontend of MovieVerse. To get started with the API service, follow the steps outlined in this [README.md](databases/README.md#rest-apis) file.
+
#### Flask Service
The Flask service is responsible for handling basic backend functionalities of MovieVerse. To run the Flask service, follow these steps:
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-Backend/django_backend/movieverse/models.py b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-Backend/django_backend/movieverse/models.py
index 6c825111..0ebf850c 100644
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-Backend/django_backend/movieverse/models.py
+++ b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-Backend/django_backend/movieverse/models.py
@@ -19,7 +19,7 @@ def __str__(self):
class Movie(models.Model):
_id = models.ObjectIdField()
movieId = models.IntegerField(unique=True)
- title = models.CharField(max_length=255)
+ title = models.CharField(max_length=255, db_column='title')
overview = models.TextField(null=True, blank=True)
releaseDate = models.DateField(null=True, blank=True)
runtime = models.IntegerField(null=True, blank=True)
diff --git a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-Backend/django_backend/movieverse/templates/movieverse/search.html b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-Backend/django_backend/movieverse/templates/movieverse/search.html
index 28aab55b..4bd63004 100644
--- a/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-Backend/django_backend/movieverse/templates/movieverse/search.html
+++ b/MovieVerse-Mobile/platforms/android/app/src/main/assets/www/MovieVerse-Backend/django_backend/movieverse/templates/movieverse/search.html
@@ -77,6 +77,15 @@
border-radius: 5px;
cursor: pointer;
}
+ a {
+ text-decoration: none;
+ color: #2ecc71;
+ font-size: 1.2em;
+ margin-top: 20px;
+ }
+ a:hover {
+ text-decoration: underline;
+ }
@@ -86,23 +95,34 @@