diff --git a/config/__pycache__/settings.cpython-311.pyc b/config/__pycache__/settings.cpython-311.pyc index 37e387a..c84cdbb 100644 Binary files a/config/__pycache__/settings.cpython-311.pyc and b/config/__pycache__/settings.cpython-311.pyc differ diff --git a/config/settings.py b/config/settings.py index 8169561..39ecb5d 100644 --- a/config/settings.py +++ b/config/settings.py @@ -76,7 +76,7 @@ ROOT_URLCONF = 'config.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], + 'DIRS': [BASE_DIR / 'core' / 'templates'], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ diff --git a/core/templates/admin/login.html b/core/templates/admin/login.html new file mode 100644 index 0000000..79533d6 --- /dev/null +++ b/core/templates/admin/login.html @@ -0,0 +1,63 @@ +{% extends "base.html" %} + +{% block content %} +
+ +
+
+ +
+
+
+
+ +

+ {% if site_header %}{{ site_header }}{% else %}Admin Login{% endif %} +

+ + {% if form.errors and not form.non_field_errors %} +

+ {% if form.errors.items|length == 1 %}Please correct the error below.{% else %}Please correct the errors below.{% endif %} +

+ {% endif %} + + {% if form.non_field_errors %} + {% for error in form.non_field_errors %} +

{{ error }}

+ {% endfor %} + {% endif %} + + {% if user.is_authenticated %} +

+ You are authenticated as {{ username }}, but are not authorized to access this page. Would you like to login to a different account? +

+ {% endif %} + +
+ {% csrf_token %} +
+ {{ form.username.errors }} + + {{ form.username }} +
+
+ {{ form.password.errors }} + + {{ form.password }} + +
+ +
+ +
+
+ + +
+
+
+
+
+{% endblock %} diff --git a/core/templates/registration/login.html b/core/templates/registration/login.html index 10499b9..12deb6b 100644 --- a/core/templates/registration/login.html +++ b/core/templates/registration/login.html @@ -1,23 +1,40 @@ {% extends "base.html" %} {% block content %} -
-
-
-
-
-

Log In

-
+
+ +
+
+ +
+
+
+
+

Welcome Back

+ {% csrf_token %} - {{ form.as_p }} - + {% for field in form %} +
+ + {{ field }} + {% if field.help_text %} +
{{ field.help_text }}
+ {% endif %} + {% for error in field.errors %} +
{{ error }}
+ {% endfor %} +
+ {% endfor %} + + -
-

Don't have an account? Sign up here

+ +
+

New here? Create an account

-{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/core/templates/registration/signup.html b/core/templates/registration/signup.html index cd814cc..95d18e2 100644 --- a/core/templates/registration/signup.html +++ b/core/templates/registration/signup.html @@ -1,23 +1,41 @@ {% extends "base.html" %} {% block content %} -
-
-
-
-
-

Sign Up

-
+
+ +
+
+ +
+
+
+
+

Join Us

+

Start your journey today and explore the possibilities.

+ {% csrf_token %} - {{ form.as_p }} - + {% for field in form %} +
+ + {{ field }} + {% if field.help_text %} +
{{ field.help_text|safe }}
+ {% endif %} + {% for error in field.errors %} +
{{ error }}
+ {% endfor %} +
+ {% endfor %} + + -
-

Already have an account? Log in here

+ +
+

Already registered? Log in

-{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/static/css/custom.css b/static/css/custom.css index 925f6ed..da5bfc8 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -1,4 +1,123 @@ /* Custom styles for the application */ body { font-family: system-ui, -apple-system, sans-serif; + background-color: #f7f9fc; } + +/* Glassmorphism Auth Page Styles */ +.auth-page { + background: linear-gradient(135deg, #f0f4ff 0%, #ffffff 100%); + overflow: hidden; + position: relative; + z-index: 1; +} + +.glass-card { + background: rgba(255, 255, 255, 0.7) !important; + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.5) !important; + border-radius: 20px !important; + box-shadow: 0 15px 35px rgba(0, 0, 0, 0.05) !important; + transition: transform 0.3s ease; +} + +.glass-card:hover { + transform: translateY(-5px); +} + +.btn-glass { + border-radius: 12px !important; + transition: all 0.3s ease !important; + text-transform: uppercase; + letter-spacing: 1px; +} + +.btn-glass:hover { + transform: translateY(-2px); + box-shadow: 0 8px 20px rgba(13, 110, 253, 0.3) !important; +} + +/* Form Styling */ +.auth-form input[type="text"], +.auth-form input[type="password"], +.auth-form input[type="email"] { + border: 1px solid #e2e8f0; + border-radius: 10px; + padding: 12px 16px; + background-color: rgba(255,255,255,0.8); + transition: all 0.2s ease-in-out; +} + +.auth-form input[type="text"]:focus, +.auth-form input[type="password"]:focus, +.auth-form input[type="email"]:focus { + background-color: #fff; + border-color: #0d6efd; + box-shadow: 0 0 0 4px rgba(13, 110, 253, 0.1); + outline: none; +} + +.auth-form .form-label { + letter-spacing: 0.5px; + font-size: 0.75rem; +} + +/* Decorative 3D Shapes using CSS */ +.shape { + position: absolute; + z-index: 0; + opacity: 0.6; + animation: float 6s ease-in-out infinite; +} + +.shape-sphere { + width: 250px; + height: 250px; + border-radius: 50%; + background: radial-gradient(circle at 30% 30%, #a8c0ff, #3f2b96); + filter: blur(4px); + opacity: 0.4; +} + +.shape-cube { + width: 150px; + height: 150px; + background: linear-gradient(135deg, #fbc2eb 0%, #a6c1ee 100%); + border-radius: 20px; + transform: rotate(45deg); + filter: blur(3px); + opacity: 0.3; +} + +.shape-cylinder { + width: 100px; + height: 300px; + border-radius: 50px; + background: linear-gradient(to right, #84fab0 0%, #8fd3f4 100%); + transform: rotate(30deg); + filter: blur(5px); + opacity: 0.3; +} + +/* Positioning */ +.top-left { top: -50px; left: -50px; animation-delay: 0s; } +.bottom-right { bottom: -50px; right: -50px; animation-delay: 2s; } +.top-right { top: 10%; right: -20px; animation-delay: 1s; } +.bottom-left { bottom: 10%; left: -30px; animation-delay: 3s; } + +@keyframes float { + 0% { transform: translateY(0px) rotate(0deg); } + 50% { transform: translateY(-20px) rotate(10deg); } + 100% { transform: translateY(0px) rotate(0deg); } +} + +@keyframes float-rotate { + 0% { transform: translateY(0px) rotate(45deg); } + 50% { transform: translateY(-25px) rotate(55deg); } + 100% { transform: translateY(0px) rotate(45deg); } +} + +.shape-cube.bottom-right { + animation: float-rotate 8s ease-in-out infinite; +} \ No newline at end of file diff --git a/staticfiles/css/custom.css b/staticfiles/css/custom.css index 108056f..da5bfc8 100644 --- a/staticfiles/css/custom.css +++ b/staticfiles/css/custom.css @@ -1,21 +1,123 @@ - -:root { - --bg-color-start: #6a11cb; - --bg-color-end: #2575fc; - --text-color: #ffffff; - --card-bg-color: rgba(255, 255, 255, 0.01); - --card-border-color: rgba(255, 255, 255, 0.1); -} +/* Custom styles for the application */ body { - margin: 0; - font-family: 'Inter', sans-serif; - background: linear-gradient(45deg, var(--bg-color-start), var(--bg-color-end)); - color: var(--text-color); - display: flex; - justify-content: center; - align-items: center; - min-height: 100vh; - text-align: center; + font-family: system-ui, -apple-system, sans-serif; + background-color: #f7f9fc; +} + +/* Glassmorphism Auth Page Styles */ +.auth-page { + background: linear-gradient(135deg, #f0f4ff 0%, #ffffff 100%); overflow: hidden; position: relative; + z-index: 1; } + +.glass-card { + background: rgba(255, 255, 255, 0.7) !important; + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.5) !important; + border-radius: 20px !important; + box-shadow: 0 15px 35px rgba(0, 0, 0, 0.05) !important; + transition: transform 0.3s ease; +} + +.glass-card:hover { + transform: translateY(-5px); +} + +.btn-glass { + border-radius: 12px !important; + transition: all 0.3s ease !important; + text-transform: uppercase; + letter-spacing: 1px; +} + +.btn-glass:hover { + transform: translateY(-2px); + box-shadow: 0 8px 20px rgba(13, 110, 253, 0.3) !important; +} + +/* Form Styling */ +.auth-form input[type="text"], +.auth-form input[type="password"], +.auth-form input[type="email"] { + border: 1px solid #e2e8f0; + border-radius: 10px; + padding: 12px 16px; + background-color: rgba(255,255,255,0.8); + transition: all 0.2s ease-in-out; +} + +.auth-form input[type="text"]:focus, +.auth-form input[type="password"]:focus, +.auth-form input[type="email"]:focus { + background-color: #fff; + border-color: #0d6efd; + box-shadow: 0 0 0 4px rgba(13, 110, 253, 0.1); + outline: none; +} + +.auth-form .form-label { + letter-spacing: 0.5px; + font-size: 0.75rem; +} + +/* Decorative 3D Shapes using CSS */ +.shape { + position: absolute; + z-index: 0; + opacity: 0.6; + animation: float 6s ease-in-out infinite; +} + +.shape-sphere { + width: 250px; + height: 250px; + border-radius: 50%; + background: radial-gradient(circle at 30% 30%, #a8c0ff, #3f2b96); + filter: blur(4px); + opacity: 0.4; +} + +.shape-cube { + width: 150px; + height: 150px; + background: linear-gradient(135deg, #fbc2eb 0%, #a6c1ee 100%); + border-radius: 20px; + transform: rotate(45deg); + filter: blur(3px); + opacity: 0.3; +} + +.shape-cylinder { + width: 100px; + height: 300px; + border-radius: 50px; + background: linear-gradient(to right, #84fab0 0%, #8fd3f4 100%); + transform: rotate(30deg); + filter: blur(5px); + opacity: 0.3; +} + +/* Positioning */ +.top-left { top: -50px; left: -50px; animation-delay: 0s; } +.bottom-right { bottom: -50px; right: -50px; animation-delay: 2s; } +.top-right { top: 10%; right: -20px; animation-delay: 1s; } +.bottom-left { bottom: 10%; left: -30px; animation-delay: 3s; } + +@keyframes float { + 0% { transform: translateY(0px) rotate(0deg); } + 50% { transform: translateY(-20px) rotate(10deg); } + 100% { transform: translateY(0px) rotate(0deg); } +} + +@keyframes float-rotate { + 0% { transform: translateY(0px) rotate(45deg); } + 50% { transform: translateY(-25px) rotate(55deg); } + 100% { transform: translateY(0px) rotate(45deg); } +} + +.shape-cube.bottom-right { + animation: float-rotate 8s ease-in-out infinite; +} \ No newline at end of file diff --git a/staticfiles/pasted-20260312-075015-5bfcde5a.png b/staticfiles/pasted-20260312-075015-5bfcde5a.png new file mode 100644 index 0000000..1486bd3 Binary files /dev/null and b/staticfiles/pasted-20260312-075015-5bfcde5a.png differ diff --git a/staticfiles/pasted-20260312-075439-a7d6936f.png b/staticfiles/pasted-20260312-075439-a7d6936f.png new file mode 100644 index 0000000..1486bd3 Binary files /dev/null and b/staticfiles/pasted-20260312-075439-a7d6936f.png differ diff --git a/staticfiles/pasted-20260312-080648-eac18161.png b/staticfiles/pasted-20260312-080648-eac18161.png new file mode 100644 index 0000000..a23385d Binary files /dev/null and b/staticfiles/pasted-20260312-080648-eac18161.png differ diff --git a/staticfiles/vm-shot-2026-03-12T07-54-30-697Z.jpg b/staticfiles/vm-shot-2026-03-12T07-54-30-697Z.jpg new file mode 100644 index 0000000..05f9e95 Binary files /dev/null and b/staticfiles/vm-shot-2026-03-12T07-54-30-697Z.jpg differ