From d8fe932b855198eb0db1d30a8479470847da30a9 Mon Sep 17 00:00:00 2001 From: Rachit Khurana <70265590+notnotrachit@users.noreply.github.com> Date: Thu, 26 Dec 2024 22:49:28 +0530 Subject: [PATCH 01/89] Made it workable again --- accounts/views.py | 6 +++--- apis/views.py | 16 ++++++++-------- hunt/decorators.py | 6 +++--- hunt/views.py | 11 +++++++---- redcrypt/settings.py | 39 +++++++++++++++++++-------------------- redcrypt/urls.py | 1 - requirements.txt | 6 +++--- 7 files changed, 43 insertions(+), 42 deletions(-) diff --git a/accounts/views.py b/accounts/views.py index e3592e6..f10cc19 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -8,7 +8,7 @@ from allauth.account.utils import send_email_confirmation from django.core.exceptions import ObjectDoesNotExist from hunt.utils import get_rank -from sentry_sdk import capture_exception +# from sentry_sdk import capture_exception from accounts.forms import ContactForm @@ -77,7 +77,7 @@ def save_profile(request): profile.save() return JsonResponse({'saved': True}, status=200) except Exception as e: - capture_exception(e) + # capture_exception(e) return JsonResponse({'saved': False}, status=400) @@ -137,7 +137,7 @@ def submit_contact_form(request): form_model.save() return JsonResponse({'saved': True}, status=200) except Exception as e: - capture_exception(e) + # capture_exception(e) return JsonResponse( {'saved': False, 'message': str(e)}, status=400) diff --git a/apis/views.py b/apis/views.py index 94f09c6..53290da 100644 --- a/apis/views.py +++ b/apis/views.py @@ -7,7 +7,7 @@ from hunt.models import EasterEgg from django.core.exceptions import ObjectDoesNotExist from hunt.utils import get_rank, update_rank_all, backup_db -from sentry_sdk import capture_exception +# from sentry_sdk import capture_exception from django.views.decorators.csrf import csrf_exempt from extra_settings.models import Setting @@ -54,7 +54,7 @@ def verify_discord_id(request, discord_id): except ObjectDoesNotExist: return HttpResponse(status=404) except Exception as e: - capture_exception(e) + # capture_exception(e) return HttpResponse(status=500) @@ -85,7 +85,7 @@ def leaderboard(request): 'score': user.score, 'rank': rank}) return HttpResponse(json.dumps(data_dict)) except Exception as e: - capture_exception(e) + # capture_exception(e) return HttpResponse(status=500) @@ -105,7 +105,7 @@ def stats(request, discord_id): except ObjectDoesNotExist: return HttpResponse(status=404) except Exception as e: - capture_exception(e) + # capture_exception(e) return HttpResponse(status=500) @@ -123,7 +123,7 @@ def ban(request, discord_id, reason): except ObjectDoesNotExist: return HttpResponse(status=404) except Exception as e: - capture_exception(e) + # capture_exception(e) return HttpResponse(status=500) @@ -140,7 +140,7 @@ def unban(request, discord_id): except ObjectDoesNotExist: return HttpResponse(status=404) except Exception as e: - capture_exception(e) + # capture_exception(e) return HttpResponse(status=500) @@ -174,12 +174,12 @@ def easteregg(request, discord_id, egg): 'code': 'not_found', 'response': 'Wrong! Try again!'}) except Exception as e: - capture_exception(e) + # capture_exception(e) return HttpResponse(status=500) except ObjectDoesNotExist: return HttpResponse(status=404) except Exception as e: - capture_exception(e) + # capture_exception(e) return HttpResponse(status=500) diff --git a/hunt/decorators.py b/hunt/decorators.py index 832e80f..177a04d 100644 --- a/hunt/decorators.py +++ b/hunt/decorators.py @@ -1,6 +1,6 @@ from extra_settings.models import Setting from django.shortcuts import redirect, render -from sentry_sdk import capture_exception +# from sentry_sdk import capture_exception def hunt_status(function): @@ -33,7 +33,7 @@ def wrap(request, *args, **kwargs): elif status == 'ended': return render(request, 'ended.html') except Exception as e: - capture_exception(e) + # capture_exception(e) return redirect('index') wrap.__doc__ = function.__doc__ @@ -51,7 +51,7 @@ def wrap(request, *args, **kwargs): return function(request, *args, **kwargs) except Exception as e: - capture_exception(e) + # capture_exception(e) return redirect('index') wrap.__doc__ = function.__doc__ diff --git a/hunt/views.py b/hunt/views.py index 3eb8088..84a38e6 100644 --- a/hunt/views.py +++ b/hunt/views.py @@ -7,7 +7,7 @@ from hunt.models import LevelTracking, AnswerAttempt, SampleQuestion from accounts.models import Profile from hunt.utils import match_answer, get_rank, update_rank_all -from sentry_sdk import capture_exception +# from sentry_sdk import capture_exception import os import requests from datetime import datetime @@ -59,13 +59,15 @@ def check_ans(request): level=profile.current_level, answer=answer) except Exception as e: - capture_exception(e) + # capture_exception(e) + print(e) try: profile.stats[str(question.level)] += 1 except KeyError: profile.stats[str(question.level)] = 1 except Exception as e: - capture_exception(e) + # capture_exception(e) + print(e) if match_answer(question.answer, answer): profile.current_level += 1 profile.score += question.points @@ -76,7 +78,8 @@ def check_ans(request): user=request.user, level=profile.current_level) except Exception as e: - capture_exception(e) + # capture_exception(e) + print(e) url = f"{os.getenv('BOT_HOST')}/level/complete/{profile.discord_id}/{int(profile.current_level)-1}" headers = {"Authorization": os.getenv("API_Authorization")} request = requests.post(url, headers=headers) diff --git a/redcrypt/settings.py b/redcrypt/settings.py index 73b5e61..22768e7 100644 --- a/redcrypt/settings.py +++ b/redcrypt/settings.py @@ -13,8 +13,9 @@ from pathlib import Path import os from dotenv import load_dotenv -import sentry_sdk -from sentry_sdk.integrations.django import DjangoIntegration +from django.core.management.utils import get_random_secret_key; +# import sentry_sdk +# from sentry_sdk.integrations.django import DjangoIntegration load_dotenv() @@ -26,7 +27,7 @@ # See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = os.environ.get("SECRET_KEY") +SECRET_KEY = os.environ.get("SECRET_KEY", get_random_secret_key()) # SECURITY WARNING: don't run with debug turned on in production! try: @@ -59,7 +60,7 @@ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.sites', - 'django.contrib.contenttypes', + 'django.contrib.contenttypes', # Add this line 'django.contrib.sessions', 'django.contrib.messages', 'whitenoise.runserver_nostatic', @@ -75,8 +76,7 @@ 'url_shortner', 'hcaptcha', 'maintenance_mode', - 'pwa', - 'debug_toolbar', + 'pwa' ] MIDDLEWARE = [ @@ -90,7 +90,6 @@ 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'redcrypt.middleware.CustomMiddleware', 'maintenance_mode.middleware.MaintenanceModeMiddleware', - 'debug_toolbar.middleware.DebugToolbarMiddleware', ] ROOT_URLCONF = 'redcrypt.urls' @@ -126,19 +125,19 @@ 'NAME': BASE_DIR / 'db.sqlite3', } } -sentry_sdk.init( - dsn=os.getenv('SENTRY_DSN'), - integrations=[DjangoIntegration()], - - # Set traces_sample_rate to 1.0 to capture 100% - # of transactions for performance monitoring. - # We recommend adjusting this value in production. - traces_sample_rate=1.0, - - # If you wish to associate users to errors (assuming you are using - # django.contrib.auth) you may enable sending PII data. - send_default_pii=True -) +# sentry_sdk.init( +# dsn=os.getenv('SENTRY_DSN'), +# integrations=[DjangoIntegration()], + +# # Set traces_sample_rate to 1.0 to capture 100% +# # of transactions for performance monitoring. +# # We recommend adjusting this value in production. +# traces_sample_rate=1.0, + +# # If you wish to associate users to errors (assuming you are using +# # django.contrib.auth) you may enable sending PII data. +# send_default_pii=True +# ) # Password validation # https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators diff --git a/redcrypt/urls.py b/redcrypt/urls.py index c46ad94..898ce12 100644 --- a/redcrypt/urls.py +++ b/redcrypt/urls.py @@ -86,5 +86,4 @@ path('', include(( 'url_shortner.urls', 'url_shortner'), namespace='url_shortner')), - path('__debug__/', include('debug_toolbar.urls')), ] diff --git a/requirements.txt b/requirements.txt index 8364939..4ed553c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -Django==4.0.8 +Django==5.0.1 django-admin-interface==0.19.1 django-admin-honeypot==1.1.0 django-ipware==4.0.2 @@ -9,8 +9,8 @@ django-allauth==0.51.0 django-hCaptcha==0.2.0 whitenoise==6.2.0 django-maintenance-mode==0.16.3 -django-debug-toolbar==3.5.0 +# django-debug-toolbar==3.5.0 django-pwa==1.0.10 -django-admin-interface==0.20.0 +django-admin-interface==0.19.1 pyminizip discord-webhook From c2ccf13a409d81546ebdb83bb3b009f9bfde22eb Mon Sep 17 00:00:00 2001 From: Sahil Nihalani Date: Fri, 27 Dec 2024 12:49:26 +0530 Subject: [PATCH 02/89] feat: initial navbar changes --- .env.example | 9 - static/bg.svg | 2 +- static/logo_banner.svg | 2 +- tailwind.config.js | 0 templates/403_csrf.html | 41 +- templates/500.html | 41 +- templates/503.html | 41 +- templates/auth_header.html | 286 ++++- templates/base.html | 496 +++++---- templates/homepage.html | 1882 +++++++++++++++++++++++++++------ templates/no_auth_header.html | 154 ++- 11 files changed, 2205 insertions(+), 749 deletions(-) delete mode 100644 .env.example create mode 100644 tailwind.config.js diff --git a/.env.example b/.env.example deleted file mode 100644 index 581be93..0000000 --- a/.env.example +++ /dev/null @@ -1,9 +0,0 @@ -API_Authorization= -SENTRY_DSN= -EMAIL_HOST_USER= -EMAIL_HOST_PASSWORD= -DISCORD_LOGGING_WEBHOOK= -HCAPTCHA_SITEKEY= -HCAPTCHA_SECRET= -MAINTENANCE_MODE= -BOT_HOST= \ No newline at end of file diff --git a/static/bg.svg b/static/bg.svg index ebaac14..506c86c 100644 --- a/static/bg.svg +++ b/static/bg.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/static/logo_banner.svg b/static/logo_banner.svg index 658ab08..303d3b1 100644 --- a/static/logo_banner.svg +++ b/static/logo_banner.svg @@ -112,7 +112,7 @@ inkscape:label="Layer 2"> - + - -
- - - -
+ + {% include 'no_auth_header.html' %}
diff --git a/templates/500.html b/templates/500.html index 07b0fb2..72796f4 100644 --- a/templates/500.html +++ b/templates/500.html @@ -17,7 +17,7 @@ 'nblue': { DEFAULT: '#00D2D2', '50': '#8BFFFF', '100': '#76FFFF', '200': '#4DFFFF', '300': '#25FFFF', '400': '#00FBFB', '500': '#00D2D2', '600': '#009A9A', '700': '#006262', '800': '#002A2A', '900': '#000000'}, }, fontFamily: { - Orbitron: ['Orbitron'], + Inter: ['Inter'], }, } } @@ -55,44 +55,11 @@ - + - -
- -
- - + + {% include 'no_auth_header.html' %}
diff --git a/templates/503.html b/templates/503.html index 21f4d49..0f577ae 100644 --- a/templates/503.html +++ b/templates/503.html @@ -17,7 +17,7 @@ 'nblue': { DEFAULT: '#00D2D2', '50': '#8BFFFF', '100': '#76FFFF', '200': '#4DFFFF', '300': '#25FFFF', '400': '#00FBFB', '500': '#00D2D2', '600': '#009A9A', '700': '#006262', '800': '#002A2A', '900': '#000000'}, }, fontFamily: { - Orbitron: ['Orbitron'], + Inter: ['Inter'], }, } } @@ -83,44 +83,11 @@ - + - -
- -
- - + + {% include 'no_auth_header.html' %}
diff --git a/templates/auth_header.html b/templates/auth_header.html index c476346..c769c42 100644 --- a/templates/auth_header.html +++ b/templates/auth_header.html @@ -1,64 +1,236 @@ -{% load static %} -{% load profile_tags %} -
-
+ + + +
+
+
+ +
+ - - - -
-
+
+
+ avatar + {{user.username}} +
+
+ {% if user.is_staff %} + Admin Panel + {% endif %} + Profile +
+ {% csrf_token %} + +
+
+
+
+
+ +
+
+
+ + -
- {{user.username}} - - - -
-
+ +
+ +
+ + +
+ {{user.username}} +
+ + + +
-
-
+ +
+ + + diff --git a/templates/base.html b/templates/base.html index 9538fcf..3e2dcac 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,231 +1,311 @@ -{% load static %} -{% load pwa %} +{% load static %} {% load pwa %} - - {% block head_title %}{% endblock %} | Re-Dcrypt - - - - - - - - - - - - - - - - {% progressive_web_app_meta %} - - - - - - - - - - - - - - - {% block head %}{% endblock head %} + } + + #custom_toast { + visibility: hidden; + opacity: 0; + transition: all 0.5s; + position: fixed; + bottom: -999px; + left: 25%; + } + + #custom_toast.show { + visibility: visible; + opacity: 1; + transition: all 0.5s; + bottom: 10px; + } + + .promptPopup-show { + background-color: rgba(0, 41, 41, 1); + border: 1px solid #00d2d2; + } + + .webpushrOnBtn, + .webpushrUnknownBtn { + color: #00d2d2; + } + + #webpushrUnknownBtn { + color: #002a2a; + } + + popup_poweredby { + display: none; + opacity: 0; + visibility: hidden; + } + + #webpushrOnBtn { + background-color: #b02323; + } + + .webpushr-notification:hover { + background-color: #00d2d2; + color: #002a2a; + } + + popup_heading.popup-button-heading { + border-top: 1px solid #00d2d2; + } + + webpushrwppromptbox2_wrapper { + border-width: 2px; + border-color: #00d2d2; + } + + #webpushr-subscription-button { + display: block; + padding-top: 1rem; + padding-bottom: 1rem; + padding-left: 0.5rem; + padding-right: 0.5rem; + color: #00d2d2; + background-color: transparent; + } + + ::-webkit-scrollbar { + width: 10px; + } + + ::-webkit-scrollbar-track { + background-color: #002a2a; + } + + ::-webkit-scrollbar-thumb { + width: 5px; + background-color: #008787; + border-radius: 20px; + border: 6px solid transparent; + background-clip: content-box; + } + + ::-webkit-scrollbar-thumb:hover { + background-color: #00d2d2; + } + + .font-Inter { + font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11'; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + + {% block head %}{% endblock head %} - - {% if user.is_authenticated %} - {% include 'auth_header.html' %} -{% else %} - {% include 'no_auth_header.html' %} -{% endif %} -
{% block content %}{% endblock content %} - -
-
- -
- - + {% if user.is_authenticated %} -{% block scripts %}{% endblock scripts %} - + {% block scripts %}{% endblock scripts %} + + {% if user.is_authenticated %} - webpushr('attributes',{"username" : "{{user.username}}"}); + {% endif %} - - -{% if user.is_authenticated %} - -{% endif %} - + + \ No newline at end of file diff --git a/templates/homepage.html b/templates/homepage.html index fafa82b..799e487 100644 --- a/templates/homepage.html +++ b/templates/homepage.html @@ -6,282 +6,1469 @@ - - Re-Dcrypt - - - - - - - - - - - - - - {% progressive_web_app_meta %} - - + - - - - - - - - - - - + + + - - - - - {% block head %}{% endblock head %} + } + + @keyframes animate-svg-fill-1 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 0, 0) + } + } + + .svg-elem-1 { + -webkit-animation: animate-svg-stroke-1 0.3s ease 0s both, animate-svg-fill-1 0.3s ease 0.7s both; + animation: animate-svg-stroke-1 0.3s ease 0s both, animate-svg-fill-1 0.3s ease 0.7s both + } + + @-webkit-keyframes animate-svg-stroke-2 { + 0% { + stroke-dashoffset: 3565.2236328125px; + stroke-dasharray: 3565.2236328125px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 3565.2236328125px + } + } + + @keyframes animate-svg-stroke-2 { + 0% { + stroke-dashoffset: 3565.2236328125px; + stroke-dasharray: 3565.2236328125px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 3565.2236328125px + } + } + + @-webkit-keyframes animate-svg-fill-2 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 0, 0) + } + } + + @keyframes animate-svg-fill-2 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 0, 0) + } + } + + .svg-elem-2 { + -webkit-animation: animate-svg-stroke-2 0.3s ease 0.12s both, animate-svg-fill-2 0.3s ease 0.7999999999999999s both; + animation: animate-svg-stroke-2 0.3s ease 0.12s both, animate-svg-fill-2 0.3s ease 0.7999999999999999s both + } + + @-webkit-keyframes animate-svg-stroke-3 { + 0% { + stroke-dashoffset: 539.0068969726562px; + stroke-dasharray: 539.0068969726562px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 539.0068969726562px + } + } + + @keyframes animate-svg-stroke-3 { + 0% { + stroke-dashoffset: 539.0068969726562px; + stroke-dasharray: 539.0068969726562px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 539.0068969726562px + } + } + + @-webkit-keyframes animate-svg-fill-3 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-3 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-3 { + -webkit-animation: animate-svg-stroke-3 0.3s ease 0.24s both, animate-svg-fill-3 0.3s ease 0.8999999999999999s both; + animation: animate-svg-stroke-3 0.3s ease 0.24s both, animate-svg-fill-3 0.3s ease 0.8999999999999999s both + } + + @-webkit-keyframes animate-svg-stroke-4 { + 0% { + stroke-dashoffset: 567.200439453125px; + stroke-dasharray: 567.200439453125px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 567.200439453125px + } + } + + @keyframes animate-svg-stroke-4 { + 0% { + stroke-dashoffset: 567.200439453125px; + stroke-dasharray: 567.200439453125px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 567.200439453125px + } + } + + @-webkit-keyframes animate-svg-fill-4 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-4 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-4 { + -webkit-animation: animate-svg-stroke-4 0.3s ease 0.36s both, animate-svg-fill-4 0.3s ease 1s both; + animation: animate-svg-stroke-4 0.3s ease 0.36s both, animate-svg-fill-4 0.3s ease 1s both + } + + @-webkit-keyframes animate-svg-stroke-5 { + 0% { + stroke-dashoffset: 588.6129760742188px; + stroke-dasharray: 588.6129760742188px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 588.6129760742188px + } + } + + @keyframes animate-svg-stroke-5 { + 0% { + stroke-dashoffset: 588.6129760742188px; + stroke-dasharray: 588.6129760742188px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 588.6129760742188px + } + } + + @-webkit-keyframes animate-svg-fill-5 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-5 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-5 { + -webkit-animation: animate-svg-stroke-5 0.3s ease 0.48s both, animate-svg-fill-5 0.3s ease 1.1s both; + animation: animate-svg-stroke-5 0.3s ease 0.48s both, animate-svg-fill-5 0.3s ease 1.1s both + } + + @-webkit-keyframes animate-svg-stroke-6 { + 0% { + stroke-dashoffset: 603.1051025390625px; + stroke-dasharray: 603.1051025390625px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 603.1051025390625px + } + } + + @keyframes animate-svg-stroke-6 { + 0% { + stroke-dashoffset: 603.1051025390625px; + stroke-dasharray: 603.1051025390625px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 603.1051025390625px + } + } + + @-webkit-keyframes animate-svg-fill-6 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-6 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-6 { + -webkit-animation: animate-svg-stroke-6 0.3s ease 0.6s both, animate-svg-fill-6 0.3s ease 1.2s both; + animation: animate-svg-stroke-6 0.3s ease 0.6s both, animate-svg-fill-6 0.3s ease 1.2s both + } + + @-webkit-keyframes animate-svg-stroke-7 { + 0% { + stroke-dashoffset: 620.0493774414062px; + stroke-dasharray: 620.0493774414062px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 620.0493774414062px + } + } + + @keyframes animate-svg-stroke-7 { + 0% { + stroke-dashoffset: 620.0493774414062px; + stroke-dasharray: 620.0493774414062px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 620.0493774414062px + } + } + + @-webkit-keyframes animate-svg-fill-7 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-7 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-7 { + -webkit-animation: animate-svg-stroke-7 0.3s ease 0.72s both, animate-svg-fill-7 0.3s ease 1.3s both; + animation: animate-svg-stroke-7 0.3s ease 0.72s both, animate-svg-fill-7 0.3s ease 1.3s both + } + + @-webkit-keyframes animate-svg-stroke-8 { + 0% { + stroke-dashoffset: 639.1346435546875px; + stroke-dasharray: 639.1346435546875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 639.1346435546875px + } + } + + @keyframes animate-svg-stroke-8 { + 0% { + stroke-dashoffset: 639.1346435546875px; + stroke-dasharray: 639.1346435546875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 639.1346435546875px + } + } + + @-webkit-keyframes animate-svg-fill-8 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-8 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-8 { + -webkit-animation: animate-svg-stroke-8 0.3s ease 0.84s both, animate-svg-fill-8 0.3s ease 1.4s both; + animation: animate-svg-stroke-8 0.3s ease 0.84s both, animate-svg-fill-8 0.3s ease 1.4s both + } + + @-webkit-keyframes animate-svg-stroke-9 { + 0% { + stroke-dashoffset: 639.1345825195312px; + stroke-dasharray: 639.1345825195312px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 639.1345825195312px + } + } + + @keyframes animate-svg-stroke-9 { + 0% { + stroke-dashoffset: 639.1345825195312px; + stroke-dasharray: 639.1345825195312px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 639.1345825195312px + } + } + + @-webkit-keyframes animate-svg-fill-9 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-9 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-9 { + -webkit-animation: animate-svg-stroke-9 0.3s ease 0.96s both, animate-svg-fill-9 0.3s ease 1.5s both; + animation: animate-svg-stroke-9 0.3s ease 0.96s both, animate-svg-fill-9 0.3s ease 1.5s both + } + + @-webkit-keyframes animate-svg-stroke-10 { + 0% { + stroke-dashoffset: 620.0493774414062px; + stroke-dasharray: 620.0493774414062px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 620.0493774414062px + } + } + + @keyframes animate-svg-stroke-10 { + 0% { + stroke-dashoffset: 620.0493774414062px; + stroke-dasharray: 620.0493774414062px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 620.0493774414062px + } + } + + @-webkit-keyframes animate-svg-fill-10 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-10 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-10 { + -webkit-animation: animate-svg-stroke-10 0.3s ease 1.08s both, animate-svg-fill-10 0.3s ease 1.6s both; + animation: animate-svg-stroke-10 0.3s ease 1.08s both, animate-svg-fill-10 0.3s ease 1.6s both + } + + @-webkit-keyframes animate-svg-stroke-11 { + 0% { + stroke-dashoffset: 603.1051025390625px; + stroke-dasharray: 603.1051025390625px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 603.1051025390625px + } + } + + @keyframes animate-svg-stroke-11 { + 0% { + stroke-dashoffset: 603.1051025390625px; + stroke-dasharray: 603.1051025390625px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 603.1051025390625px + } + } + + @-webkit-keyframes animate-svg-fill-11 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-11 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-11 { + -webkit-animation: animate-svg-stroke-11 0.3s ease 1.2s both, animate-svg-fill-11 0.3s ease 1.7s both; + animation: animate-svg-stroke-11 0.3s ease 1.2s both, animate-svg-fill-11 0.3s ease 1.7s both + } + + @-webkit-keyframes animate-svg-stroke-12 { + 0% { + stroke-dashoffset: 588.6129150390625px; + stroke-dasharray: 588.6129150390625px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 588.6129150390625px + } + } + + @keyframes animate-svg-stroke-12 { + 0% { + stroke-dashoffset: 588.6129150390625px; + stroke-dasharray: 588.6129150390625px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 588.6129150390625px + } + } + + @-webkit-keyframes animate-svg-fill-12 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-12 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-12 { + -webkit-animation: animate-svg-stroke-12 0.3s ease 1.3199999999999998s both, animate-svg-fill-12 0.3s ease 1.8s both; + animation: animate-svg-stroke-12 0.3s ease 1.3199999999999998s both, animate-svg-fill-12 0.3s ease 1.8s both + } + + @-webkit-keyframes animate-svg-stroke-13 { + 0% { + stroke-dashoffset: 567.200439453125px; + stroke-dasharray: 567.200439453125px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 567.200439453125px + } + } + + @keyframes animate-svg-stroke-13 { + 0% { + stroke-dashoffset: 567.200439453125px; + stroke-dasharray: 567.200439453125px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 567.200439453125px + } + } + + @-webkit-keyframes animate-svg-fill-13 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-13 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-13 { + -webkit-animation: animate-svg-stroke-13 0.3s ease 1.44s both, animate-svg-fill-13 0.3s ease 1.9000000000000001s both; + animation: animate-svg-stroke-13 0.3s ease 1.44s both, animate-svg-fill-13 0.3s ease 1.9000000000000001s both + } + + @-webkit-keyframes animate-svg-stroke-14 { + 0% { + stroke-dashoffset: 216.68701171875px; + stroke-dasharray: 216.68701171875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 216.68701171875px + } + } + + @keyframes animate-svg-stroke-14 { + 0% { + stroke-dashoffset: 216.68701171875px; + stroke-dasharray: 216.68701171875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 216.68701171875px + } + } + + @-webkit-keyframes animate-svg-fill-14 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-14 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-14 { + -webkit-animation: animate-svg-stroke-14 0.3s ease 1.56s both, animate-svg-fill-14 0.3s ease 2s both; + animation: animate-svg-stroke-14 0.3s ease 1.56s both, animate-svg-fill-14 0.3s ease 2s both + } + + @-webkit-keyframes animate-svg-stroke-15 { + 0% { + stroke-dashoffset: 580.7634887695312px; + stroke-dasharray: 580.7634887695312px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 580.7634887695312px + } + } + + @keyframes animate-svg-stroke-15 { + 0% { + stroke-dashoffset: 580.7634887695312px; + stroke-dasharray: 580.7634887695312px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 580.7634887695312px + } + } + + @-webkit-keyframes animate-svg-fill-15 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-15 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-15 { + -webkit-animation: animate-svg-stroke-15 0.3s ease 1.68s both, animate-svg-fill-15 0.3s ease 2.1s both; + animation: animate-svg-stroke-15 0.3s ease 1.68s both, animate-svg-fill-15 0.3s ease 2.1s both + } + + @-webkit-keyframes animate-svg-stroke-16 { + 0% { + stroke-dashoffset: 2002.7060546875px; + stroke-dasharray: 2002.7060546875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 2002.7060546875px + } + } + + @keyframes animate-svg-stroke-16 { + 0% { + stroke-dashoffset: 2002.7060546875px; + stroke-dasharray: 2002.7060546875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 2002.7060546875px + } + } + + @-webkit-keyframes animate-svg-fill-16 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-16 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-16 { + -webkit-animation: animate-svg-stroke-16 0.3s ease 1.7999999999999998s both, animate-svg-fill-16 0.3s ease 2.2s both; + animation: animate-svg-stroke-16 0.3s ease 1.7999999999999998s both, animate-svg-fill-16 0.3s ease 2.2s both + } + + @-webkit-keyframes animate-svg-stroke-17 { + 0% { + stroke-dashoffset: 482px; + stroke-dasharray: 482px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 482px + } + } + + @keyframes animate-svg-stroke-17 { + 0% { + stroke-dashoffset: 482px; + stroke-dasharray: 482px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 482px + } + } + + @-webkit-keyframes animate-svg-fill-17 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-17 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-17 { + -webkit-animation: animate-svg-stroke-17 0.3s ease 1.92s both, animate-svg-fill-17 0.3s ease 2.3s both; + animation: animate-svg-stroke-17 0.3s ease 1.92s both, animate-svg-fill-17 0.3s ease 2.3s both + } + + @-webkit-keyframes animate-svg-stroke-18 { + 0% { + stroke-dashoffset: 2297.06201171875px; + stroke-dasharray: 2297.06201171875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 2297.06201171875px + } + } + + @keyframes animate-svg-stroke-18 { + 0% { + stroke-dashoffset: 2297.06201171875px; + stroke-dasharray: 2297.06201171875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 2297.06201171875px + } + } + + @-webkit-keyframes animate-svg-fill-18 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-18 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-18 { + -webkit-animation: animate-svg-stroke-18 0.3s ease 2.04s both, animate-svg-fill-18 0.3s ease 2.4000000000000004s both; + animation: animate-svg-stroke-18 0.3s ease 2.04s both, animate-svg-fill-18 0.3s ease 2.4000000000000004s both + } + + @-webkit-keyframes animate-svg-stroke-19 { + 0% { + stroke-dashoffset: 1527.3289794921875px; + stroke-dasharray: 1527.3289794921875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 1527.3289794921875px + } + } + + @keyframes animate-svg-stroke-19 { + 0% { + stroke-dashoffset: 1527.3289794921875px; + stroke-dasharray: 1527.3289794921875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 1527.3289794921875px + } + } + + @-webkit-keyframes animate-svg-fill-19 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-19 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-19 { + -webkit-animation: animate-svg-stroke-19 0.3s ease 2.16s both, animate-svg-fill-19 0.3s ease 2.5s both; + animation: animate-svg-stroke-19 0.3s ease 2.16s both, animate-svg-fill-19 0.3s ease 2.5s both + } + + @-webkit-keyframes animate-svg-stroke-20 { + 0% { + stroke-dashoffset: 960.3469848632812px; + stroke-dasharray: 960.3469848632812px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 960.3469848632812px + } + } + + @keyframes animate-svg-stroke-20 { + 0% { + stroke-dashoffset: 960.3469848632812px; + stroke-dasharray: 960.3469848632812px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 960.3469848632812px + } + } + + @-webkit-keyframes animate-svg-fill-20 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-20 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-20 { + -webkit-animation: animate-svg-stroke-20 0.3s ease 2.28s both, animate-svg-fill-20 0.3s ease 2.6s both; + animation: animate-svg-stroke-20 0.3s ease 2.28s both, animate-svg-fill-20 0.3s ease 2.6s both + } + + @-webkit-keyframes animate-svg-stroke-21 { + 0% { + stroke-dashoffset: 2094.233154296875px; + stroke-dasharray: 2094.233154296875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 2094.233154296875px + } + } + + @keyframes animate-svg-stroke-21 { + 0% { + stroke-dashoffset: 2094.233154296875px; + stroke-dasharray: 2094.233154296875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 2094.233154296875px + } + } + + @-webkit-keyframes animate-svg-fill-21 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-21 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-21 { + -webkit-animation: animate-svg-stroke-21 0.3s ease 2.4s both, animate-svg-fill-21 0.3s ease 2.7s both; + animation: animate-svg-stroke-21 0.3s ease 2.4s both, animate-svg-fill-21 0.3s ease 2.7s both + } + + @-webkit-keyframes animate-svg-stroke-22 { + 0% { + stroke-dashoffset: 2000.40185546875px; + stroke-dasharray: 2000.40185546875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 2000.40185546875px + } + } + + @keyframes animate-svg-stroke-22 { + 0% { + stroke-dashoffset: 2000.40185546875px; + stroke-dasharray: 2000.40185546875px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 2000.40185546875px + } + } + + @-webkit-keyframes animate-svg-fill-22 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-22 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-22 { + -webkit-animation: animate-svg-stroke-22 0.3s ease 2.52s both, animate-svg-fill-22 0.3s ease 2.8s both; + animation: animate-svg-stroke-22 0.3s ease 2.52s both, animate-svg-fill-22 0.3s ease 2.8s both + } + + @-webkit-keyframes animate-svg-stroke-23 { + 0% { + stroke-dashoffset: 1265.144287109375px; + stroke-dasharray: 1265.144287109375px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 1265.144287109375px + } + } + + @keyframes animate-svg-stroke-23 { + 0% { + stroke-dashoffset: 1265.144287109375px; + stroke-dasharray: 1265.144287109375px + } + + 100% { + stroke-dashoffset: 0; + stroke-dasharray: 1265.144287109375px + } + } + + @-webkit-keyframes animate-svg-fill-23 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + @keyframes animate-svg-fill-23 { + 0% { + fill: transparent + } + + 100% { + fill: rgb(0, 210, 210) + } + } + + .svg-elem-23 { + -webkit-animation: animate-svg-stroke-23 0.3s ease 2.6399999999999997s both, animate-svg-fill-23 0.3s ease 2.9000000000000004s both; + animation: animate-svg-stroke-23 0.3s ease 2.6399999999999997s both, animate-svg-fill-23 0.3s ease 2.9000000000000004s both + } + + + {% block head %}{% endblock head %} - - {% if user.is_authenticated %} -
-
- - - - -
-
-
- {{user.username}} - - - -
-
-
-
- - -
+ + + {% if user.is_authenticated %} + {% include 'auth_header.html' %} {% else %} -
- - - -
+ {% include 'no_auth_header.html' %} {% endif %} -
-

+

+
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -

-

- 8th & 9th October
Re-Dcrypt cryptic hunt
Are you one who can solve the cryptic questions?
-
- - - - - - - +

+

+ 8th & 9th October
Re-Dcrypt cryptic hunt
Are you one who can solve the + cryptic questions?
+
+ + + + + + +

-

- Prizes +

+

+ Prizes + @@ -294,19 +1481,19 @@ - + @@ -314,18 +1501,18 @@ - + @@ -334,83 +1521,116 @@
Top 3
    -
  • Taskade Unlimited for Lifetime
  • -
  • 1 year .xyz domain
  • -
  • Certificate of appreciation
  • +
  • Taskade Unlimited for Lifetime
  • +
  • 1 year .xyz domain
  • +
  • Certificate of appreciation
Top 10
    -
  • Taskade Unlimited for Lifetime
  • -
  • 1 year .xyz domain
  • -
  • Certificate of participation
  • +
  • Taskade Unlimited for Lifetime
  • +
  • 1 year .xyz domain
  • +
  • Certificate of participation
Top 40
    -
  • Taskade Unlimited for 5 years
  • -
  • 1 year .xyz domain
  • -
  • Certificate of participation
  • +
  • Taskade Unlimited for 5 years
  • +
  • 1 year .xyz domain
  • +
  • Certificate of participation
Everyone
    -
  • Taskade Unlimited for 5 years
  • -
  • Certificate of participation
  • +
  • Taskade Unlimited for 5 years
  • +
  • Certificate of participation

-

- Sponsors +

+

+ Sponsors +

- - -
-
- + + taskade + + + gen.xyz + +
+
+ + +
+
+
- {% if user.is_authenticated %} - - + + + {% if user.is_authenticated %} - webpushr('attributes',{"username" : "{{user.username}}"}); + {% endif %} + - -{% if user.is_authenticated %} - -{% endif %} - + + \ No newline at end of file diff --git a/templates/no_auth_header.html b/templates/no_auth_header.html index 7c6379f..50e0dcd 100644 --- a/templates/no_auth_header.html +++ b/templates/no_auth_header.html @@ -1,36 +1,128 @@ {% load static %} -
-
-
- +
+ + + From 352c8d952f8b304147eedfc87798ee69b9eb8656 Mon Sep 17 00:00:00 2001 From: Sahil Nihalani Date: Fri, 27 Dec 2024 13:38:24 +0530 Subject: [PATCH 03/89] feat: logo changes --- static/logo.svg | 115 ++-------------------------- static/logo_banner.svg | 139 ++-------------------------------- templates/auth_header.html | 12 ++- templates/no_auth_header.html | 42 +++++++--- 4 files changed, 55 insertions(+), 253 deletions(-) diff --git a/static/logo.svg b/static/logo.svg index b0b3a74..4a2445c 100644 --- a/static/logo.svg +++ b/static/logo.svg @@ -1,108 +1,7 @@ - - - - + + + + + + + diff --git a/static/logo_banner.svg b/static/logo_banner.svg index 303d3b1..ef7de21 100644 --- a/static/logo_banner.svg +++ b/static/logo_banner.svg @@ -1,131 +1,8 @@ - - - - + + + + + + + + diff --git a/templates/auth_header.html b/templates/auth_header.html index c769c42..4ee8501 100644 --- a/templates/auth_header.html +++ b/templates/auth_header.html @@ -26,9 +26,11 @@ id="mobile-menu" class="fixed inset-y-0 right-0 w-64 bg-neutral-900/80 transform translate-x-full transition-transform duration-300 ease-in-out backdrop-blur-lg border-l border-nblue z-40 md:hidden" > -
+
- + + +