From fe515c9bb531400ef0e585b7a871a2b95a27f226 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Thu, 18 Dec 2025 10:50:53 +0000 Subject: [PATCH] Mint-V1 --- config/__pycache__/settings.cpython-311.pyc | Bin 5552 -> 5560 bytes config/settings.py | 1 + core/__pycache__/admin.cpython-311.pyc | Bin 212 -> 1101 bytes core/__pycache__/models.cpython-311.pyc | Bin 209 -> 1600 bytes core/__pycache__/urls.cpython-311.pyc | Bin 347 -> 378 bytes core/__pycache__/views.cpython-311.pyc | Bin 1364 -> 1683 bytes core/admin.py | 12 +- core/migrations/0001_initial.py | 34 +++ .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 1759 bytes core/models.py | 17 +- core/templates/base.html | 15 +- core/templates/core/index.html | 222 +++++++----------- core/urls.py | 6 +- core/views.py | 41 ++-- static/css/custom.css | 31 ++- staticfiles/css/custom.css | 40 ++-- 16 files changed, 239 insertions(+), 180 deletions(-) create mode 100644 core/migrations/0001_initial.py create mode 100644 core/migrations/__pycache__/0001_initial.cpython-311.pyc diff --git a/config/__pycache__/settings.cpython-311.pyc b/config/__pycache__/settings.cpython-311.pyc index 5be02db206d695487566bb415cb6b1e287631fb4..ded4401ab6eaf1ceddee95186d183e754881bbb6 100644 GIT binary patch delta 910 zcmah{&1(};5Z||N)22-}$tF#c^dm`0Yrbr?wTW%g)P5p@J&2ExACM-@QwyyoDIPQ8^)=^C=octqQxFK{m>yvYy_=IVL8#55(ers+(QF&8ZtaZ zBQy&Rev!uLS(xDl9bcWbj>6)WW^>0f5|)g7?OVZ@v^eLWQ2UqyId40x&O<7=K z+%@CE1sl!6O;Lp{zI(17UOq9%pLO*Kt< z12l0jG=s0?bbo1;qF2#b0BeaV0jh~9M2A>V0@={xR1>K^R z1y~O_#8nnzy^s(#YYX?4Ho+rDQ!%q28~VTkbU=J%SJ)s7<-QLlT1qxugyG{o@;Ho~ zc&}0MT8+>#@ktG9<2(kJcssBgB$mu8Wsj(MQht*<#h3D1WiEU@pBSn5*y}+rMh_er z`?h6g9-8(-OtCbaJWv-_GImCOkzml$kt~^2gpe4iyiSdLuJS#r^2^y6!rGL0?u_QM z&PAoei80ESWo*k_{ikT!spbDGz7dW3WmLSQ|D@S2so0Hhz|8x$)g!}%ggy!V5(Xp; zA>a|KOQvm&O5dHFm>ip%nVlb-o4qzaIXy9xv}7fgAwl-=qjG3@1s*J=hON68Qnbt= zBc#A6r3J-7)dCTR#!J6zU)A?jZGC)W`tiMIou5_zp6V}DsD`qx6`c7OZiA^(^%u=? Bv=RUS diff --git a/config/settings.py b/config/settings.py index 291d043..c1561e9 100644 --- a/config/settings.py +++ b/config/settings.py @@ -21,6 +21,7 @@ SECRET_KEY = os.getenv("DJANGO_SECRET_KEY", "change-me") DEBUG = os.getenv("DJANGO_DEBUG", "true").lower() == "true" ALLOWED_HOSTS = [ + "*", "127.0.0.1", "localhost", os.getenv("HOST_FQDN", ""), diff --git a/core/__pycache__/admin.cpython-311.pyc b/core/__pycache__/admin.cpython-311.pyc index cd6f855b12f4883b1ba9de01c54245c53aacd714..01cd24ec33959db10537f26ffd04a5dd6ed7a692 100644 GIT binary patch literal 1101 zcma)4J5Ss|5Z+xsFvlIw9H2;tLZlRy60S@WMIsa_lA}rI#xmXoO#Ha4Z6$P9@B`?O z(xfAb_!*H>gLIKjTOp;QI|LO~W^8;4a7A|Q&$FJ{Z)d)p?~O){!1(%mBlt!M`GbpU zn778&FEEY>C!B^Pq7J2mGp>a!(i|<)9i0+J1l=>LjY2yHt`m66!N^;}^#j5Uh^ko0 zu?8{lmg5*cC)I*D6ZaVPF^ncKPW(5c#jOv-p1i;_Y^n^8M?rjnIoeE_8(|>gOc`&a z7ju7<2N+cqSBtPXB7!)S6Nho?Xq-7Z*ML=5QzgMVlG>WmV=oe_=1bvag1cU(YI&F6 z+BTJwz_n=`%5q(dbX`?*-6-LCh<4p|KjmI{>#2u9nz=kkyP>zQ8maK4zw2%XBIM~0 za)r6xylC$xk!a^zd7R~K@kRJ~mdN(!M1D-Wo-f*dB1O9>d9AxIE!b0l4o12R&>PM3 zg_phegGa4i2dA8`LdT2p7~JDTaSX15FovoXik7kj#3j) z2^HV8OUoWPwxf#~14T1t}i)!TRHYk3e#EXYYLNCPhU`()xi60~eB1vPMES(XG+bzuQ%11Ei zfddB)-tg!NMLBrzkMP(gjUjXOT^Jd=f?Hkif6KF@D z^QDI|LcZXj-PBg6`2;#Ugb}7Vq^uMag~Z4m!eX0*#ksNweo@5_2s0_Qyi?+?|Mds>&tzgUUA9-L!`*p* zL27|pS`PT0B75w>uTZzLLT$!ioNSMa$2)^R_VK!!{Qx^;gDk>3YSUy-nF7azYnO4s zgvXty9y(n4KAK&qlzBFo3tT_Q@>O1h%|v#kBA$6mc9Ca`6~VL7J&rD|Nu5&97nH8| zMzN2!#z|PMiRrJBgT8_7wOaCg6L+7=q-By)+?i6DrWBS69PIZ{x*XU}G$Sx{naVHN zVzR^?Ch!!}oUna9Q!4Y&Ceua1!N92P%XF~BT77W_xO+ql!b=Pwpx8pdRXqk!J^mdS zLtEDy#?Wi;!&uG8)s0-k$Wy+DtKL0K zDC&hn(hX4nxc3Rc9V`DG%=}q!`>_tGbjXeCAW*#Ju(3FZ4^H=6g``69g%yYtrtWJU zD;ix4y@S!ik|0l$r9hr(sooN{%LFPuqX->dQkz4Q2U<;4Tnfd-eJ*3Q8pJ9lKKEY zd{G@Br{gf+lQ*I=yeY21EPe^RHGspoq9_OCQtjmbFrg`+_-@#GwEg%S+K+xs_Up*) ShONo%``^%hbjoCS&p!b}v|L;O literal 209 zcmZ3^%ge<81S>LrWmp2~#~=<2FhLogg@BCd3@HpLj5!Rsj8Tk?3@J>(44TX@K?*b( zZ?Wa(r=;c-`)M-W;!Md(%uCPLOGzqX21>4E_zY6>OHV%|KQ~psG^sSNq*On(A~m_R zB)>?%JijQrxF9h(RX;huC{-U~j9x+IFAf_ZyEG@&u80Guoe_wOWr4&8W=2NF8w@fR Ku%RM0pb7xTsWln^ diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc index 1f807fae1897c89361c99c5e868a26d00799b73f..ff4e8b5fae3377d508ecd7fba74c2cd882875aed 100644 GIT binary patch delta 131 zcmcc3^oxmiIWI340}yarbI$CZ$SW!60pv_)NMT4}%wfo7jACS*s2#+{nwgi9S~0Py zjWK32C!>sq%moG%^ngL)0xJ5z#=y$i;L;(~5jsQs0*m5B7R4(piXWJn_?a5GL9mDi GXb}M3^diIn 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..fb5e17e3a4c86fc118d9623e61182948930a1fa6 100644 GIT binary patch literal 1683 zcmah}%}*Og6rcUH!S=EZY2r0$0m&#BYjWaZ z;*bM}9;g&49DLwJU4hhV4n6cw*j=q+YbB&eRS&sDmQXJ_b!NdfCZIfx-o7{QV}3L9 zoBcf$>IX!)*9-YSIRO5lPFvV><1|i;mjD9D6hM(lGetJdG61rWD{w_V%@>8VKz#l= zNQ+Qd0Wt9{Ese3Rh*1e5?D{c+d5p5gTjo5lP{^Z_;R;{lObKS`Y+D3k5GdgEkN|iI zDqy1>ApjnGpzu4$lKD>66M&a4`Uh?3ol0sz_K;K@b*idNg~20+*iG8t+x7uP@qtvB zW3IOc1B_5N4f4Iw6##{cxCqYQpm=F!_o9Cda-p|xwP*L&)QFdAxC)CGDjfdmnjK$x zW)<$(cc~9=NZlQO^u*W-f9$6>dDQ9uu`{~{pTE0m*Mfb$=nne2v95JU%%hHb;8DKg zo*S^gw^LPsfr^l4s-khbn_B@eSP>5iKaVI!Jt2e-ExY`~?^k|s16hyPtEEg4#Tb{T zUsuSJN3iAguTidhA-C^5FAqr;OEilEq?s$8&AXzPt3L}QvKVCy1XnYL>pKhT&jzv@ zMoF*hRL&?CVnJ6dA|t0kO!x0{>&U>A*RD@n+aS+QCyl*6m@*vuXh`0~=qF@kbE_B? z=n^iMDHL44hRKUvUE9WVgE61$!|3NS(hW?H4O6ybN&qZVb%Q8^ODh>@%g|}xku!Op zNanO6N|x8kC8L}~TPRyLG@N{@;m7)BCX15Z9-idUQ+;Z48wY7OswhDHK6#`&py`vI z|FVC}_6?i9;btJbpQ?Rl2FA%~Mn-G#Mr6W{Ow{MC$cz)2*C996CnzDK_IJBR#2BXek)C@-71a9xEwK+3zmyG(-EA_8AGoB)&sf^U_ zG?bXF#OiTNQ5{9y{k9n%t_2(6aXUO-AF{&tobbKfZ<+&23$UU4%zpmtd!h{2K5rH)sW<*l_S6=~4v0Ic|3nbHv3J)Tir3ez zz_b&XHu>pOa++Y7+@cIOGNpBGO3!K7AXlM#*Xz-Na7TlvpnHt*xZz#I9{_(wit!zy t-uvfBPPu@-#G}NezfgUds20aCOcNx`t40%ynpce$f0I#L;6vrD_diFRXzc(1 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-VHt_6hBfFEmD#rxpq{+ZPfw+S_ZDia+?NNbR%)QM6bZ>_1L4$<2rDGj zOZK3n6hg-^7JTwz%ovOWTuyyN+c{{1*gaA5kz$iGalPAo)MN>BEcCfjkO~gtYA*9 zbYUfO!)0KTJpv@hFyjFyF2n>ap`ZQNw? zH|vJNa@NRq%?>4&PcX|4sXeghzIm7IGtDE^w)*x1!g9NWwq1{yjx``m;q>Wq03~Y8 zx^MQ0)Ae_lI&$oLBf|8_d8XwX(!_=1?wJzGjF#0R95^u_T4sqDMAjUvmK0=Q{1-87*e zMtuT&&NT0htUfn{)r{@fK7`A1m<)-7iPN!(M|qR6Y(wPd7Vjj=%bn%wc6SXj*W_rK z*4VLV%;wj@`<6W*@ltOBP`m4V2l-TS&vLphlX0761YBrPHq%(!Y^<$+&2)E2CQbV* zItM4{*;ln4cR*^R_Q>%^HFBSHz$LBix%93#v^u25(@=ZS?6u|P|?suOXiadLbxCitBQeRe2a14+F>rC(*+E zoO - {% block title %}Knowledge Base{% endblock %} + + {% block title %}Marketing Collaboration Platform{% endblock %} {% if project_description %} @@ -13,13 +14,23 @@ {% endif %} + + + + + + + {% load static %} {% block head %}{% endblock %} - {% block content %}{% endblock %} +
+ {% block content %}{% endblock %} +
+ diff --git a/core/templates/core/index.html b/core/templates/core/index.html index faec813..35e667d 100644 --- a/core/templates/core/index.html +++ b/core/templates/core/index.html @@ -1,145 +1,99 @@ -{% extends "base.html" %} +{% extends 'base.html' %} +{% load static %} -{% block title %}{{ project_name }}{% endblock %} +{% block title %}Marketing Collaboration Platform{% endblock %} {% block head %} - - - {% endblock %} {% block content %} -
-
-

Analyzing your requirements and generating your app…

-
- Loading… +
+

Marketing Collaboration, Simplified.

+

The central hub for your clients, brands, campaigns, and creative assets.

+ +
+ +
+

Clients

+
+ {% for client in clients %} +
+
+
+
{{ client.name }}
+ +
+
    + {% for brand in client.brands.all %} +
  • {{ brand.name }}
  • + {% empty %} +
  • No brands yet.
  • + {% endfor %} +
+
+
+ + + + {% endfor %}
-

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" }} -

-
-
-
- Page updated: {{ current_time|date:"Y-m-d H:i:s" }} (UTC) -
-{% 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..b53cdf1 100644 --- a/core/views.py +++ b/core/views.py @@ -1,25 +1,24 @@ -import os -import platform +from django.shortcuts import render, redirect +from .models import Client, Brand -from django import get_version as django_version -from django.shortcuts import render -from django.utils import timezone - - -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() +def index(request): + if request.method == 'POST': + if 'client_name' in request.POST: + client_name = request.POST.get('client_name') + if client_name: + Client.objects.create(name=client_name) + return redirect('index') + + if 'brand_name' in request.POST and 'client_id' in request.POST: + brand_name = request.POST.get('brand_name') + client_id = request.POST.get('client_id') + if brand_name and client_id: + client = Client.objects.get(id=client_id) + Brand.objects.create(name=brand_name, client=client) + return redirect('index') + clients = Client.objects.prefetch_related('brands').all().order_by('-created_at') 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", ""), + 'clients': clients, } - 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 index 925f6ed..1848ed7 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -1,4 +1,29 @@ -/* Custom styles for the application */ -body { - font-family: system-ui, -apple-system, sans-serif; +:root { + --primary-color: #4F46E5; + --secondary-color: #F3F4F6; + --success-color: #10B981; + --text-color: #212529; + --font-family-headings: 'Poppins', sans-serif; + --font-family-body: 'Inter', sans-serif; } + +body { + font-family: var(--font-family-body); + color: var(--text-color); + background-color: #FFF; +} + +h1, h2, h3, h4, h5, h6 { + font-family: var(--font-family-headings); + font-weight: 700; +} + +.btn-primary { + background-color: var(--primary-color); + border-color: var(--primary-color); +} + +.btn-primary:hover { + background-color: #4338CA; + border-color: #4338CA; +} \ No newline at end of file diff --git a/staticfiles/css/custom.css b/staticfiles/css/custom.css index 108056f..1848ed7 100644 --- a/staticfiles/css/custom.css +++ b/staticfiles/css/custom.css @@ -1,21 +1,29 @@ - :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); + --primary-color: #4F46E5; + --secondary-color: #F3F4F6; + --success-color: #10B981; + --text-color: #212529; + --font-family-headings: 'Poppins', sans-serif; + --font-family-body: 'Inter', sans-serif; } + body { - margin: 0; - font-family: 'Inter', sans-serif; - background: linear-gradient(45deg, var(--bg-color-start), var(--bg-color-end)); + font-family: var(--font-family-body); color: var(--text-color); - display: flex; - justify-content: center; - align-items: center; - min-height: 100vh; - text-align: center; - overflow: hidden; - position: relative; + background-color: #FFF; } + +h1, h2, h3, h4, h5, h6 { + font-family: var(--font-family-headings); + font-weight: 700; +} + +.btn-primary { + background-color: var(--primary-color); + border-color: var(--primary-color); +} + +.btn-primary:hover { + background-color: #4338CA; + border-color: #4338CA; +} \ No newline at end of file