From f9332936f58a76298680a1d06e1387a2ac7e0796 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sun, 2 Nov 2025 17:38:33 +0000 Subject: [PATCH] 0.01 --- core/__pycache__/urls.cpython-311.pyc | Bin 347 -> 378 bytes core/__pycache__/views.cpython-311.pyc | Bin 1364 -> 2029 bytes core/templates/base.html | 23 ++- core/templates/core/index.html | 235 +++++++++---------------- core/urls.py | 6 +- core/views.py | 73 ++++++-- static/css/custom.css | 101 +++++++++++ 7 files changed, 261 insertions(+), 177 deletions(-) create mode 100644 static/css/custom.css diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc index 1f807fae1897c89361c99c5e868a26d00799b73f..2f66fe04cfdd763dcbe476abd7ca5b2822e9e4a2 100644 GIT binary patch delta 131 zcmcc3^oxmiIWI340}u#IXV2`O$SW!60pv_)NMT4}%wfo7jACS*s2#+{nwgi9S~0Py zjWK32C!>sq%moG%^ngL)0xJ5z#=y$i;L;(~5jsQs0*m5B7R4(piXWJn_?a5GL9mDi GXb}LasUlGT delta 109 zcmeyxbeoBHIWI340}vcY|CNz7kynz{2FRH{(L9KiB_lsKbz*-Tmlsgv12ZEd$JU{~gg+v`s diff --git a/core/__pycache__/views.cpython-311.pyc b/core/__pycache__/views.cpython-311.pyc index 6867ddf286a519cf1754ac97038f9f1e4605fbf2..2adf1523854887b0e1ffe390e2a2c36862f9dcd8 100644 GIT binary patch literal 2029 zcmZWp%Wo4$7@ys&?Y!UQWt=P}l(=!?M;=W9rE(rhDUd`s1{zVh8_&d9SnrzI*$`Vv zg({9c&`aSERh5uvD=L*^&-?`o3hHW)?Ws3Q5f^&tH|y9<=xX*i^F3z1=gdznEsY4i zf4&c>?ez%##fj?YNq{(f1n?MPgar-dg>^wdSj2T$!anTBfqfsY#|^joWo}sw|Mgz-0969;9frG zeCu`i>_fCJ;o%etpZlBp85UeWB|0Y5_0KE1f|b&#;rLV}7K_Pa^6*4uHJ@B44IE=9 zVx9u9qeY_7Qg^x_Gee$`Ic3Ttt4lXm!=+$~QA5wkBa1r)N=#E;)EO;Co2s-e5hn!2s(xlGnDnd!C_V9J=x!o|$CYASAHfo2K{+q$n5-G-!P zGOB1Q_c>AXd9t!frn%3FcqBF%mx1s+l}GZbuI8e~wsa$08oXve8Wcvr ze?!%oIkusg1j}a8WCS*}rgfD8eFfaZM&9az^u2sq%hk)L6Ei$3R$qmmILcvFrIM+> zMAhaJRj|daT{kR7!llqvHSe82lDeyE8W_51(7S}nHz4kCspZIeioqU}2kcqnMVhJv zoKC%0q#C7!4bhZUe@wu@frwI8k zq^>2yz|b9Oc}}y4Jg-p9`$C*gx?(czic52@m`=Ik!Xjz9%q$jX=8smiEQHI@WNEhp=zA?iu*?ocrc|a2Nf{uC%(6T5}sJ zcLMTyA{Gf0dAl860N}CgqA&X(9)Wo$RA3wZ)^wcS75Zz^@5FEWQ|K3d-8-(W%wNgO zucVjPu78nPNUkLzvEq1)c7V3Y=mPomZa+)yh@c1YG@294f_jx-BOmPE4# zCDCn_+&9My#dnRDG}UBTBVU*;^{eoj?2KR1jI5%Wv#_X&rn!NS03IMaL@VR>Vf)tY zH(%YeZ}IVFF#19|7@Vq5fQO*X3*V(|E2^e!XapVx{%Sym+)i##p{i-<8F*iykIhn> z=UBysEtc1ypZs~kwhTG zXfFr8#dG~#{iVEtEsf05^T6Y+ZUz9$b%G!`=&XHmlp9g^X{UGG>6>(dai?dZ+~jWp z?>Mxh?xCtE;`B_P6b(DQ5vMQV1gD&ysgt6!$9Ba|ib78B1#j1k(=&QZbaD8USVjOg z>L@P@sI~LSj4chra9TQ^T(qV0Fkop1M{OwrgR?)iC7?$6@)KJ+2Ln#*g(JGk?Ty06 KW%PgW67??xxhx+5 literal 1364 zcmZ`(&1)M+6ra_{dS%J>I!@|TuH%hUh$T{~CE!96oTjQ1oHkCdQ%ZHHPf-Q6#oP5Eq{V!1Q7#*Ku^61OfEk4%~~s}guETzy!YnKoA>c! z|CpMZL_mL+PRlpL2>m0JfI>sz+l$SscSs^=|k4VB6wxYJ2mwh>6 zP1s6a0Xh0B%Et_88>QrbMYzqB#N#E*3Oks3CUHQODRvA@K~k7$;|6iCE(zZu#bJlk z(8(RJK1WUTVt6pV9fEo^GQIeJgpqaJXHRNMhV;}glZK3tBN^en5Q~o7QAND#(>piA zMx+^HvEUS;@pC3}9#TaPq;a2SxGAxj;0&RP639l>kPjiNqhJ8&1AY_l`WecBvKL`< zK_mp-GGfihA=Gg+ss)BI*;w21yRNY^)~upqm`+Labc(T~)l62_EK-D_XmFxoXUC+( zv9ZH61GA!Od6`C{=(;tt(Wqy1VsquT>;5P-9=l@|nMF#b-iU4DnzqgA7Upvgw;tSE z&pj%9yS|;<+IaYA=m{Nfc9(G8LP76tKq2MQk+Efgahls~zxB^Y15iq2p ze1hU%s@P+67IZo#*hj*3LMINxyUY_2H9@DJWy{3I+3Mq}!>U=li}flaG+QI|spl4T zob~hDF>%eyxOE;8-gFVJ3n+TO18bo->ila}J65%hy4+QlU#ly}>PkmVchz)jqo<`_ z{(P+6Xlpn2)BEXH3$5?^ljojY`z`Y<)5;BG^zo;?`Q?6crISo|lj(kPxtsi=lf2$d zUhiF8=v}zfU%GryZ>QE?g*r>Q?ozJ5xODJS`|4MJebZUI)m^+bn2pWI0|cyf_w9L< zIJbYby>RVisS{uA##h^s)e}e(07x&wM(2TX`E06G0Q9V<>X{|ul?i3g0?%(HPYlgf z1`zb;;Me{qqL;+gPk@~&H*I26ExbmrfGYk1-V - + - {% block title %}Knowledge Base{% endblock %} - {% block head %}{% endblock %} - - + + {% block title %}Visa.ai{% endblock %} + + + + + + + + {% block content %}{% endblock %} - - + + + + + \ No newline at end of file diff --git a/core/templates/core/index.html b/core/templates/core/index.html index 0a3f404..5863a31 100644 --- a/core/templates/core/index.html +++ b/core/templates/core/index.html @@ -1,154 +1,91 @@ -{% extends "base.html" %} +{% extends 'base.html' %} +{% load static %} -{% block title %}{{ project_name }}{% endblock %} - -{% block head %} -{% if project_description %} - - - -{% endif %} -{% if project_image_url %} - - -{% endif %} - - - - -{% endblock %} +{% block title %}Visa.ai | AI-Powered Visa Counselor{% endblock %} {% block content %}
-
-

Analyzing your requirements and generating your app…

-
- Loading… -
-

AppWizzy AI is collecting your requirements and applying the first changes.

-

This page will refresh automatically as the plan is implemented.

-

- Runtime: Django {{ django_version }} · Python {{ python_version }} - — UTC {{ current_time|date:"Y-m-d H:i:s" }} -

-
+ +
+
+

Your AI-Powered Guide to Global Education

+

Making informed decisions about studying abroad has never been easier. Compare countries, find programs, and get AI-driven advice for your application.

+
+
+ + +
+
+
+
+
+

Country Comparison Tool

+

Select two or more countries to compare key metrics for international students.

+
+ {% csrf_token %} +
+ + +
Hold Ctrl (or Cmd on Mac) to select multiple countries.
+
+
+ +
+
+
+
+
+ + {% if comparison_results %} +
+

Comparison Results

+
+
+ + + + + {% for result in comparison_results %} + + {% endfor %} + + + + + + {% for result in comparison_results %} + + {% endfor %} + + + + {% for result in comparison_results %} + + {% endfor %} + + + + {% for result in comparison_results %} + + {% endfor %} + + + + {% for result in comparison_results %} + + {% endfor %} + + +
Metric{{ result.country }}
Average Tuition{{ result.avg_tuition }}
Annual Living Costs{{ result.living_costs }}
Post-Study Work Visa{{ result.post_study_visa }}
Permanent Residency Pathway{{ result.pr_pathway }}
+
+
+
+ {% endif %} +
+
- -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/core/urls.py b/core/urls.py index 6299e3d..332eff0 100644 --- a/core/urls.py +++ b/core/urls.py @@ -1,7 +1,9 @@ from django.urls import path -from .views import home +from django.urls import path + +from .views import index urlpatterns = [ - path("", home, name="home"), + path("", index, name="index"), ] diff --git a/core/views.py b/core/views.py index c9aed12..2b00ea6 100644 --- a/core/views.py +++ b/core/views.py @@ -1,25 +1,60 @@ -import os -import platform - -from django import get_version as django_version from django.shortcuts import render -from django.utils import timezone +# Mock data for the country comparison +MOCK_COUNTRY_DATA = { + 'CA': { + 'country': 'Canada', + 'avg_tuition': '$15,000 - $35,000 CAD', + 'living_costs': '$15,000 - $20,000 CAD/year', + 'post_study_visa': 'Up to 3 years (PGWP)', + 'pr_pathway': 'Strong (Express Entry, PNP)', + }, + 'AU': { + 'country': 'Australia', + 'avg_tuition': '$25,000 - $45,000 AUD', + 'living_costs': '$21,041 AUD/year (minimum)', + 'post_study_visa': '2-4 years (TGV)', + 'pr_pathway': 'Moderate (Points-based system)', + }, + 'GB': { + 'country': 'United Kingdom', + 'avg_tuition': '£15,000 - £38,000', + 'living_costs': '£12,000 - £15,000/year', + 'post_study_visa': '2 years (Graduate Route)', + 'pr_pathway': 'Limited (Skilled Worker Visa)', + }, + 'US': { + 'country': 'United States', + 'avg_tuition': '$28,000 - $55,000 USD', + 'living_costs': '$15,000 - $25,000 USD/year', + 'post_study_visa': '1-3 years (OPT)', + 'pr_pathway': 'Difficult (H-1B lottery)', + }, + 'DE': { + 'country': 'Germany', + 'avg_tuition': 'Often free at public universities', + 'living_costs': '€11,208/year (minimum)', + 'post_study_visa': '18 months (Job Seeker Visa)', + 'pr_pathway': 'Good (EU Blue Card)', + } +} -def home(request): - """Render the landing screen with loader and environment details.""" - host_name = request.get_host().lower() - agent_brand = "AppWizzy" if host_name == "appwizzy.com" else "Flatlogic" - now = timezone.now() +AVAILABLE_COUNTRIES = [ + {'code': 'CA', 'name': 'Canada'}, + {'code': 'AU', 'name': 'Australia'}, + {'code': 'GB', 'name': 'United Kingdom'}, + {'code': 'US', 'name': 'United States'}, + {'code': 'DE', 'name': 'Germany'}, +] + +def index(request): + comparison_results = [] + if request.method == 'POST': + selected_countries = request.POST.getlist('countries') + comparison_results = [MOCK_COUNTRY_DATA[code] for code in selected_countries if code in MOCK_COUNTRY_DATA] context = { - "project_name": "New Style", - "agent_brand": agent_brand, - "django_version": django_version(), - "python_version": platform.python_version(), - "current_time": now, - "host_name": host_name, - "project_description": os.getenv("PROJECT_DESCRIPTION", ""), - "project_image_url": os.getenv("PROJECT_IMAGE_URL", ""), + 'available_countries': AVAILABLE_COUNTRIES, + 'comparison_results': comparison_results, } - return render(request, "core/index.html", context) + return render(request, "core/index.html", context) \ No newline at end of file diff --git a/static/css/custom.css b/static/css/custom.css new file mode 100644 index 0000000..8bca00c --- /dev/null +++ b/static/css/custom.css @@ -0,0 +1,101 @@ +/* Visa.ai Custom Styles */ + +:root { + --primary-color: #0A2540; + --accent-color: #00D4B3; + --background-color: #F6F9FC; + --text-color: #333; + --heading-font: 'Poppins', sans-serif; + --body-font: 'Lato', sans-serif; +} + +body { + font-family: var(--body-font); + background-color: var(--background-color); + color: var(--text-color); +} + +h1, h2, h3, h4, h5, h6 { + font-family: var(--heading-font); + font-weight: 600; +} + +.btn-primary { + background-color: var(--accent-color); + border-color: var(--accent-color); + font-weight: 600; + padding: 0.75rem 1.5rem; + border-radius: 0.5rem; + transition: all 0.3s ease; +} + +.btn-primary:hover { + background-color: #00bfa5; + border-color: #00bfa5; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); +} + +.hero-section { + background: linear-gradient(135deg, var(--primary-color), #1e3a5f); + color: white; + padding: 6rem 0; + text-align: center; +} + +.hero-section h1 { + font-size: 3.5rem; + font-weight: 700; +} + +.hero-section p { + font-size: 1.25rem; + max-width: 600px; + margin: 1rem auto; +} + +.comparison-section { + padding: 4rem 0; +} + +.comparison-form { + background: white; + padding: 2rem; + border-radius: 0.75rem; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.05); +} + +.comparison-results { + margin-top: 3rem; +} + +.comparison-table { + background: white; + border-radius: 0.75rem; + overflow: hidden; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.05); +} + +.comparison-table th { + background-color: var(--primary-color); + color: white; + font-weight: 600; +} + +.comparison-table .table-group-divider { + border-top-color: #d1d9e6; +} + +.comparison-table td, .comparison-table th { + vertical-align: middle; + padding: 1.25rem 1rem; +} + +.form-label { + font-weight: 600; + font-family: var(--heading-font); +} + +.form-select { + min-height: 400px; +}