From feced6b0d6c750b721d4e9740d8bad7642244a11 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Fri, 30 Jan 2026 17:52:56 +0000 Subject: [PATCH] V1 Mockup ai --- config/__pycache__/settings.cpython-311.pyc | Bin 5552 -> 5631 bytes config/__pycache__/urls.cpython-311.pyc | Bin 1557 -> 1663 bytes config/settings.py | 6 +- config/urls.py | 1 + core/__pycache__/admin.cpython-311.pyc | Bin 212 -> 1447 bytes core/__pycache__/models.cpython-311.pyc | Bin 209 -> 3606 bytes core/__pycache__/urls.cpython-311.pyc | Bin 347 -> 1050 bytes core/__pycache__/views.cpython-311.pyc | Bin 1364 -> 2730 bytes core/admin.py | 16 +- core/migrations/0001_initial.py | 53 +++++ .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 3695 bytes core/models.py | 55 ++++- core/templates/base.html | 123 +++++++++- core/templates/core/create_mockup.html | 132 ++++++++++ core/templates/core/dashboard.html | 48 ++++ core/templates/core/index.html | 225 +++++++----------- core/templates/core/login.html | 45 ++++ core/templates/core/project_detail.html | 85 +++++++ core/urls.py | 15 +- core/views.py | 54 +++-- 20 files changed, 675 insertions(+), 183 deletions(-) create mode 100644 core/migrations/0001_initial.py create mode 100644 core/migrations/__pycache__/0001_initial.cpython-311.pyc create mode 100644 core/templates/core/create_mockup.html create mode 100644 core/templates/core/dashboard.html create mode 100644 core/templates/core/login.html create mode 100644 core/templates/core/project_detail.html diff --git a/config/__pycache__/settings.cpython-311.pyc b/config/__pycache__/settings.cpython-311.pyc index 96bce5584823cd4ebfccfc40c2b36df8beaee7db..6e8f76e4e1b1d6ab434e8e530a71fce93b327538 100644 GIT binary patch delta 259 zcmdm>{a>4RIWI340}$+ZSd-a4kyn!O(MI(vEW$2P`l*~Lu2tL&3{eIt%)tzrZkt%+ zIV1{7bd!pz1RZlzi!zfF^@9`h;{y^)bMiN5^6D@NR@(o-d2-Xe&M7Ks- delta 214 zcmeyby+NCIIWI340}xbw%g=O~$ScWsWuy8P7FOn922GdEe5~;tT&a1wrNy_HLqnW5 zxAN*RF=^^=KE!{RvECS{tH=aM++xnmD=9Jsam_)51&FW&5mq3=21wjuEiTB(EGcpT zv4vb*-5f)GLgF1mL;U02JY9WUig-XO1wjNqkod)6lbfGXnv-f*lm_H70&(#@W(I~2 k%#4hTADFlpSw1jqmKI83ViermAd=3=eStv;h`Zkynz@Zld}EM!$(CQp8eum>5zyQ`xfwK?*-o6rbtGezChCh(QxR)EI4|?7@>tOgs=`gpE;8y)>mWEQRiNowfprhaUI? zyun|9G5j--aM;Yr=!wL`u5jYyd+nBwg@ZHg%glRkelx${y!l?KlnAuVUtir<3L(F7 zlC@laaPkKRJA@HNJ<_BmrGzO=^^~S+s!h$*C{f4)VcIrfI;U%T2C%0RvJZdS%$!0X zn$PB3-J=kPKWzy{4lweNRmi+oG4{Z{pM{8796;1=Kr8@a@xKvEtn`r>L&vy>L8Wf9 zrrSEkGa8DlEcwoQ)P67gHSUD6oK8RRAo4=z{8TW=IGx;q$qwPfq>PvfS51vkQ)de7 zp~}(A>)*CKx5WkA0jV1~S+J~@-Q<=fOP1C2S>)lkY+0Wp+e;$???>to|W+?0* z{)HqZ}M8S9JRuz#y7bWg}$h5_+mY1+YYZezTmZl+iZJFpxBAgU=U1ziO+kd zJQ2@#%9VH?yBN+=Z{|A#;S0XNRb>irR!yDf8q~})4Vdd0^S+R8P-8=rdgz88ms%8X zA#*`!hfyF)j^K94nPrEDD#ig{<{G@kAf>qMvn?y!YI8#oV;HI8Qp-Y%8r6-0D1u*L zjf)}7D0^-YTFedFp1mc9lG%#ug#cFxxGkJjYsKXr3lcqK-c7D05LHA-$dBM?G&3k& z@CeL>Vn4^`;>FJB^Y~rob}e4&4BtPfK8P2vrwF+CX8ABOC|^=4w=S1Ts+TJB?S3H^ zzqouO5kg?W)eUWcwzvoGK@QXCLxZ#e)bBEf7x5zY^u(A|H-==Dt=X-HKkN9dP`Jwi z-?q#p6&MJ7_GwL4KH1BWXN!JKqeikIcmt#dol8qtu?dM($K)Va1wJdxrA7Z*JciZy zo`Sz%x+Q@a^39eM-xwa7&t|PD6s2besTf- E0Pasw3;+NC delta 147 zcmZ3^eT6Y)IWI340}xFAk)LS~q#uJgFu(+5d=>&SrZc24q%h_%7&-72YLx`6n(-N|7ANl+CzyYbKFcJAtCuX;eoN9mNslT8vRMNY+cvm|AJc zWoLIIoArT*9CXORhXC<0Z2{M+8NkS?hoUH;OO8um55$~O^rV{%`Q%IcW|tJLm0@(n z{dVTfn>TOX%=^(_B`L-M_D=?wa+oXeh${uEpyZ$VQV_lY_zLh1!dFBB603nyD8S+HdZaH1N1^8$ zfKgBgh1%hVu!YA5+b9jWGvfUjD1xHx*h5(JF}&VWl3bodzmJAcye;{7jve7)t0jD9 zO8#G5DW6Wqa1bR?sy*z}eb~o0f(7&%8a=`{;_|(Ap#K;;-hSPu|L74}A{s{%M`Vrp z_)g#uN~6gme8*kB*ALbVwNF0e!K(0jPifpIX#|~WXM9>sxYz0pxK^iqBPY-=zUE44 zbOtWeSt>2-l?|(Ljp*yRVrGNc0OglybXhSfmZsKq*3Z*O9@o@*uUoJrP^7T)7k#R% z)_49yRNb8?YHD@Oq~g4$5H>GV!$`Gi7Q2wkJKG4@0#rZ>*`T3C5D!cOqck+jXhyFA zP8n(wGm@dHH7YJERaa0%G1oL~suc?yk-KbaJKNA<(jqmB>8TLV*lp_hUpzn4 zJjO6{?gl2nt!UY7pedZ6x%hrF#V~X3W1Xl?y>7x#F&m^&y)J`OVG~oKZfP17%bHT( z*!?f8X$=DucYZJ}P0t`b58Gg22e+4aUUQB#gZ& z71ajp4QJ+c($IHVh$F`VXgIHvnqunPJdG=ssmpbJQ&te7;RdcFwO$2TOc__;p-9xf zvHN2%JcvXHq7Vv{1QdiDC_EoNbOWcCv8gmuJp(g+yy50>k7NvJg>8{WWY^lVOk=VP zQPI*cwBxe;2TRe|ImoiRNjmc4;mC03h@x$C`=A;3d^)$L*Kp1%TXoaQ;XAkj`y{zd zoopBlrGj%6o#31obEg}3slb#ZZ^6_oyv7ND*1=!*_?uht?#T;w z1lk;Hvox@u1o)1-$FXGMJzy8U0Kr`}Ra3((${Sd_ZLk>`@(v&k%d%k-S#FLVwqB1s z1v~}|-z~0tY~-7!9T|7EC}bxI8za*UasV`OWwEfZcwL_Vcx7pRah0Z4uPznj;!0t0 zK>BE9;ig=?d2K*Srs5SelLU4L*1%#YN%tTG3oqZPf@&~OcdZ<4znQ9l22@&y{I!Zl>ljSY}s>UB)x zOLY@hv9}ftGMUk`j_%6l-3F$i+wO&?(t={*qFTc}4Jrf!0m+I6nFU?R zc?Rx5GW!!2(_CQtG;BDT!3Ee02xFl=t`DukUQ8HggdW(!=w3`@ojx#1f{UK%M$Ybu z!LbmV!o?@IW}Kn)gW{tb?Jxgz<|kwit#*c1ouSp%LN}h?$~*D&qo94UV8>TF@f9b& z(pv1MPTwDMQm5^yIlFMnPAQ#~;-r+;C*AbagS?ZTvS&ZBfA^XFg<_}6opjkrmu+GE zm4iP^lUp|&Y4TC(N#Un?`^%~=t#za|M_Oy;yUEP`kdw?j`pBMLvR6O1*Ej9tolf$O zlf2Vf>c%Fwe(A&}zb`-8v}1Ff*qjraYt8#6ePL^Vw3GKb$$L)n9!z?1xxB5c+tNly z+HjIjP`6W z5aGp%J?x23$+>ZD-p!$LWGzv9QYL_VqZI%Oy$$admZCvnS3+-hCvLTmu{pR~_iwBwgL@k>tp5;*_B82}8Ri`C zG3W3DbB_0zbNB~5Z(ynxvSAuU>q@<El)$4ur}?bOD_?K%k2LZ z&v@>p4;$in&SrZc24q%h_%P56p~=j5io$E?`4NY(NzN>*6Fe diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc index 5a69659f6c6e0ae848e54157af197c543a09315f..53aa62a86d708bfe9c6a0212149dbf1d55b83c52 100644 GIT binary patch literal 1050 zcmZ`%&r2IY6rN3HlWbzNx+y4?9(qU#NCsO9ji@J~G?Z4TwU9!Wb!SL6?k^^@)rLYn zdgvjCLOu3mE&2!aPv~)177TlAPu>JC#ZzZCMo{A0`SIqPZ@xEg-u@^S^MKofKcCFG z6aat4VrYd+=X_lP;2XdIOBS%Dh9m);!f7jIryFVR1MWla%MwTdB4J3sW;}j0vCp$S z*~LaZXi(9>D#RD|aX`GZNeIx&c4 z)4^n0Y&*J5x_PX3S{trTF^ZKdznd|rsZ$ge4N7!IG}|>ceXl#|QMXN)ixy3XEqI&D zC>~EBgK3yB-L$$H%Wawt>P{FgB`8@`Tgxt#tVOUkK&N|8BDH*=1#l^Z zOA%a3;6Rz(BhmdwLG5_}>mjU1us&3u?kz;>!xI%9t0-806{sjwS0i;bc>6wpS_riW xY6I<=UOg&RPD=B~rTJgag3^3gT8T<4zn=zhEre?kTsxaoCQ>^E@zEKc{C`DW6`lY9 delta 252 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 nIYQchHyfQ@m;pyP;H`y+#Bfd64}OTb@e{B3#G3 - + - {% block title %}Knowledge Base{% endblock %} - {% if project_description %} - - - - {% endif %} - {% if project_image_url %} - - - {% endif %} + + {% block title %}FashionMock AI{% endblock %} + + + + + + + + + {% load static %} + + {% block head %}{% endblock %} - {% block content %}{% endblock %} + + +
+ {% block content %}{% endblock %} +
+ +
+
+

FashionMock AI

+

© 2026 FashionMock AI. Criado para designers de moda modernos.

+
+
+ + - + \ No newline at end of file diff --git a/core/templates/core/create_mockup.html b/core/templates/core/create_mockup.html new file mode 100644 index 0000000..da3c7a9 --- /dev/null +++ b/core/templates/core/create_mockup.html @@ -0,0 +1,132 @@ +{% extends 'base.html' %} +{% load static %} + +{% block content %} +
+
+
+
+
+

Novo Projeto de Mockup

+ +
+ {% csrf_token %} + +
+ +
+

1. Upload das Fotos

+
+ + +
+ +
+ +
+ +
+ + + + +

Clique para selecionar foto

+
+
+
+ +
+
+ + +
+
+ + +
+
+
+ + +
+

2. Customização do Modelo

+ +
+ + +
+ +
+ +
+ + + + + + + + +
+
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + + + + +
+
+ + +

A geração leva aprox. 1-2 minutos.

+
+
+
+
+
+
+
+
+ + +{% endblock %} diff --git a/core/templates/core/dashboard.html b/core/templates/core/dashboard.html new file mode 100644 index 0000000..70d721b --- /dev/null +++ b/core/templates/core/dashboard.html @@ -0,0 +1,48 @@ +{% extends 'base.html' %} + +{% block content %} +
+
+
+

Meus Mockups

+ Novo Projeto +
+ + {% if projects %} +
+ {% for project in projects %} +
+
+
+ {{ project.title }} +
+ + {{ project.status|capfirst }} + +
+
+
+
{{ project.title }}
+

{{ project.created_at|date:"d/m/Y H:i" }}

+ Ver Detalhes +
+
+
+ {% endfor %} +
+ {% else %} +
+
+ + + + +

Nenhum projeto ainda

+

Comece enviando sua primeira peça de roupa.

+ CRIAR MEU PRIMEIRO MOCKUP +
+
+ {% endif %} +
+
+{% endblock %} diff --git a/core/templates/core/index.html b/core/templates/core/index.html index faec813..6edac39 100644 --- a/core/templates/core/index.html +++ b/core/templates/core/index.html @@ -1,145 +1,88 @@ -{% extends "base.html" %} - -{% block title %}{{ project_name }}{% endblock %} - -{% block head %} - - - - -{% endblock %} +{% extends 'base.html' %} +{% load static %} {% block content %} -
-
-

Analyzing your requirements and generating your app…

-
- Loading… + +
+
+
+
+ SaaS de Moda AI +

Transforme suas peças em mockups reais em minutos.

+

Crie fotos profissionais para seu catálogo e redes sociais sem precisar de modelos ou estúdios caros. Tecnologia AI de alta fidelidade para o mercado brasileiro.

+ +
+
+
+
+ Fashion Mockup Example +
+

Gerado por AI

+ Modelo: Feminino, 25 anos, Atlético +
+
+
+
-

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 + + + +
+
+
+

Como Funciona

+

Simples, rápido e ultra-realista.

+
+
+
+
+
+ + + + +
+

1. Upload

+

Suba as fotos das suas peças reais. Sem truques, apenas a sua criação.

+
+
+
+
+
+ + + +
+

2. Customize

+

Escolha o modelo, idade, tom de pele e biotipo que melhor representa sua marca.

+
+
+
+
+
+ + + + +
+

3. Gere e Baixe

+

Em minutos, receba 3 mockups (frente, lado e costas) prontos para uso em HD.

+
+
+
+
+
+ + +
+
+

Pronto para elevar sua marca?

+

Junte-se a centenas de marcas brasileiras que já usam FashionMock AI.

+ CRIAR MEU PRIMEIRO MOCKUP +
+
+{% endblock %} diff --git a/core/templates/core/login.html b/core/templates/core/login.html new file mode 100644 index 0000000..9a38600 --- /dev/null +++ b/core/templates/core/login.html @@ -0,0 +1,45 @@ +{% extends 'base.html' %} + +{% block content %} +
+
+
+
+
+
+

Bem-vindo

+

Entre na sua conta FashionMock AI

+
+ +
+ {% csrf_token %} +
+ + +
+
+ + +
+ + + +
+ Esqueceu a senha? +
+

Ainda não tem conta? Crie uma agora

+
+
+ +
+ +
+
+
+
+
+
+{% endblock %} diff --git a/core/templates/core/project_detail.html b/core/templates/core/project_detail.html new file mode 100644 index 0000000..f8f9a54 --- /dev/null +++ b/core/templates/core/project_detail.html @@ -0,0 +1,85 @@ +{% extends 'base.html' %} + +{% block content %} +
+
+ + +
+
+
+

Detalhes do Projeto

+ Original + +
+ Status + {% if project.status == 'pending' %}Aguardando Processamento{% else %}{{ project.status|capfirst }}{% endif %} +
+ +
+ Modelo +

+ Gênero: {{ project.get_gender_display }}
+ Tom de Pele: {{ project.get_skin_tone_display }}
+ Idade: {{ project.age }} anos
+ Biotipo: {{ project.get_body_type_display }} +

+
+ +
+ Formato + {{ project.format }} +
+
+
+ +
+
+

Resultados Gerados

+ + {% if project.results.all %} +
+ {% for result in project.results.all %} +
+
+ {{ result.view_type }} +
+ {{ result.view_type|capfirst }} + Baixar +
+
+
+ {% endfor %} +
+ {% else %} +
+
+ Processando... +
+

Sua mágica está sendo preparada...

+

Nossa AI está vestindo os modelos e ajustando a iluminação. Isso levará cerca de 60 segundos.

+
+
+
+
+ {% endif %} +
+
+
+
+
+ +{% if project.status == 'pending' %} + +{% endif %} +{% endblock %} diff --git a/core/urls.py b/core/urls.py index 6299e3d..41eb32d 100644 --- a/core/urls.py +++ b/core/urls.py @@ -1,7 +1,14 @@ from django.urls import path - -from .views import home +from . import views +from django.contrib.auth import views as auth_views urlpatterns = [ - path("", home, name="home"), -] + path("", views.home, name="index"), + path("dashboard/", views.dashboard, name="dashboard"), + path("criar/", views.create_mockup, name="create_mockup"), + path("projeto//", views.project_detail, name="project_detail"), + + # Auth + path("login/", auth_views.LoginView.as_view(template_name="core/login.html"), name="login"), + path("logout/", auth_views.LogoutView.as_view(next_page="index"), name="logout"), +] \ No newline at end of file diff --git a/core/views.py b/core/views.py index c9aed12..adc8a3b 100644 --- a/core/views.py +++ b/core/views.py @@ -1,25 +1,37 @@ import os -import platform - -from django import get_version as django_version -from django.shortcuts import render -from django.utils import timezone - +from django.shortcuts import render, redirect +from django.contrib.auth.decorators import login_required +from .models import MockupProject, MockupResult 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() + """Polished landing page for FashionMock AI.""" + return render(request, "core/index.html") - 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", ""), - } - return render(request, "core/index.html", context) +@login_required +def dashboard(request): + """User dashboard showing project history.""" + projects = MockupProject.objects.filter(user=request.user).order_by('-created_at') + return render(request, "core/dashboard.html", {"projects": projects}) + +@login_required +def create_mockup(request): + """Workflow to create a new fashion mockup.""" + if request.method == "POST": + project = MockupProject.objects.create( + user=request.user, + title=request.POST.get("title", "Novo Projeto"), + main_image=request.FILES.get("main_image"), + gender=request.POST.get("gender", "F"), + skin_tone=request.POST.get("skin_tone", "medium"), + age=request.POST.get("age", 25), + body_type=request.POST.get("body_type", "athletic"), + format=request.POST.get("format", "9:16") + ) + return redirect('dashboard') + + return render(request, "core/create_mockup.html") + +def project_detail(request, pk): + """View details and results of a mockup project.""" + project = MockupProject.objects.get(pk=pk) + return render(request, "core/project_detail.html", {"project": project}) \ No newline at end of file