From b09d42dfdbb67b2579e3264ac4d24cee0699883a Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Fri, 13 Feb 2026 20:26:18 +0000 Subject: [PATCH] Auto commit: 2026-02-13T20:26:18.628Z --- core/__pycache__/admin.cpython-311.pyc | Bin 212 -> 769 bytes core/__pycache__/forms.cpython-311.pyc | Bin 0 -> 1281 bytes core/__pycache__/models.cpython-311.pyc | Bin 209 -> 1328 bytes core/__pycache__/views.cpython-311.pyc | Bin 1364 -> 1094 bytes core/admin.py | 8 +- core/forms.py | 13 + core/migrations/0001_initial.py | 28 ++ .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 1330 bytes core/models.py | 13 +- core/templates/base.html | 85 +++-- core/templates/core/index.html | 292 +++++++++--------- core/views.py | 33 +- static/css/custom.css | 123 +++++++- 13 files changed, 409 insertions(+), 186 deletions(-) create mode 100644 core/__pycache__/forms.cpython-311.pyc create mode 100644 core/forms.py create mode 100644 core/migrations/0001_initial.py create mode 100644 core/migrations/__pycache__/0001_initial.cpython-311.pyc diff --git a/core/__pycache__/admin.cpython-311.pyc b/core/__pycache__/admin.cpython-311.pyc index a5ed392d6714413db63120e4233d2e96cbadb5de..9b9ba4911493b420787ec7134c60ffb1577c32ed 100644 GIT binary patch literal 769 zcmZWmJ8u**5FYR2_PE>;i98e(DdHiJt{_`c0g<4gfIvaFjpeMJ%O>9S;oViZZi`Tp zF8|;V%AW~Rij%8IROv1{3Y3cR-EE{OV|!j6f8&|?+3BEHJs$rb_lV~v^`b7j&; z$qUMpyf4|nEKIH4L>5AuPA-^^_vmgS zB+tzvCg&=XgSq1uOfVr_zX*-XZ>o=@2al@{qvcoC_GtB4_1P}HQa`d~-RJu(>#5CHWra?5v>lph zV0}X7+RoE7wdi44SVL>ux~FZOWnQ*OQ@B;suA8rCec96MXxgFWhsee*A!G!P&Tj7! wte@T97i6(oIodc5ev`FxvNm=+@_Y<;+40NsrKeZ+;;&^_E;tYG#!o-?9~<_>1ONa4 delta 151 zcmZoav7r-85vTTf*CZK zUxE~9GTvfMOv%m6^V4LStjHufc_pKn)h`a4-29Z%oK(9a4xk!FATE{#5+9fu85wUd MC|tmXir9cE0I8-QaR2}S diff --git a/core/__pycache__/forms.cpython-311.pyc b/core/__pycache__/forms.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..906cdade3c63b317f06681ad656673347df5b7d0 GIT binary patch literal 1281 zcmZ`&J8#rL5MICTmGDyTWF%fEp&$;CTuTvw1cXPyQSgv(fn&Uz%O$qgS=-#@ia-HU z8bpdnkx(j%AQXz!{0g6R#c3-fs&t1!fl{$!=O9POdi;52cXsBRo%N?<#|lV{UvJ+x z-pL4k2V*d_eP#EyP}UJfSaOgn8Ipvsj1@%FlrA*9x}7?wIEb`+S=j4{AVb2)kdthZ$R=+JzFXo= zhoN9aWKj9Yey}?t!%)EdzUS^&q5KU<6hp0x(mqOtCL@xW&+hvrMPhYB{-SLPqFX>V z8HrbJV2Pv19O-p1R`y7*0W-*$!+BiTQ2xz{r47|6;1N;c=-$Z#B~Csdp(V;zJyjX_>ZCmi2R>m_FJ#nd=bzDtm1|;0Mdq6ASV6!?e8;lM9Ca{Z z&><@fSgz?FxUiH&LCVE~!Q@A}@@pq($r~q^#PcY$5PP z$yJ*&QcW)8q`$;fI8X*H0Sdtf0k8i&y_5Qi);o1APGlwXt$1;DdhOwMEq?SozG8wD zXFA21ZgHkp8ee_VEsbw`@e?b)`U0e6cS?4*WcTz-tI^u4?dA9>jVF8%eX*l2cJ;-c zJ}#D)Vb?+&y^OCmLG)HfZ*}!nKd+4y`bfY^79Ms^&|?<_)G8_)1EUB~8cegZpe0`C zL4ymK0CXpq67aXUzMRuU@Wb!}=6?QXAq@;MYn2So;Caid)3i;Qq;)~s$NU56Bm9vm zfnid6xvBILTxSmv>p_>8W7!gFUhIE|87zt<<5#bOKAH_w%3#j`LYQX2NtdEGVP*OVQY7#pm zx!~);}Ci ze5Ya^%4`fu%?5gVf?m+j389`h?0F$x8md4hBZnv(>0N{$E+Q~=ev|}(e8}-XGmM== zDS!S44ue|=>FU0s(Nf;p-bf0}4^~Io)YQ@rIAyhL8A{36Q&d871G=z>_k!PScNPG8 zf#0AaNbdRwy#Rf%A9UYm3DS$}l}JB-Vv8Aiq9P<_FL5#{IATfFspHQX`mS0!fZU=< zwJnpMk+@8yw+)@9%bVqrRZi1=nuEGnde2}x=B}Ef>72o6+U;j*_rUQhifJ)Lsl@u( zQhfs-E^`W?irTS-57wuHW^4i8lcm#_uEa60(B(v~O@>FNI|`nw$sjn7VXy=s=ev}> zY-`j~E8&MZMpcUvMYYzGq7zUQ&QVdEkfK1XWsS?SqP#AvTHg~e7@-W>^Bu7`Bw{fD zN95uN#k861gnneh}(aD(n!uGz0s(^T`+i7Ww`je<^Hd+3TCyTudmyzDNALFJ5(Ne_5- z^AzBp!o%aW$98!9i`fj%wZe0Dc&@tCmM3Z}wmi|2r)+tuy4;RV*0${EM&ez+pilO zE)mXw_b*6_YAJ7|$fkRj(i;E&a4BA=eHmDE`}>4VLogp5a}A*5!x*>G{pR(zBZe{5 S^gq(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%RM0pb7xLi8T)Z diff --git a/core/__pycache__/views.cpython-311.pyc b/core/__pycache__/views.cpython-311.pyc index 2a36fd69370b38a98d8b01bf8eb9817c42f16ed6..b80d7135052382fed84e97d4ccc8d00a43c7c5a3 100644 GIT binary patch literal 1094 zcmZuv&r2IY6rM>oyNQXeHKmkV>Xww&l$u<>G;n?y;9 z2Ma2K-prwgp3;{5Gne-65EmTvMpr^F=0a?T9K$JX`M(VP1hyG zG96iQ*kQ@eTh!6FQa+cr4B~SiVLscUVo{RTV5;R*-ZAuK#ODp-2fN~N~hhdYdUV4 zl!@Xx7EPBdTCg`|g`~S^iW(`|sm(3Q-gH;7g7z_}9n=;^c0bqd{SqcTVd7MLP@DNW z+Y~2T;^ZFJj*3Tf2Xp)Lhw~j2j67+_MvoQ`7WbD9m-d!UV|QDzhqZO@X{i}2w_;^4 zRz8i7*A|-bL@S=~Vu_9bXD)`&==gs1u)4=}coY$jxlS-3@;h%YcoZ8ue&&t8_>pTy zr(4l!kDERROlUb7_D9tX+00p~F3Hf9-DRZ9jX!c7V{A|@dqrP}(QjXo%=-L^XdHfY z4Afu8$I#{SBD$MGadA=>el`Xtcd_V literal 1364 zcmZ`(&1)M+6ra_{dS%J>I&SM!uH%hUh$T{~CE!96oTjQ1oHkCdQ$lozPf-Q6#oM~=1-7}AYwoe=&3h>36z}rW~~)fO5P4{-h1=r&HMPV zzfVm~BA|nRhVUX&zZ=1NEJDd#(kRMro?7~GlVKiARAFbK7y={g8`rq_)Wa;XDEltUWCmB zkq~sth&3ZeP{;A878u54V{Oaty2i>_vx<&kIwj51DaMXgGg(=)ND+pj!HI^Q9g`Br z#tzdA%!;PvWg3a1>()Z2BR!#4DWHiJ1dw>FOuS)~xge&2p-9tZ06jh%7)=`o)~k%rY>m)oo?Fy$ z*3WOp#5FJD)_FvD(?z&0py>SutcBjF^RHFyMAbU#a#vk`t*)G?D;+i6Rnx7Fo|by~ z_(Z$b)~@ZR_tUQyT0itB&pp5LYvy^Tl^e+D)6aYJ%l+g^CzEdC%omzVp>MZ5DOS%5y(&3}_Ht_6u+Y+N}@hOId)X3YSkfVqd2i#B#UFCLE}_*iY6UmbRbX=wC+OF7D@Fe zId&!wEzqsms=q)*VGkZVX6$$ZI2bnt=wx(Z;7mc$_8ld;X_80YvEnQfeZct$^?|B8cD)aAAj_lP7Y-iEzn8iI6qt{DlE ze25yUQ|W9dLUSFPSv|-10-?G-p`D;T*%*KF6Xon9EK5>kV1f*VU?X88BdH*o+E%9< zh(Z!zNpEM)Etp`EB&j2Hn1nW9jp>m>(s5*VY9X1U>=0@k!a9%9;+S|K(nfOch{?Z^ z2ScX9P=QRa#st-haa3+<8G>*)RS@_u#Qy1NVX#N~o88zdDUlf)JNW40|A%U0qd;b1 ztaBoJe>%?%k-p>mJC0`y#UU-B+`HRIioDhD`DU9@t4E2*b(!N@Y~S3W`yv}q=2#u) z2^INW$~OIgnx5rSk(B)OA85CM;livvvqL?*wUML> zcWJY~+4p+=Cf%cLNY9#&eYO*Htu}48eMX!A;lH`KxcI3#X?mf%&m^v6CWYWnUV z^Wx0GT9m}I>cLl024(9%YGLNXlT!70X^xk#KHUw=SAR?XewiC4_ZTk+qjC_I1FrW@ zN@ZSY3@(M0#_>a5SsGQA!paiYZ=IChk*xkj~xu(rVU=1J)TUcWKe4eK|a&GLF{RBwg#7T4FJLVC6s z&7jizgKr04M+s%F7|j*3+6x5irDRd!!i;+GrF__x>FFN;Y_nwB@@#*BY{vH&U)gv* zpUAK{wgJ+s%*q%IpRsvR<-Z(!11w5lj3X7{21i%kek1h~RwMK_d#Z){^3K literal 0 HcmV?d00001 diff --git a/core/models.py b/core/models.py index 71a8362..289a74c 100644 --- a/core/models.py +++ b/core/models.py @@ -1,3 +1,14 @@ from django.db import models -# Create your models here. +class Booking(models.Model): + name = models.CharField(max_length=255) + email = models.EmailField() + company = models.CharField(max_length=255, blank=True) + message = models.TextField() + created_at = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return f"Booking from {self.name} ({self.company})" + + class Meta: + ordering = ['-created_at'] \ No newline at end of file diff --git a/core/templates/base.html b/core/templates/base.html index 1e7e5fb..2151669 100644 --- a/core/templates/base.html +++ b/core/templates/base.html @@ -1,25 +1,72 @@ +{% load static %} - - - {% block title %}Knowledge Base{% endblock %} - {% if project_description %} - - - - {% endif %} - {% if project_image_url %} - - - {% endif %} - {% load static %} - - {% block head %}{% endblock %} + + + {% block title %}Fin Build | Modern Web Design for Businesses{% endblock %} + + + + + + + + + + + + + + {% block extra_head %}{% endblock %} - - {% block content %}{% endblock %} - + - +
+ {% if messages %} +
+ {% for message in messages %} + + {% endfor %} +
+ {% endif %} + + {% block content %}{% endblock %} +
+ +
+
+

FIN BUILD — Modern Web Design Agency

+

© 2026 Fin Build. All rights reserved.

+
+
+ + + + {% block extra_js %}{% endblock %} + + \ No newline at end of file diff --git a/core/templates/core/index.html b/core/templates/core/index.html index faec813..2f3f4b6 100644 --- a/core/templates/core/index.html +++ b/core/templates/core/index.html @@ -1,145 +1,153 @@ -{% 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… + +
+
+
+
+

Websites Built for Business Growth

+

We create modern, clean, and professional websites that help business owners build trust and attract more clients.

+ +
+
+ +
+
+ Professional. Clean. Confident. +
+
+
-

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

Our Services

+
+
+
+
+
+
+

Custom Web Design

+

Tailor-made websites designed to reflect your brand's unique identity and professional values.

+
+
+
+
+
+

Mobile Optimization

+

Ensuring your business looks great on every device—from desktops to smartphones.

+
+
+
+
+
+

Performance & Speed

+

Fast-loading pages designed to keep your visitors engaged and improve search rankings.

+
+
+
+
+
+ + +
+
+
+

How It Works

+
+
+
+
+
01
+

Consultation

+

We discuss your business goals and target audience to understand your needs.

+
+
+
02
+

Design & Build

+

Our team crafts a professional website tailored to your business requirements.

+
+
+
03
+

Launch

+

Your new professional website goes live, ready to serve your customers.

+
+
+
+
+ + +
+
+
+

Featured Work

+
+
+
+
+
+
+ Law Firm Website +
+
+

Apex Legal Partners

+

Clean, corporate, and trustworthy design.

+
+
+
+
+
+
+ Medical Clinic Website +
+
+

Green Valley Health

+

Patient-focused and easy to navigate.

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

Book Your Consultation

+

Ready to elevate your business? Let's talk.

+
+
+ {% csrf_token %} +
+ {{ form.name }} +
+
+ {{ form.email }} +
+
+ {{ form.company }} +
+
+ {{ form.message }} +
+ +
+
+
+
+
+
+{% endblock %} diff --git a/core/views.py b/core/views.py index c9aed12..099df8b 100644 --- a/core/views.py +++ b/core/views.py @@ -1,25 +1,18 @@ -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 import messages +from .forms import BookingForm 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() + if request.method == 'POST': + form = BookingForm(request.POST) + if form.is_valid(): + form.save() + messages.success(request, 'Thank you! Your booking request has been received. We will contact you shortly.') + return redirect('home') + else: + form = BookingForm() 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", ""), + 'form': form, } - 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..c906bec 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -1,4 +1,121 @@ -/* Custom styles for the application */ -body { - font-family: system-ui, -apple-system, sans-serif; +/* Fin Build Branding */ +:root { + --fb-bg: #0B1F1A; + --fb-section-bg: #0A1512; + --fb-card-bg: #1A1F1D; + --fb-heading: #FFFFFF; + --fb-body: #EDEFEA; + --fb-secondary: #B7BCB9; + --fb-accent: #C6A74E; } + +body { + background-color: var(--fb-bg); + color: var(--fb-body); + font-family: 'Inter', sans-serif; + line-height: 1.6; +} + +h1, h2, h3, h4, h5, h6, .navbar-brand { + font-family: 'Montserrat', sans-serif; + color: var(--fb-heading); + font-weight: 700; +} + +.text-secondary { + color: var(--fb-secondary) !important; +} + +.bg-section { + background-color: var(--fb-section-bg); +} + +.card { + background-color: var(--fb-card-bg); + border: 1px solid rgba(255, 255, 255, 0.05); + transition: transform 0.3s ease; +} + +.card:hover { + transform: translateY(-5px); +} + +.btn-accent { + background-color: var(--fb-accent); + color: var(--fb-bg); + font-weight: 600; + border: none; + padding: 12px 24px; + border-radius: 4px; + transition: opacity 0.3s ease; +} + +.btn-accent:hover { + opacity: 0.9; + color: var(--fb-bg); +} + +.btn-outline-accent { + border: 2px solid var(--fb-accent); + color: var(--fb-accent); + font-weight: 600; + padding: 10px 22px; +} + +.btn-outline-accent:hover { + background-color: var(--fb-accent); + color: var(--fb-bg); +} + +/* Form Styling */ +.form-control { + background-color: #0d1211; + border: 1px solid #2a3331; + color: var(--fb-body); +} + +.form-control:focus { + background-color: #0d1211; + border-color: var(--fb-accent); + color: var(--fb-body); + box-shadow: none; +} + +.form-control::placeholder { + color: var(--fb-secondary); + opacity: 0.5; +} + +/* Navbar Styling */ +.navbar { + background-color: var(--fb-bg); + border-bottom: 1px solid rgba(255, 255, 255, 0.05); +} + +.nav-link { + color: var(--fb-secondary) !important; + font-weight: 500; +} + +.nav-link:hover { + color: var(--fb-accent) !important; +} + +/* Hero Section */ +.hero-section { + padding: 120px 0; + background: radial-gradient(circle at top right, #1a2e28 0%, var(--fb-bg) 60%); +} + +.section-padding { + padding: 100px 0; +} + +.accent-text { + color: var(--fb-accent); +} + +.footer { + border-top: 1px solid rgba(255, 255, 255, 0.05); + padding: 40px 0; +} \ No newline at end of file