diff --git a/RiyadhExpo/RiyadhExpo/__init__.py b/RiyadhExpo/RiyadhExpo/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/RiyadhExpo/RiyadhExpo/asgi.py b/RiyadhExpo/RiyadhExpo/asgi.py new file mode 100644 index 0000000..9dd58ab --- /dev/null +++ b/RiyadhExpo/RiyadhExpo/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for RiyadhExpo 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/5.1/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "RiyadhExpo.settings") + +application = get_asgi_application() diff --git a/RiyadhExpo/RiyadhExpo/settings.py b/RiyadhExpo/RiyadhExpo/settings.py new file mode 100644 index 0000000..14abce9 --- /dev/null +++ b/RiyadhExpo/RiyadhExpo/settings.py @@ -0,0 +1,119 @@ +""" +Django settings for RiyadhExpo project. + +Generated by 'django-admin startproject' using Django 5.1.2. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/5.1/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = "django-insecure-3e^!k72&*qrn-h_)d(+jzlv6w8*mp%=+z(h!0&@i&)zky9+t#!" + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + "django.contrib.admin", + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.messages", + "django.contrib.staticfiles", + "main", + "cv", +] + +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 = "RiyadhExpo.urls" + +TEMPLATES = [ + { + "BACKEND": "django.template.backends.django.DjangoTemplates", + "DIRS": [], + "APP_DIRS": True, + "OPTIONS": { + "context_processors": [ + "django.template.context_processors.debug", + "django.template.context_processors.request", + "django.contrib.auth.context_processors.auth", + "django.contrib.messages.context_processors.messages", + ], + }, + }, +] + +WSGI_APPLICATION = "RiyadhExpo.wsgi.application" + + +# Database +# https://docs.djangoproject.com/en/5.1/ref/settings/#databases + +DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", + } +} + + +# Password validation +# https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", + }, + {"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",}, + {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",}, + {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",}, +] + + +# Internationalization +# https://docs.djangoproject.com/en/5.1/topics/i18n/ + +LANGUAGE_CODE = "en-us" + +TIME_ZONE = "UTC" + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/5.1/howto/static-files/ + +STATIC_URL = "static/" + +# Default primary key field type +# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" diff --git a/RiyadhExpo/RiyadhExpo/urls.py b/RiyadhExpo/RiyadhExpo/urls.py new file mode 100644 index 0000000..2ae5354 --- /dev/null +++ b/RiyadhExpo/RiyadhExpo/urls.py @@ -0,0 +1,26 @@ +""" +URL configuration for RiyadhExpo project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/5.1/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" + +from django.contrib import admin +from django.urls import path, include + +urlpatterns = [ + path('admin/', admin.site.urls), + path('html/', include('main.urls')), + path('careers/',include('cv.urls')), +] + diff --git a/RiyadhExpo/RiyadhExpo/wsgi.py b/RiyadhExpo/RiyadhExpo/wsgi.py new file mode 100644 index 0000000..e2ee0c6 --- /dev/null +++ b/RiyadhExpo/RiyadhExpo/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for RiyadhExpo 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/5.1/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "RiyadhExpo.settings") + +application = get_wsgi_application() diff --git a/RiyadhExpo/cv/__init__.py b/RiyadhExpo/cv/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/RiyadhExpo/cv/admin.py b/RiyadhExpo/cv/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/RiyadhExpo/cv/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/RiyadhExpo/cv/apps.py b/RiyadhExpo/cv/apps.py new file mode 100644 index 0000000..8eef79a --- /dev/null +++ b/RiyadhExpo/cv/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class CvConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "cv" diff --git a/RiyadhExpo/cv/migrations/__init__.py b/RiyadhExpo/cv/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/RiyadhExpo/cv/models.py b/RiyadhExpo/cv/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/RiyadhExpo/cv/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/RiyadhExpo/cv/static/css/styles.css b/RiyadhExpo/cv/static/css/styles.css new file mode 100644 index 0000000..382e05c --- /dev/null +++ b/RiyadhExpo/cv/static/css/styles.css @@ -0,0 +1,167 @@ +/* General Styling */ +body { + font-family: 'Arial', sans-serif; + background-color: #f4f4f4; + color: #333; + overflow-x: hidden; +} + +/* Header Section */ +.header { + background-image: url('https://images.unsplash.com/photo-1557683316-973673baf926'); + background-size: cover; + background-position: center; + height: 100vh; + color: white; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + position: relative; +} + +.logo-img { + width: 150px; + height: 150px; + animation: fadeInLogo 2s ease-in-out; +} + +@keyframes fadeInLogo { + 0% { opacity: 0; transform: scale(0.5); } + 100% { opacity: 1; transform: scale(1); } +} + +.header h1 { + animation: fadeInDown 2s ease-in-out; +} + +@keyframes fadeInDown { + 0% { opacity: 0; transform: translateY(-50px); } + 100% { opacity: 1; transform: translateY(0); } +} + + +/* About Heading Styling */ +.about-heading { + font-size: 2.5rem; + font-weight: 700; + color: #333; + position: relative; +} + +/* Decorative Line Under Heading */ +.decorative-line { + width: 120px; /* Width of the line */ + height: 4px; /* Height of the line */ + background-color: #FF6347; + margin-top: -10px; + border-radius: 4px; /* Rounded corners for a softer effect */ +} + +/* About Content Wrapper */ +.about-content-wrapper { + border: 1px solid #ddd; + border-radius: 8px; + background-color: #f7f7f7; + padding: 30px; + margin-top: 20px; + max-width: 800px; + margin-left: auto; + margin-right: auto; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05); +} + +/* About Text */ +.about-text { + font-size: 1.15rem; + color: #555; + line-height: 1.8; + text-align: justify; +} + + +/* Projects Section Styling */ +.project-card { + background-color: #ffffff; + border-radius: 8px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out; +} + +.project-card:hover { + transform: translateY(-5px); + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); +} + +.project-card h5 { + font-weight: bold; + margin-bottom: 15px; +} + +.project-card p { + margin-bottom: 10px; +} + + +/* Skills Section */ +.skills-section .skill-card { + transition: transform 0.3s, box-shadow 0.3s; + box-shadow: 0 0 15px rgba(0, 0, 0, 0.1); + animation: fadeInUp 1s ease-in-out; +} + +.skills-section .skill-card:hover { + transform: scale(1.05); + box-shadow: 0 0 25px rgba(0, 0, 0, 0.2); +} + +@keyframes fadeInUp { + 0% { opacity: 0; transform: translateY(30px); } + 100% { opacity: 1; transform: translateY(0); } +} +/* Contact Information Section Styling */ +.contact-card { + background-color: #ffffff; + border-radius: 8px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out; + text-align: center; +} + +.contact-card:hover { + transform: translateY(-5px); + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); +} + +.contact-card i { + font-size: 1.5rem; + color: #FF6347; /* Matching the theme color */ +} + +.contact-card p { + margin: 0; + font-size: 1rem; + color: #333; +} + +.contact-card a { + color: #007bff; + text-decoration: none; +} + +.contact-card a:hover { + text-decoration: underline; +} + +.contact-section { + background-color: #f8f9fa; + padding: 60px 20px; +} + + + +/* Footer Section */ +.footer { + background-color: #333; + color: white; +} diff --git a/RiyadhExpo/cv/static/images/Hessa_logo.png b/RiyadhExpo/cv/static/images/Hessa_logo.png new file mode 100644 index 0000000..ad58222 Binary files /dev/null and b/RiyadhExpo/cv/static/images/Hessa_logo.png differ diff --git a/RiyadhExpo/cv/templates/cv/cv.html b/RiyadhExpo/cv/templates/cv/cv.html new file mode 100644 index 0000000..9eed886 --- /dev/null +++ b/RiyadhExpo/cv/templates/cv/cv.html @@ -0,0 +1,187 @@ +{% load static %} + + + + + + Hessa Almasaad - Portfolio + + + + + + + + + + + + + +
+
+ Hessa Logo +

Hessa Almasaad

+

Full Stack Developer

+ + Download CV + + +
+
+ + +
+
+

About Me

+
+
+

+ I am a highly motivated Computer Science Graduate with a strong foundation in programming, algorithms, and software development. Seeking opportunities to leverage my skills in a dynamic environment. +

+
+
+
+ + + +
+
+

Skills

+
+
+
+
Front-End
+
+
HTML, CSS, JavaScript, React
+
+
+
+
Back-End
+
+
Node.js, Express, Django
+
+
+
+
Databases
+
+
MySQL, MongoDB
+
+
+
+
+
+
+ + +
+
+

Experience

+
+
+
+
Unity Developer - Tuwaiq Academy | Bootcamp
+

May 2024 – Jul 2024

+
    +
  • Implemented and optimized game physics, animations, and AI behavior for immersive gameplay.
  • +
  • Developed custom shaders and visual effects to enhance the visual appeal of 3D environments.
  • +
  • Collaborated with artists and designers to integrate 2D/3D assets.
  • +
+
+
+
+
+
Software Developer - Saudi Digital Academy | Bootcamp
+

May 2022 – Sep 2022

+
    +
  • Completed an intensive bootcamp to become a Full Stack Developer, mastering multiple programming languages and frameworks.
  • +
  • Applied MVC techniques using technologies such as Java, JavaScript, Python, MERN stack, Django, and Spring Boot.
  • +
  • Developed and deployed full-stack web applications with front-end and back-end integration.
  • +
+
+
+
+
+
+ + + +
+
+

Projects

+
+
+
+
Smart Weather Project (with Jira)
+

Aug 2024

+

Utilized Agile Scrum Master principles to develop a comprehensive weather information platform with a web portal and mobile apps.

+
+
+
+
+
Web Platform
+

Jul 2024

+

Created a dynamic web platform for easy access to religious fatwas and resources concerning the Two Holy Mosques.

+
+
+
+
+
KHADERHA Hackathon
+

Aug 2022

+

Created a website focused on promoting environmental sustainability by tackling desertification.

+
+
+
+
+
+ + +
+
+

Contact Information

+
+
+ +
+
+
+ +

Phone: +966 538 772 787

+
+
+
+ +
+
+
+ +

GitHub: github.com/HessaAlmasaad

+
+
+
+
+ +

Location: Riyadh, Saudi Arabia

+
+
+
+
+
+ + + + + + + + + diff --git a/RiyadhExpo/cv/tests.py b/RiyadhExpo/cv/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/RiyadhExpo/cv/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/RiyadhExpo/cv/urls.py b/RiyadhExpo/cv/urls.py new file mode 100644 index 0000000..6f6f6b4 --- /dev/null +++ b/RiyadhExpo/cv/urls.py @@ -0,0 +1,6 @@ +from django.urls import path +from . import views + +urlpatterns = [ + path('cv/', views.index_view, name='index'), +] diff --git a/RiyadhExpo/cv/views.py b/RiyadhExpo/cv/views.py new file mode 100644 index 0000000..9507e25 --- /dev/null +++ b/RiyadhExpo/cv/views.py @@ -0,0 +1,5 @@ +from django.shortcuts import render + +# Create your views here. +def index_view(request): + return render(request, 'cv/cv.html') diff --git a/RiyadhExpo/main/__init__.py b/RiyadhExpo/main/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/RiyadhExpo/main/admin.py b/RiyadhExpo/main/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/RiyadhExpo/main/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/RiyadhExpo/main/apps.py b/RiyadhExpo/main/apps.py new file mode 100644 index 0000000..34f1451 --- /dev/null +++ b/RiyadhExpo/main/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class MainConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "main" diff --git a/RiyadhExpo/main/migrations/__init__.py b/RiyadhExpo/main/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/RiyadhExpo/main/models.py b/RiyadhExpo/main/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/RiyadhExpo/main/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/RiyadhExpo/main/static/css/introduction/styles.css b/RiyadhExpo/main/static/css/introduction/styles.css new file mode 100644 index 0000000..839baae --- /dev/null +++ b/RiyadhExpo/main/static/css/introduction/styles.css @@ -0,0 +1,476 @@ +/* General Reset */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html, body { + height: 100%; + display: flex; + flex-direction: column; +} + +/* Content should push the footer to the bottom */ +body > .content { + flex: 1; + margin-bottom: -1px; +} +/* Welcome Text Styling */ +.display-4 { + font-size: 3rem; + font-weight: bold; + margin-bottom: 20px; +} + +/* Video Container */ +.video-container { + display: flex; + justify-content: center; + margin: 30px 0; +} + +/* Content Styling */ +.lead { + font-size: 1.2rem; + line-height: 1.8; + margin: 20px 0; +} + +h3 { + margin-top: 30px; + font-weight: bold; + color: #ffcc00; +} + +/* Card Styles */ +.card { + margin-top: 20px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + transition: transform 0.3s, box-shadow 0.3s; +} + +.card:hover { + transform: scale(1.05); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2); +} + +.card-title { + font-weight: bold; + color: #333; +} + +.card-text { + color: #555; +} +.container { + max-width: 1000px; + margin: 30px auto; + display: flex; + flex-direction: row; /* Align cards horizontally */ + justify-content: center; /* Center the cards */ + gap: 50px; /* Space between cards */ + flex-wrap: wrap; /* Allow cards to wrap to the next line if the screen width is too small */ +} + +/* Navbar Gradient Styling */ +.navbar { + background: linear-gradient(300deg, #0d1117, #1a1f24); + padding: 20px; + border-bottom: 1px solid rgba(112, 91, 91, 0.1); + transition: background 0.5s ease-in-out; +} + +/* Navbar Link Styling */ +.nav-link { + font-size: 16px; + font-weight: 500; + color: white; + margin-right: 15px; + transition: color 0.3s ease-in-out; +} + +/* Navbar Link Hover Effect */ +.nav-link:hover { + color: #f06724; +} + +/* Custom Button in Navbar */ +.btn-custom { + background-color: #6c757d; + color: white; + border: none; + transition: background-color 0.3s ease, transform 0.2s ease; +} + +.btn-custom:hover { + background-color: #f06724; + transform: scale(1.05); + color: white; +} + +/* General Spacing for Article */ +.article-text { + font-size: 1.1rem; + line-height: 1.6; +} + +/* Make Images Look Better */ +.img-fluid { + max-height: 300px; + object-fit: cover; +} + +/* Add Shadow to Article */ +article { + background-color: #f9f9f9; + border-radius: 10px; + padding: 30px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); +} + +/* Add Shadow to Images */ +.img-fluid { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); +} + +/* Padding for Headers */ +article h3 { + color: #343a40; + font-weight: bold; +} +/* Large screens (desktops) */ +@media (min-width: 992px) { + .article-text { + font-size: 1.2rem; + } + .navbar { + padding: 20px 40px; + } +} + +/* Medium screens (tablets) */ +@media (min-width: 768px) and (max-width: 991.98px) { + .article-text { + font-size: 1.1rem; + } + .content { + padding: 20px; + } +} + +/* Small screens (phones) */ +@media (max-width: 767.98px) { + .article-text { + font-size: 1rem; + text-align: justify; /* Makes text easier to read on smaller screens */ + } + .navbar-brand img { + height: 30px; /* Adjust logo size for small screens */ + } + .footer { + font-size: 0.8rem; + } +} +/* Button with Transition */ +.btn-custom { + background-color: #6c757d; + color: white; + border: none; + transition-property: background-color, transform; /* Apply transition to color and transform */ + transition-duration: 0.3s; /* Transition duration is 0.3 seconds */ +} + +.btn-custom:hover { + background-color: #f06724; /* Change background color on hover */ + transform: scale(1.05); /* Slightly increase button size on hover */ +} + +h2, h3 { + color: #333; +} +ul { + list-style-type: disc; + margin-left: 20px; +} + +.goals-section { + max-width: 1000px; + margin: 30px auto; + display: flex; + flex-direction: row; /* Align cards horizontally */ + gap: 15px; /* Space between cards */ + flex-wrap: wrap; /* Allow cards to wrap to the next line if screen width is too small */ +} + +.card { + border-radius: 6px; + color: white; + width: 230px; /* Set a fixed width for consistency */ + padding: 10px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + font-size: 0.9rem; /* Smaller font size for compact appearance */ +} + +.card-header { + font-weight: bold; + margin-bottom: 5px; + font-size: 1rem; /* Make header font smaller */ +} + +.card-danger { + background-color: #dc3545; /* Red color for danger card */ +} + +.card-warning { + background-color: #ffc107; /* Yellow color for warning card */ + color: #333; /* Dark text for contrast */ +} + +.card-info { + background-color: #17a2b8; /* Blue color for info card */ +} + +.card-success { + background-color: #28a745; /* Green color for success card */ +} + +.card h4 { + margin: 0; + font-size: 1.1rem; + margin-bottom: 5px; +} + +.card p { + margin: 0; + font-size: 0.85rem; +} +.table-section { + margin: 30px auto; + max-width: 800px; +} + +.styled-table { + width: 100%; + border-collapse: collapse; + margin: 20px 0; + font-size: 1rem; + text-align: left; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Light shadow for elevation */ +} + +.styled-table thead th { + background-color: #ffc107; /* Yellow background for the header, similar to your image */ + color: #333; /* Darker text for contrast */ + font-size: 1.2rem; /* Larger font size for the header */ + padding: 12px; /* Padding for a neat look */ + font-weight: bold; + border: 1px solid #ccc; /* Border to match with the body cells */ +} + +.styled-table tbody td { + padding: 10px; + border: 1px solid #ccc; /* Light border for cell separation */ + background-color: #fff; /* White background for a clean look */ +} + +.styled-table tbody tr:nth-child(even) { + background-color: #f9f9f9; /* Light grey background for alternating rows */ +} + +.styled-table tbody tr:hover { + background-color: #f1f1f1; /* Light highlight on row hover for interactivity */ +} + +.image-section { + text-align: center; + margin: 30px 0; +} +/* Image with Transition */ +.img-fluid { + transition: transform 0.5s ease-in-out, box-shadow 0.5s ease-in-out; +} + +.img-fluid:hover { + transform: scale(1.1); /* Zoom the image slightly on hover */ + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3); /* Add a shadow on hover */ +} +/* Keyframe Animation for Heading */ +@keyframes fadeInUp { + 0% { + opacity: 0; + transform: translateY(20px); /* Start 20px below */ + } + 100% { + opacity: 1; + transform: translateY(0); /* End at original position */ + } +} + +/* Apply the Animation to Headings */ +h2, h3 { + animation-name: fadeInUp; /* Reference the keyframe name */ + animation-duration: 1s; /* Animation lasts 1 second */ + animation-timing-function: ease-in-out; /* Easing for smooth movement */ + animation-delay: 0.2s; /* Start the animation after 0.2s */ + animation-fill-mode: both; /* Ensure element stays in its final position */ +} + +/* :hover for Links */ +.nav-link:hover { + color: #f06724; /* Change color when hovered */ + text-decoration: underline; /* Add underline to indicate link hover */ +} + +/* :nth-child to Style Every Second Paragraph Differently */ +.article-text:nth-child(2n) { + background-color: #f9f9f9; /* Light grey background for every second paragraph */ + padding: 10px; /* Add padding for readability */ + border-radius: 5px; +} + +/* ::before and ::after for Headings */ +h3::before { + content: '⭐'; /* Add a star icon before each h3 heading */ + color: #f06724; + margin-right: 5px; +} + +h3::after { + content: ' ✨'; /* Add sparkle after each h3 heading */ + color: #f06724; + margin-left: 5px; +} + +/* Button with :hover */ +.btn-custom { + background-color: #6c757d; + color: white; + border: none; + transition: background-color 0.3s, transform 0.3s; +} + +.btn-custom:hover { + background-color: #f06724; + transform: scale(1.05); +} + +/* Animation Example for Buttons */ +@keyframes bounce { + 0%, 20%, 50%, 80%, 100% { + transform: translateY(0); + } + 40% { + transform: translateY(-10px); + } + 60% { + transform: translateY(-5px); + } +} + +/* Add Animation on Hover */ +.btn-custom:hover { + animation: bounce 1s; /* Add bounce effect when the button is hovered over */ +} + +/* Pseudo-elements for Blockquote */ +blockquote::before { + content: open-quote; /* Add opening quote */ + font-size: 2rem; + color: #f06724; + margin-right: 5px; +} + +blockquote::after { + content: close-quote; /* Add closing quote */ + font-size: 2rem; + color: #f06724; + margin-left: 5px; +} + +/* Form Container */ +.form-container { + max-width: 600px; + margin: 50px auto; + background-color: white; + padding: 30px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + border-radius: 8px; +} + +/* Form Title */ +.form-title { + text-align: center; + margin-bottom: 30px; + font-weight: bold; + color: #333; +} + +/* Form Group Styling */ +.form-group label { + margin-bottom: 5px; + font-weight: 500; +} + +.form-check-inline { + margin-right: 10px; +} + +/* Input, Select, and Text Field Styles */ +input[type="text"], +input[type="email"], +input[type="tel"], +select, +textarea { + width: 100%; + padding: 10px; + margin-top: 5px; + margin-bottom: 15px; + border: 1px solid #ddd; + border-radius: 4px; + transition: border-color 0.3s; +} + +input:focus, +select:focus, +textarea:focus { + border-color: #ffcc00; + outline: none; +} + +/* Terms Checkbox */ +.terms { + font-size: 0.9rem; + margin-bottom: 20px; +} + +/* Submit Button Styling */ +.submit-btn { + background-color: #ffcc00; + color: black; + border: none; + width: 100%; + padding: 10px; + border-radius: 5px; + font-weight: bold; + transition: background-color 0.3s ease; + cursor: pointer; +} + +.submit-btn:hover { + background-color: #e6b800; +} + +/* Responsive Design */ +@media (max-width: 768px) { + .form-container { + margin: 20px; + padding: 20px; + } +} + +footer { + flex-shrink: 0; /* Ensure footer stays at the bottom */ + background-color: #343a40; + padding: 10px 0; /* Adjust padding to avoid extra spacing */ +} diff --git a/RiyadhExpo/main/static/images/ai_future.jpeg b/RiyadhExpo/main/static/images/ai_future.jpeg new file mode 100644 index 0000000..7bf9021 Binary files /dev/null and b/RiyadhExpo/main/static/images/ai_future.jpeg differ diff --git a/RiyadhExpo/main/static/images/ai_security.jpeg b/RiyadhExpo/main/static/images/ai_security.jpeg new file mode 100644 index 0000000..cf604c8 Binary files /dev/null and b/RiyadhExpo/main/static/images/ai_security.jpeg differ diff --git a/RiyadhExpo/main/static/images/ai_sustainability.jpeg b/RiyadhExpo/main/static/images/ai_sustainability.jpeg new file mode 100644 index 0000000..1e35154 Binary files /dev/null and b/RiyadhExpo/main/static/images/ai_sustainability.jpeg differ diff --git a/RiyadhExpo/main/static/images/ai_vision_future.jpeg b/RiyadhExpo/main/static/images/ai_vision_future.jpeg new file mode 100644 index 0000000..becbc5d Binary files /dev/null and b/RiyadhExpo/main/static/images/ai_vision_future.jpeg differ diff --git a/RiyadhExpo/main/static/images/ai_visitor_experience.jpeg b/RiyadhExpo/main/static/images/ai_visitor_experience.jpeg new file mode 100644 index 0000000..3319ac6 Binary files /dev/null and b/RiyadhExpo/main/static/images/ai_visitor_experience.jpeg differ diff --git a/RiyadhExpo/main/static/images/background.jpeg b/RiyadhExpo/main/static/images/background.jpeg new file mode 100644 index 0000000..7abf69e Binary files /dev/null and b/RiyadhExpo/main/static/images/background.jpeg differ diff --git a/RiyadhExpo/main/static/images/background_1.jpeg b/RiyadhExpo/main/static/images/background_1.jpeg new file mode 100644 index 0000000..25d6706 Binary files /dev/null and b/RiyadhExpo/main/static/images/background_1.jpeg differ diff --git a/RiyadhExpo/main/static/images/expo_card1.jpeg b/RiyadhExpo/main/static/images/expo_card1.jpeg new file mode 100644 index 0000000..be36a84 Binary files /dev/null and b/RiyadhExpo/main/static/images/expo_card1.jpeg differ diff --git a/RiyadhExpo/main/static/images/expo_card2.jpeg b/RiyadhExpo/main/static/images/expo_card2.jpeg new file mode 100644 index 0000000..c353735 Binary files /dev/null and b/RiyadhExpo/main/static/images/expo_card2.jpeg differ diff --git a/RiyadhExpo/main/static/images/expo_card3.jpeg b/RiyadhExpo/main/static/images/expo_card3.jpeg new file mode 100644 index 0000000..f0dd808 Binary files /dev/null and b/RiyadhExpo/main/static/images/expo_card3.jpeg differ diff --git a/RiyadhExpo/main/static/images/expo_card4.jpg b/RiyadhExpo/main/static/images/expo_card4.jpg new file mode 100644 index 0000000..78fac87 Binary files /dev/null and b/RiyadhExpo/main/static/images/expo_card4.jpg differ diff --git a/RiyadhExpo/main/static/images/logo.png b/RiyadhExpo/main/static/images/logo.png new file mode 100644 index 0000000..57de8e0 Binary files /dev/null and b/RiyadhExpo/main/static/images/logo.png differ diff --git a/RiyadhExpo/main/static/images/logo_1.png b/RiyadhExpo/main/static/images/logo_1.png new file mode 100644 index 0000000..2cded50 Binary files /dev/null and b/RiyadhExpo/main/static/images/logo_1.png differ diff --git a/RiyadhExpo/main/static/videos/RiyadhExpo.mp4 b/RiyadhExpo/main/static/videos/RiyadhExpo.mp4 new file mode 100644 index 0000000..11b9cab Binary files /dev/null and b/RiyadhExpo/main/static/videos/RiyadhExpo.mp4 differ diff --git a/RiyadhExpo/main/templates/main/about.html b/RiyadhExpo/main/templates/main/about.html new file mode 100644 index 0000000..a8083d8 --- /dev/null +++ b/RiyadhExpo/main/templates/main/about.html @@ -0,0 +1,111 @@ +{% load static %} + + + + + + About RiyadhExpo 2030 + + + + + + +
+ +
+
+

About Riyadh Expo 2030

+

Riyadh Expo 2030 is an ambitious global event that aims to bring together nations, cultures, and ideas under one roof. The Expo is part of Saudi Vision 2030 and aims to showcase innovations in sustainability, technology, and culture. With its emphasis on future-forward thinking, Riyadh Expo 2030 will be a hub for collaboration, knowledge-sharing, and inspiration for the world.

+ +

Goals of Riyadh Expo 2030

+
+
+

Promote sustainability and green initiatives

+
+
+

Encouraging a greener future by promoting renewable energy and eco-friendly practices.

+
+
+
+

Encourage global collaboration and cultural exchange

+
+

Fostering partnerships and cultural exchange between participating countries.

+
+
+
+

Showcase advancements in technology and urban development

+
+

Presenting innovative solutions in technology and smart urban infrastructure.

+
+
+
+

Support economic growth and tourism in Saudi Arabia

+
+
+

Boosting the economy through increased tourism and international investments.

+
+
+
+ +

Key Features of Riyadh Expo 2030

+
+ + + + + + + + + + + + + + + + + + + + + +
FeatureDescription
SustainabilityFocus on renewable energy and eco-friendly infrastructure throughout the Expo.
Cultural ExchangeCountries from around the world will present their cultures, offering visitors an immersive experience.
Technology and InnovationShowcase of cutting-edge technologies in AI, urban development, and smart living solutions.
+
+ +
+ Riyadh Expo 2030 +
+
+ + + + + diff --git a/RiyadhExpo/main/templates/main/article.html b/RiyadhExpo/main/templates/main/article.html new file mode 100644 index 0000000..a562d20 --- /dev/null +++ b/RiyadhExpo/main/templates/main/article.html @@ -0,0 +1,112 @@ +{% load static %} + + + + + + AI Article + + + + + + + + +
+ +
+ +
+
+

AI and Riyadh Expo 2030: Shaping the Future

+ + +
+
+ AI in Future +
+
+

Artificial Intelligence (AI) is playing a critical role in shaping the vision of Riyadh Expo 2030. By integrating AI-driven technologies, the event aims to provide an enhanced, personalized experience for visitors while also ensuring the efficient management of resources. The Expo will showcase how AI can revolutionize tourism, sustainability, and urban development in line with Saudi Vision 2030.

+
+
+ + +

Transforming Visitor Experience

+
+
+ AI Transforming Visitor Experience +
+
+

AI technologies will be utilized to offer interactive and immersive experiences for visitors. From AI-powered guides that provide personalized recommendations to virtual reality tours of historical Saudi landmarks, the integration of AI promises to make Riyadh Expo 2030 an unforgettable event for all attendees.

+
+
+ + +

Sustainable Development

+
+
+ AI for Sustainability +
+
+

Sustainability is a core value of Riyadh Expo 2030, and AI plays a key role in this initiative. Smart energy management systems, predictive maintenance for facilities, and AI-driven environmental monitoring will help minimize the carbon footprint and optimize resource usage, making the Expo an exemplar of sustainable urban planning.

+
+
+ + +

AI for Enhanced Security

+
+
+ AI for Enhanced Security +
+
+

AI will also be deployed to ensure the safety and security of visitors. Through advanced surveillance systems, AI can detect unusual activities in real-time, ensuring a secure environment. Additionally, facial recognition technologies will streamline the entry process, making it faster and more efficient for attendees.

+
+
+ + +

A Vision for the Future

+
+
+ AI Vision for Future +
+
+

Riyadh Expo 2030 is not just about showcasing technology—it’s about envisioning a future where AI works hand in hand with human ingenuity to create better living environments, improve efficiencies, and bring communities together. The event will highlight Saudi Arabia’s commitment to technological progress and sustainability, setting a new benchmark for international expos.

+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/RiyadhExpo/main/templates/main/book_event.html b/RiyadhExpo/main/templates/main/book_event.html new file mode 100644 index 0000000..171ab10 --- /dev/null +++ b/RiyadhExpo/main/templates/main/book_event.html @@ -0,0 +1,127 @@ +{% load static %} + + + + + + Conference Register + + + + + + + + +
+ +
+ +
+

Conference Registration

+
+
+
+ + +
+
+ + +
+
+ +
+
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+
+ + + + + \ No newline at end of file diff --git a/RiyadhExpo/main/templates/main/introduction.html b/RiyadhExpo/main/templates/main/introduction.html new file mode 100644 index 0000000..df5ff60 --- /dev/null +++ b/RiyadhExpo/main/templates/main/introduction.html @@ -0,0 +1,121 @@ +{% load static %} + + + + + + RiyadhExpo 2030 + + + + + + +
+ +
+ +
+

Welcome to Riyadh Expo 2030

+ +
+
+ +
+
+
+

+ About Riyadh Expo 2030 Riyadh Expo 2030 is an ambitious global event that aims to bring together nations, cultures, and ideas under one roof. + The Expo is part of Saudi Vision 2030 and aims to showcase innovations in sustainability, technology, and culture. + With its emphasis on future-forward thinking, Riyadh Expo 2030 will be a hub for collaboration, knowledge-sharing, and inspiration for the world. + Read More +

+

The Era of Change: Together for a Foresighted Tomorrow

+

+ The Kingdom of Saudi Arabia achieved victory in the bid to host World Expo 2030 in Riyadh, under the captivating theme, + “The Era of Change: Together for a Foresighted Tomorrow.” Riyadh is poised to craft an unparalleled Expo edition that + will etch an indelible mark on the hearts and minds of its global visitors. +

+
+ +
+

Riyadh Expo 2030 Key Themes

+
+
+
+ Expo Card 1 +
+
Sustainability Innovations
+

Discover groundbreaking solutions in sustainability and green technology that will shape the future of our planet.

+
+
+
+ +
+
+ Expo Card 2 +
+
Cultural Exchange
+

Explore the rich cultures of the world through exhibitions and performances, all under one roof in Riyadh.

+
+
+
+ +
+
+ Expo Card 3 +
+
Technological Innovations
+

Experience the latest technological breakthroughs that will redefine the future of industries.

+
+
+
+ +
+
+ Expo Card 4 +
+
Economic Growth and Development
+

Discover initiatives that promote economic growth, investment opportunities, and sustainable development, driving progress for future generations.

+
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/RiyadhExpo/main/tests.py b/RiyadhExpo/main/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/RiyadhExpo/main/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/RiyadhExpo/main/urls.py b/RiyadhExpo/main/urls.py new file mode 100644 index 0000000..d63580d --- /dev/null +++ b/RiyadhExpo/main/urls.py @@ -0,0 +1,9 @@ +from django.urls import path +from . import views + +urlpatterns = [ + path('introduction/', views.introduction_view, name='introduction'), + path('about/', views.about_view, name='about'), + path('article/ai/', views.article, name='article'), + path('book/',views.bookevent_view, name="book_event"), +] diff --git a/RiyadhExpo/main/views.py b/RiyadhExpo/main/views.py new file mode 100644 index 0000000..4c91f62 --- /dev/null +++ b/RiyadhExpo/main/views.py @@ -0,0 +1,14 @@ +from django.shortcuts import render + +def introduction_view(request): + return render(request, 'main/introduction.html') + +def about_view(request): + return render(request, 'main/about.html') + +def article(request): + return render(request, 'main/article.html') + +def bookevent_view(request): + return render(request,'main/book_event.html') + diff --git a/RiyadhExpo/manage.py b/RiyadhExpo/manage.py new file mode 100644 index 0000000..1e8e950 --- /dev/null +++ b/RiyadhExpo/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "RiyadhExpo.settings") + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == "__main__": + main() diff --git a/test.py b/test.py new file mode 100644 index 0000000..e69de29