diff --git a/GoogleSearch/GoogleSearch/__init__.py b/GoogleSearch/GoogleSearch/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GoogleSearch/GoogleSearch/asgi.py b/GoogleSearch/GoogleSearch/asgi.py new file mode 100644 index 0000000..07cf612 --- /dev/null +++ b/GoogleSearch/GoogleSearch/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for GoogleSearch project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/6.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'GoogleSearch.settings') + +application = get_asgi_application() diff --git a/GoogleSearch/GoogleSearch/settings.py b/GoogleSearch/GoogleSearch/settings.py new file mode 100644 index 0000000..a22243e --- /dev/null +++ b/GoogleSearch/GoogleSearch/settings.py @@ -0,0 +1,76 @@ +from pathlib import Path +import os + + +BASE_DIR = Path(__file__).resolve().parent.parent + + +SECRET_KEY = 'django-insecure--pjdj6zn+0b323ggl+5w$i)_yi_*66_2s(5*0alr@b6*8$z2^t' + +DEBUG = True + +ALLOWED_HOSTS = [] + + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'main', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'GoogleSearch.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + + 'DIRS': [os.path.join(BASE_DIR, 'main', 'templates')], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'GoogleSearch.wsgi.application' + + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +LANGUAGE_CODE = 'en-us' +TIME_ZONE = 'UTC' +USE_I18N = True +USE_TZ = True + + +STATIC_URL = 'static/' + +STATICFILES_DIRS = [ + os.path.join(BASE_DIR, "main", "static"), +] + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' \ No newline at end of file diff --git a/GoogleSearch/GoogleSearch/urls.py b/GoogleSearch/GoogleSearch/urls.py new file mode 100644 index 0000000..ea1bc36 --- /dev/null +++ b/GoogleSearch/GoogleSearch/urls.py @@ -0,0 +1,10 @@ +from django.contrib import admin +from django.urls import path, include + +urlpatterns = [ + +path('admin/', admin.site.urls), + +path('', include('main.urls')), + +] \ No newline at end of file diff --git a/GoogleSearch/GoogleSearch/wsgi.py b/GoogleSearch/GoogleSearch/wsgi.py new file mode 100644 index 0000000..48684be --- /dev/null +++ b/GoogleSearch/GoogleSearch/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for GoogleSearch project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/6.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'GoogleSearch.settings') + +application = get_wsgi_application() diff --git a/GoogleSearch/main/__init__.py b/GoogleSearch/main/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GoogleSearch/main/admin.py b/GoogleSearch/main/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/GoogleSearch/main/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/GoogleSearch/main/apps.py b/GoogleSearch/main/apps.py new file mode 100644 index 0000000..833bff6 --- /dev/null +++ b/GoogleSearch/main/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class MainConfig(AppConfig): + name = 'main' diff --git a/GoogleSearch/main/migrations/__init__.py b/GoogleSearch/main/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GoogleSearch/main/models.py b/GoogleSearch/main/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/GoogleSearch/main/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/GoogleSearch/main/static/css/style.css b/GoogleSearch/main/static/css/style.css new file mode 100644 index 0000000..2b01549 --- /dev/null +++ b/GoogleSearch/main/static/css/style.css @@ -0,0 +1,172 @@ + +html, body { + height: 100%; + margin: 0; + padding: 0; +} + +body { + font-family: 'Roboto', arial, sans-serif; + display: flex; + flex-direction: column; + min-height: 100vh; +} + + +nav { + display: flex; + justify-content: flex-end; + align-items: center; + padding: 6px 15px; + gap: 15px; + height: 60px; +} + +nav a { + text-decoration: none; + color: rgba(0,0,0,0.87); + font-size: 13px; +} + +.signin-btn { + background-color: #1a73e8; + color: white; + padding: 9px 23px; + border: none; + border-radius: 4px; + font-weight: 500; + cursor: pointer; +} + + +main { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.search-container { + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + margin-top: -50px; +} + +.logo { + width: 272px; + margin-bottom: 25px; +} + + +.search-box { + display: flex; + align-items: center; + border: 1px solid #dfe1e5; + border-radius: 24px; + width: 584px; + max-width: 90%; + height: 44px; + padding: 0 15px; + transition: box-shadow 0.2s; + background-color: #fff; +} + +.search-box:hover { + box-shadow: 0 1px 6px rgba(32,33,36,0.28); + border-color: transparent; +} + +.search-input { + border: none; + flex: 1; + height: 100%; + outline: none; + font-size: 16px; + margin: 0 10px; + background: transparent; +} + + +.search-icons-group { + display: flex; + align-items: center; + gap: 12px; +} + +.colored-icon { + width: 24px; + height: 24px; + cursor: pointer; + object-fit: contain; +} + +.material-icons { + color: #9aa0a6; + font-size: 20px; +} + + +.buttons-group { + margin-top: 25px; + display: flex; + justify-content: center; + gap: 12px; +} + +.btn { + background-color: #f8f9fa; + border: 1px solid #f8f9fa; + color: #3c4043; + padding: 0 16px; + height: 36px; + min-width: 54px; + border-radius: 4px; + cursor: pointer; + font-size: 14px; + transition: all 0.1s; +} + +.btn:hover { + border: 1px solid #dadce0; + box-shadow: 0 1px 1px rgba(0,0,0,0.1); + color: #202124; +} + +.lang-info { + margin-top: 25px; + font-size: 13px; +} + +.lang-info a { + color: #1a0dab; + text-decoration: none; +} + + +footer { + background: #f2f2f2; + color: #70757a; + width: 100%; + margin-top: auto; +} + +.footer-top { + padding: 15px 30px; + border-bottom: 1px solid #dadce0; +} + +.footer-bottom { + display: flex; + justify-content: space-between; + padding: 15px 30px; +} + +.footer-bottom a { + text-decoration: none; + color: #70757a; + margin-right: 20px; + font-size: 14px; +} \ No newline at end of file diff --git a/GoogleSearch/main/static/images/camera.png b/GoogleSearch/main/static/images/camera.png new file mode 100644 index 0000000..4ecc705 Binary files /dev/null and b/GoogleSearch/main/static/images/camera.png differ diff --git a/GoogleSearch/main/static/images/google-logo.png b/GoogleSearch/main/static/images/google-logo.png new file mode 100644 index 0000000..ed8841b Binary files /dev/null and b/GoogleSearch/main/static/images/google-logo.png differ diff --git a/GoogleSearch/main/static/images/mircophone.png b/GoogleSearch/main/static/images/mircophone.png new file mode 100644 index 0000000..adbf033 Binary files /dev/null and b/GoogleSearch/main/static/images/mircophone.png differ diff --git a/GoogleSearch/main/static/images/termsOfService.rtf b/GoogleSearch/main/static/images/termsOfService.rtf new file mode 100644 index 0000000..6cbe1e0 --- /dev/null +++ b/GoogleSearch/main/static/images/termsOfService.rtf @@ -0,0 +1,70 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2709 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Arial-BoldMT;\f1\fswiss\fcharset0 ArialMT;} +{\colortbl;\red255\green255\blue255;\red24\green25\blue27;\red255\green255\blue255;\red19\green0\blue155; +} +{\*\expandedcolortbl;;\cssrgb\c12549\c12941\c14118;\cssrgb\c100000\c100000\c100000;\cssrgb\c10196\c5098\c67059; +} +{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}} +{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} +\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0 +\deftab720 +\pard\pardeftab720\partightenfactor0 + +\f0\b\fs48 \cf2 \cb3 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 Google Terms of Service\ +\pard\pardeftab720\sa280\partightenfactor0 + +\f1\b0\fs28 \cf2 Effective 5 January 2022\'a0|\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms/archive?hl=en-SA&fg=1"}}{\fldrslt \cf4 \strokec4 Archived versions}}\'a0|\'a0{\field{\*\fldinst{HYPERLINK "https://www.gstatic.com/policies/terms/pdf/20220105/it7r24p9/google_terms_of_service_en-GB.pdf"}}{\fldrslt \cf4 \strokec4 Download PDF}}\ +\pard\pardeftab720\sa280\partightenfactor0 +{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#footnote-country-version"}}{\fldrslt \cf4 \strokec4 Country version:}}\'a0Saudi Arabia\ +\pard\pardeftab720\partightenfactor0 +\cf2 \ +\pard\pardeftab720\sa298\partightenfactor0 + +\f0\b\fs36 \cf2 What\'92s covered in these terms\ +\pard\pardeftab720\sa280\partightenfactor0 + +\fs28 \cf2 We know it\'92s tempting to skip these Terms of Service, but it\'92s important to establish what you can expect from us as you use Google\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#footnote-services"}}{\fldrslt \cf4 \strokec4 services}}, and what we expect from you.\ +\pard\pardeftab720\sa280\partightenfactor0 + +\f1\b0 \cf2 These Terms of Service reflect\'a0{\field{\*\fldinst{HYPERLINK "https://about.google/intl/en-GB_SA/how-our-business-works"}}{\fldrslt \cf4 \strokec4 the way that Google\'92s business works}}, the laws that apply to our company, and\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/about/philosophy.html?hl=en_GB"}}{\fldrslt \cf4 \strokec4 certain things that we\'92ve always believed to be true}}. As a result, these Terms of Service help define Google\'92s relationship with you as you interact with our services. For example, these terms include the following topic headings:\ +\pard\tx220\tx720\pardeftab720\li720\fi-720\partightenfactor0 +\ls1\ilvl0\cf4 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#toc-what-you-expect"}}{\fldrslt \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec4 What you can expect from us}}\cf2 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 , which describes how we provide and develop our services\cb1 \ +\ls1\ilvl0\cf4 \cb3 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#toc-what-we-expect"}}{\fldrslt \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec4 What we expect from you}}\cf2 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 , which establishes certain rules for using our services\cb1 \ +\ls1\ilvl0\cf4 \cb3 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#toc-content"}}{\fldrslt \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec4 Content in Google services}}\cf2 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 , which describes the intellectual property rights to the content that you find in our services \'96 whether that content belongs to you, Google or others\cb1 \ +\ls1\ilvl0\cf4 \cb3 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext \uc0\u8226 }{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#toc-problems"}}{\fldrslt \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec4 In case of problems or disagreements}}\cf2 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 , which describes other legal rights that you have, and what to expect in case someone violates these terms.\cb1 \ +\pard\pardeftab720\sa280\partightenfactor0 +\cf2 \cb3 Understanding these terms is important because, by using our services, you\'92re agreeing to these terms.\ +Besides these terms, we also publish a\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/privacy?hl=en-SA&fg=1"}}{\fldrslt \cf4 \strokec4 Privacy Policy}}. Although it\'92s not part of these terms, we encourage you to read it to better understand how you can\'a0{\field{\*\fldinst{HYPERLINK "https://myaccount.google.com/?hl=en_GB"}}{\fldrslt \cf4 \strokec4 update, manage, export and delete your information}}.\ +\pard\pardeftab720\partightenfactor0 + +\f0\b\fs48 \cf2 Terms\ +\pard\pardeftab720\partightenfactor0 + +\f1\b0\fs28 \cf2 \ +\pard\pardeftab720\sa298\partightenfactor0 + +\f0\b\fs36 \cf2 Service provider\ +\pard\pardeftab720\sa280\partightenfactor0 + +\f1\b0\fs28 \cf2 Google\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#footnote-services"}}{\fldrslt \cf4 \strokec4 services}}\'a0are provided by, and you\'92re contracting with:\ +Google LLC\cb1 \uc0\u8232 \cb3 organised under the laws of the State of Delaware, USA, and operating under the laws of the USA\cb1 \uc0\u8232 \u8232 \cb3 1600 Amphitheatre Parkway\cb1 \uc0\u8232 \cb3 Mountain View, California 94043\cb1 \uc0\u8232 \cb3 USA\ +\pard\pardeftab720\partightenfactor0 +\cf2 \ +\pard\pardeftab720\sa298\partightenfactor0 + +\f0\b\fs36 \cf2 Age requirements\ +\pard\pardeftab720\sa280\partightenfactor0 + +\f1\b0\fs28 \cf2 If you\'92re under the\'a0{\field{\*\fldinst{HYPERLINK "https://support.google.com/accounts/answer/1350409?hl=en_GB"}}{\fldrslt \cf4 \strokec4 age required to manage your own Google Account}}, you must have your parent or legal guardian\'92s permission to use a Google Account. Please ask your parent or legal guardian to read these terms with you.\ +If you\'92re a parent or legal guardian, and you allow your child to use the\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms?hl=en-SA&fg=1#footnote-services"}}{\fldrslt \cf4 \strokec4 services}}, then these terms apply to you and you\'92re responsible for your child\'92s activity on the services.\ +Some Google services have additional age requirements as described in their\'a0{\field{\*\fldinst{HYPERLINK "https://www.google.com/terms/service-specific?hl=en-SA&fg=1"}}{\fldrslt \cf4 \strokec4 service-specific additional terms and policies}}.\ +} \ No newline at end of file diff --git a/GoogleSearch/main/static/images/tos_main_illustration.svg b/GoogleSearch/main/static/images/tos_main_illustration.svg new file mode 100644 index 0000000..883e2d6 --- /dev/null +++ b/GoogleSearch/main/static/images/tos_main_illustration.svg @@ -0,0 +1 @@ + diff --git a/GoogleSearch/main/templates/main/base.html b/GoogleSearch/main/templates/main/base.html new file mode 100644 index 0000000..a2d1371 --- /dev/null +++ b/GoogleSearch/main/templates/main/base.html @@ -0,0 +1,49 @@ +{% load static %} + + +
+ + +
+
+
+
+ + Effective 5 January 2022 | + Archived versions | + Download PDF +
+ ++ Country version: Saudi Arabia +
+ ++ We know it’s tempting to skip these Terms of Service, but it’s important to establish what you can expect from us as you use Google services, and what we expect from you. +
+ ++ These Terms of Service reflect the way that Google’s business works, the laws that apply to our company, and certain things that we’ve always believed to be true. As a result, these Terms of Service help define Google’s relationship with you as you interact with our services. For example, these terms include the following topic headings: +
+