init commit
4
.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
.env
|
||||
__pycache__
|
||||
.venv
|
||||
.history
|
||||
5
frontend/assets/bootstrap/css/bootstrap.min.css
vendored
Normal file
1
frontend/assets/css/styles.min.css
vendored
Normal file
BIN
frontend/assets/img/about/1.jpg
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
frontend/assets/img/about/2.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
frontend/assets/img/about/3.jpg
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
frontend/assets/img/about/4.jpg
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
frontend/assets/img/clients/creative-market.jpg
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
frontend/assets/img/clients/designmodo.jpg
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
frontend/assets/img/clients/envato.jpg
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
frontend/assets/img/clients/themeforest.jpg
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
frontend/assets/img/header-bg.jpg
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
frontend/assets/img/map-image.png
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
frontend/assets/img/photo_2024-10-06_10-06-08.jpg
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
frontend/assets/img/photo_2024-10-06_10-06-15.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
frontend/assets/img/photo_2024-10-06_10-06-18.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
frontend/assets/img/portfolio/1-full.jpg
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
frontend/assets/img/portfolio/1-thumbnail.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
frontend/assets/img/portfolio/2-full.jpg
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
frontend/assets/img/portfolio/2-thumbnail.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
frontend/assets/img/portfolio/3-full.jpg
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
frontend/assets/img/portfolio/3-thumbnail.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
frontend/assets/img/portfolio/4-full.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
frontend/assets/img/portfolio/4-thumbnail.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
frontend/assets/img/portfolio/5-full.jpg
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
frontend/assets/img/portfolio/5-thumbnail.jpg
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
frontend/assets/img/portfolio/6-full.jpg
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
frontend/assets/img/portfolio/6-thumbnail.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
frontend/assets/img/team/1.jpg
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
frontend/assets/img/team/2.jpg
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
frontend/assets/img/team/3.jpg
Normal file
|
After Width: | Height: | Size: 56 KiB |
1
frontend/assets/js/script.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
!function(){"use strict";var e=document.querySelector("#mainNav");if(e){var o=e.querySelector(".navbar-collapse");if(o){var n=new bootstrap.Collapse(o,{toggle:!1}),t=o.querySelectorAll("a");for(var a of t)a.addEventListener("click",(function(e){n.hide()}))}var r=function(){(void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)>100?e.classList.add("navbar-shrink"):e.classList.remove("navbar-shrink")};r(),document.addEventListener("scroll",r);var d=document.querySelectorAll(".portfolio-modal");for(var s of d)s.addEventListener("shown.bs.modal",(function(o){e.classList.add("d-none")})),s.addEventListener("hidden.bs.modal",(function(o){e.classList.remove("d-none")}))}}();
|
||||
75
frontend/footer.html
Normal file
@@ -0,0 +1,75 @@
|
||||
<!DOCTYPE html>
|
||||
<html data-bs-theme="light" lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>Home - Brand</title>
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="icon" type="image/jpeg" sizes="500x500" href="/assets/img/photo_2024-10-06_10-06-15.jpg" media="(prefers-color-scheme: dark)">
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="icon" type="image/jpeg" sizes="500x500" href="/assets/img/photo_2024-10-06_10-06-15.jpg" media="(prefers-color-scheme: dark)">
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="stylesheet" href="/assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="manifest" href="/manifest.json" crossorigin="use-credentials">
|
||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.12.0/css/all.css">
|
||||
<link rel="stylesheet" href="/assets/css/styles.min.css">
|
||||
</head>
|
||||
|
||||
<body id="page-top" data-bs-spy="scroll" data-bs-target="#mainNav" data-bs-offset="54">
|
||||
<!-- Start: footer -->
|
||||
<footer class="text-light bg-dark pt-5 pb-4">
|
||||
<div class="container text-md-left">
|
||||
<div class="row text-md-left">
|
||||
<div class="col-md-3 col-lg-3 col-xl-3 mx-auto mt-3">
|
||||
<h5 class="text-uppercase text-warning mb-4 font-weight-bold">Company Name</h5>
|
||||
<p>Here you can use rows and columns to organize your footer content. Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
|
||||
</div>
|
||||
<div class="col-md-2 col-lg-2 col-xl-2 mx-auto mt-3">
|
||||
<h5 class="text-uppercase text-warning mb-4 font-weight-bold">Products</h5>
|
||||
<p><a href="#" class="text-light" style="text-decoration:none;">Product 1</a></p>
|
||||
<p><a href="#" class="text-light" style="text-decoration:none;">Product 2</a></p>
|
||||
<p><a href="#" class="text-light" style="text-decoration:none;">Product 3</a></p>
|
||||
<p><a href="#" class="text-light" style="text-decoration:none;">Product 4</a></p>
|
||||
</div>
|
||||
<div class="col-md-3 col-lg-2 col-xl-2 mx-auto mt-3">
|
||||
<h5 class="text-uppercase text-warning mb-4 font-weight-bold">Useful Links</h5>
|
||||
<p><a href="#" class="text-light" style="text-decoration:none;">Your Account</a></p>
|
||||
<p><a href="#" class="text-light" style="text-decoration:none;">Become an Affiliate</a></p>
|
||||
<p><a href="#" class="text-light" style="text-decoration:none;">Shipping Rates</a></p>
|
||||
<p><a href="#" class="text-light" style="text-decoration:none;">Help</a></p>
|
||||
</div>
|
||||
<div class="col-md-4 col-lg-3 col-xl-3 mx-auto mt-3">
|
||||
<h5 class="text-uppercase text-warning mb-4 font-weight-bold">Contact</h5>
|
||||
<p><i class="fas fa-home mr-3"></i> 123 Street, City, State</p>
|
||||
<p><i class="fas fa-envelope mr-3"></i> info@example.com</p>
|
||||
<p><i class="fas fa-phone mr-3"></i> + 01 234 567 88</p>
|
||||
<p><i class="fas fa-print mr-3"></i> + 01 234 567 89</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="mb-4">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-md-7 col-lg-8">
|
||||
<p class="text-md-left">© 2024 Company Name. All rights reserved.</p>
|
||||
</div>
|
||||
<div class="col-md-5 col-lg-4">
|
||||
<div class="text-md-right">
|
||||
<ul class="list-unstyled list-inline">
|
||||
<li class="list-inline-item"><a href="#" class="btn-floating btn-sm text-light" style="font-size:23px;"><i class="fab fa-facebook"></i></a></li>
|
||||
<li class="list-inline-item"><a href="#" class="btn-floating btn-sm text-light" style="font-size:23px;"><i class="fab fa-twitter"></i></a></li>
|
||||
<li class="list-inline-item"><a href="#" class="btn-floating btn-sm text-light" style="font-size:23px;"><i class="fab fa-google-plus"></i></a></li>
|
||||
<li class="list-inline-item"><a href="#" class="btn-floating btn-sm text-light" style="font-size:23px;"><i class="fab fa-linkedin-in"></i></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer><!-- End: footer -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="/assets/js/script.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
41
frontend/header.html
Normal file
@@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html>
|
||||
<html data-bs-theme="light" lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>Home - Brand</title>
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="icon" type="image/jpeg" sizes="500x500" href="/assets/img/photo_2024-10-06_10-06-15.jpg" media="(prefers-color-scheme: dark)">
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="icon" type="image/jpeg" sizes="500x500" href="/assets/img/photo_2024-10-06_10-06-15.jpg" media="(prefers-color-scheme: dark)">
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="stylesheet" href="/assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="manifest" href="/manifest.json" crossorigin="use-credentials">
|
||||
<link rel="stylesheet" href="/assets/css/styles.min.css">
|
||||
</head>
|
||||
|
||||
<body id="page-top" data-bs-spy="scroll" data-bs-target="#mainNav" data-bs-offset="54">
|
||||
<!-- Start: Navbar Right Links (Dark) -->
|
||||
<nav class="navbar navbar-expand-md bg-dark py-3" data-bs-theme="dark">
|
||||
<div class="container"><a class="navbar-brand d-flex align-items-center" href="#"><span class="bs-icon-sm bs-icon-rounded bs-icon-primary d-flex justify-content-center align-items-center me-2 bs-icon"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-bezier">
|
||||
<path fill-rule="evenodd" d="M0 10.5A1.5 1.5 0 0 1 1.5 9h1A1.5 1.5 0 0 1 4 10.5v1A1.5 1.5 0 0 1 2.5 13h-1A1.5 1.5 0 0 1 0 11.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm10.5.5A1.5 1.5 0 0 1 13.5 9h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1a1.5 1.5 0 0 1-1.5-1.5zm1.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zM6 4.5A1.5 1.5 0 0 1 7.5 3h1A1.5 1.5 0 0 1 10 4.5v1A1.5 1.5 0 0 1 8.5 7h-1A1.5 1.5 0 0 1 6 5.5zM7.5 4a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"></path>
|
||||
<path d="M6 4.5H1.866a1 1 0 1 0 0 1h2.668A6.517 6.517 0 0 0 1.814 9H2.5c.123 0 .244.015.358.043a5.517 5.517 0 0 1 3.185-3.185A1.503 1.503 0 0 1 6 5.5zm3.957 1.358A1.5 1.5 0 0 0 10 5.5v-1h4.134a1 1 0 1 1 0 1h-2.668a6.517 6.517 0 0 1 2.72 3.5H13.5c-.123 0-.243.015-.358.043a5.517 5.517 0 0 0-3.185-3.185z"></path>
|
||||
</svg></span><span>Brand</span></a><button data-bs-toggle="collapse" class="navbar-toggler" data-bs-target="#navcol-5"><span class="visually-hidden">Toggle navigation</span><span class="navbar-toggler-icon"></span></button>
|
||||
<div class="collapse navbar-collapse" id="navcol-5">
|
||||
<ul class="navbar-nav ms-auto">
|
||||
<li class="nav-item"><a class="nav-link active" href="#">First Item</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#">Second Item</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#">Third Item</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav><!-- End: Navbar Right Links (Dark) -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="/assets/js/script.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
1
frontend/manifest.json
Normal file
@@ -0,0 +1 @@
|
||||
{"short_name":"sst","name":"smartsoltech","icons":[{"src":"/assets/img/photo_2024-10-06_10-06-08.jpg","type":"image/jpeg","sizes":"1011x702"},{"src":"/assets/img/photo_2024-10-06_10-06-08.jpg","type":"image/jpeg","sizes":"1011x702"}],"start_url":"smartsoltech.kr","display":"fullscreen"}
|
||||
82
frontend/services.html
Normal file
@@ -0,0 +1,82 @@
|
||||
<!DOCTYPE html>
|
||||
<html data-bs-theme="light" lang="ru">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>SmartSoltech</title>
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="icon" type="image/jpeg" sizes="500x500" href="/assets/img/photo_2024-10-06_10-06-15.jpg" media="(prefers-color-scheme: dark)">
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="icon" type="image/jpeg" sizes="500x500" href="/assets/img/photo_2024-10-06_10-06-15.jpg" media="(prefers-color-scheme: dark)">
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="icon" type="image/jpeg" sizes="1011x702" href="/assets/img/photo_2024-10-06_10-06-08.jpg">
|
||||
<link rel="stylesheet" href="/assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="manifest" href="/manifest.json" crossorigin="use-credentials">
|
||||
<link rel="stylesheet" href="/assets/css/styles.min.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Start: Articles Cards -->
|
||||
<div class="container py-4 py-xl-5">
|
||||
<div class="row mb-5">
|
||||
<div class="col-md-8 col-xl-6 text-center mx-auto">
|
||||
<h2>Heading</h2>
|
||||
<p class="w-lg-50">Curae hendrerit donec commodo hendrerit egestas tempus, turpis facilisis nostra nunc. Vestibulum dui eget ultrices.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row gy-4 row-cols-1 row-cols-md-2 row-cols-xl-3">
|
||||
<div class="col">
|
||||
<div class="card"><img class="card-img-top w-100 d-block fit-cover" style="height: 200px;" src="https://cdn.bootstrapstudio.io/placeholders/1400x800.png">
|
||||
<div class="card-body p-4">
|
||||
<p class="text-primary card-text mb-0">Article</p>
|
||||
<h4 class="card-title">Lorem libero donec</h4>
|
||||
<p class="card-text">Nullam id dolor id nibh ultricies vehicula ut id elit. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus.</p>
|
||||
<div class="d-flex"><img class="rounded-circle flex-shrink-0 me-3 fit-cover" width="50" height="50" src="https://cdn.bootstrapstudio.io/placeholders/1400x800.png">
|
||||
<div>
|
||||
<p class="fw-bold mb-0">John Smith</p>
|
||||
<p class="text-muted mb-0">Erat netus</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card"><img class="card-img-top w-100 d-block fit-cover" style="height: 200px;" src="https://cdn.bootstrapstudio.io/placeholders/1400x800.png">
|
||||
<div class="card-body p-4">
|
||||
<p class="text-primary card-text mb-0">Article</p>
|
||||
<h4 class="card-title">Lorem libero donec</h4>
|
||||
<p class="card-text">Nullam id dolor id nibh ultricies vehicula ut id elit. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus.</p>
|
||||
<div class="d-flex"><img class="rounded-circle flex-shrink-0 me-3 fit-cover" width="50" height="50" src="https://cdn.bootstrapstudio.io/placeholders/1400x800.png">
|
||||
<div>
|
||||
<p class="fw-bold mb-0">John Smith</p>
|
||||
<p class="text-muted mb-0">Erat netus</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card"><img class="card-img-top w-100 d-block fit-cover" style="height: 200px;" src="https://cdn.bootstrapstudio.io/placeholders/1400x800.png">
|
||||
<div class="card-body p-4">
|
||||
<p class="text-primary card-text mb-0">Article</p>
|
||||
<h4 class="card-title">Lorem libero donec</h4>
|
||||
<p class="card-text">Nullam id dolor id nibh ultricies vehicula ut id elit. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus.</p>
|
||||
<div class="d-flex"><img class="rounded-circle flex-shrink-0 me-3 fit-cover" width="50" height="50" src="https://cdn.bootstrapstudio.io/placeholders/1400x800.png">
|
||||
<div>
|
||||
<p class="fw-bold mb-0">John Smith</p>
|
||||
<p class="text-muted mb-0">Erat netus</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- End: Articles Cards -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="/assets/js/script.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
BIN
smartsoltech/db.sqlite3
Normal file
22
smartsoltech/manage.py
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env python
|
||||
"""Django's command-line utility for administrative tasks."""
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
"""Run administrative tasks."""
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'smartsoltech.settings')
|
||||
try:
|
||||
from django.core.management import execute_from_command_line
|
||||
except ImportError as exc:
|
||||
raise ImportError(
|
||||
"Couldn't import Django. Are you sure it's installed and "
|
||||
"available on your PYTHONPATH environment variable? Did you "
|
||||
"forget to activate a virtual environment?"
|
||||
) from exc
|
||||
execute_from_command_line(sys.argv)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
BIN
smartsoltech/media/static/img/customer/1.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
BIN
smartsoltech/media/static/img/project/1.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 31 KiB |
BIN
smartsoltech/media/static/img/review/JD-26-512.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
smartsoltech/media/static/img/services/1.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
BIN
smartsoltech/media/static/img/services/1_1tCuJFo.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
BIN
smartsoltech/media/static/img/services/JD-26-512.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
0
smartsoltech/smartsoltech/__init__.py
Normal file
16
smartsoltech/smartsoltech/asgi.py
Normal file
@@ -0,0 +1,16 @@
|
||||
"""
|
||||
ASGI config for smartsoltech project.
|
||||
|
||||
It exposes the ASGI callable as a module-level variable named ``application``.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/5.1/howto/deployment/asgi/
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from django.core.asgi import get_asgi_application
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'smartsoltech.settings')
|
||||
|
||||
application = get_asgi_application()
|
||||
165
smartsoltech/smartsoltech/settings.py
Normal file
@@ -0,0 +1,165 @@
|
||||
"""
|
||||
Django settings for smartsoltech project.
|
||||
|
||||
Generated by 'django-admin startproject' using Django 5.1.1.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/5.1/topics/settings/
|
||||
|
||||
For the full list of settings and their values, see
|
||||
https://docs.djangoproject.com/en/5.1/ref/settings/
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
import os
|
||||
|
||||
from decouple import config
|
||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||
|
||||
|
||||
# Quick-start development settings - unsuitable for production
|
||||
# See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/
|
||||
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = config('SECRET_KEY')
|
||||
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = True
|
||||
|
||||
# Allowed hosts and CSRF trusted origins
|
||||
ALLOWED_HOSTS = config('ALLOWED_HOSTS', default='').split(',')
|
||||
CSRF_TRUSTED_ORIGINS = config('CSRF_TRUSTED_ORIGINS', default='').split(',')
|
||||
|
||||
|
||||
# Application definition
|
||||
|
||||
INSTALLED_APPS = [
|
||||
'jazzmin',
|
||||
'django.contrib.admin',
|
||||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
'django.contrib.sessions',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'web',
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
'django.middleware.security.SecurityMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
]
|
||||
|
||||
ROOT_URLCONF = 'smartsoltech.urls'
|
||||
|
||||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': [],
|
||||
'APP_DIRS': True,
|
||||
'OPTIONS': {
|
||||
'context_processors': [
|
||||
'django.template.context_processors.debug',
|
||||
'django.template.context_processors.request',
|
||||
'django.contrib.auth.context_processors.auth',
|
||||
'django.contrib.messages.context_processors.messages',
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
WSGI_APPLICATION = 'smartsoltech.wsgi.application'
|
||||
|
||||
|
||||
# Database
|
||||
# https://docs.djangoproject.com/en/5.1/ref/settings/#databases
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': BASE_DIR / 'db.sqlite3',
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Password validation
|
||||
# https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators
|
||||
|
||||
AUTH_PASSWORD_VALIDATORS = [
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
# Internationalization
|
||||
# https://docs.djangoproject.com/en/5.1/topics/i18n/
|
||||
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
LANGUAGE_CODE = 'ru-ru'
|
||||
USE_I18N = True
|
||||
USE_L10N = True
|
||||
|
||||
|
||||
TIME_ZONE = 'UTC'
|
||||
|
||||
USE_I18N = True
|
||||
|
||||
USE_TZ = True
|
||||
|
||||
|
||||
# Static files (CSS, JavaScript, Images)
|
||||
# https://docs.djangoproject.com/en/5.1/howto/static-files/
|
||||
|
||||
# Настройки для статических файлов
|
||||
STATIC_URL = '/static/'
|
||||
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # Основная папка для статики
|
||||
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') # Папка для собранных статических файлов при деплое
|
||||
|
||||
# Настройки для медиа-файлов
|
||||
MEDIA_URL = '/media/'
|
||||
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
|
||||
|
||||
# Default primary key field type
|
||||
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field
|
||||
|
||||
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
||||
|
||||
|
||||
## customization section
|
||||
|
||||
|
||||
JAZZMIN_SETTINGS = {
|
||||
"site_title": "Smartsoltech Admin",
|
||||
"site_header": "Smartsoltech",
|
||||
"welcome_sign": "Добро пожаловать в панель управления Smartsoltech",
|
||||
"site_logo": "static/img/logo.svg",
|
||||
"search_model": "web.Client",
|
||||
"user_avatar": "web.Client.image",
|
||||
"topmenu_links": [
|
||||
{"name": "Главная", "url": "admin:index", "permissions": ["auth.view_user"]},
|
||||
{"model": "web.Client"},
|
||||
{"app": "web"},
|
||||
],
|
||||
"usermenu_links": [
|
||||
{"name": "Поддержка", "url": "https://smartsoltech.kr/support", "new_window": True},
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
8
smartsoltech/smartsoltech/urls.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# smartsoltech/urls.py
|
||||
from django.contrib import admin
|
||||
from django.urls import path, include
|
||||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
path('', include('web.urls')), # Включаем маршруты приложения web
|
||||
]
|
||||
16
smartsoltech/smartsoltech/wsgi.py
Normal file
@@ -0,0 +1,16 @@
|
||||
"""
|
||||
WSGI config for smartsoltech project.
|
||||
|
||||
It exposes the WSGI callable as a module-level variable named ``application``.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/5.1/howto/deployment/wsgi/
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'smartsoltech.settings')
|
||||
|
||||
application = get_wsgi_application()
|
||||
0
smartsoltech/static/.gitignore
vendored
Normal file
5
smartsoltech/static/assets/bootstrap/css/bootstrap.min.css
vendored
Normal file
1
smartsoltech/static/assets/css/modal-styles.css
Normal file
@@ -0,0 +1 @@
|
||||
@import url('https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.3/css/bootstrap.min.css');
|
||||
198
smartsoltech/static/assets/css/styles.min.css
vendored
Normal file
@@ -0,0 +1,198 @@
|
||||
/* Font Face Definitions */
|
||||
@font-face {
|
||||
font-family: 'Kaushan Script';
|
||||
src: url('{% static "fonts/Kaushan%20Script-3db770c46931b64b6e281dcb2a7d0586.woff2" %}') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Kaushan Script';
|
||||
src: url('{% static "fonts/Kaushan%20Script-ba85b3a237ebd28058cd515071c02485.woff2" %}') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Montserrat';
|
||||
src: url('{% static "fonts/Montserrat-99764e33f03a95926b938c6f56e08a4f.woff2" %}') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Montserrat';
|
||||
src: url('{% static "fonts/Montserrat-cc6c968bcebf02819ee3afff266119d9.woff2" %}') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Montserrat';
|
||||
src: url('{% static "fonts/Montserrat-f32ddc894c166fbd8bc0d500ff2aeb3d.woff2" %}') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Montserrat';
|
||||
src: url('{% static "fonts/Montserrat-bcb799eba0c324e431d5daac3e5ea6bf.woff2" %}') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Montserrat';
|
||||
src: url('{% static "fonts/Montserrat-5cfb114945f0457bd5a940932bb8156d.woff2" %}') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
/* Utility Classes */
|
||||
.fit-cover {
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
/* Footer Styles */
|
||||
footer {
|
||||
background-color: #343a40;
|
||||
color: #fff;
|
||||
padding-top: 5rem;
|
||||
padding-bottom: 4rem;
|
||||
}
|
||||
|
||||
footer h5 {
|
||||
margin-bottom: 1.5rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
footer a, footer p {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
footer a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
footer hr {
|
||||
border-top: 1px solid #fff;
|
||||
width: 100%;
|
||||
margin: 2rem 0;
|
||||
}
|
||||
|
||||
footer .list-inline-item a {
|
||||
color: #fff;
|
||||
font-size: 23px;
|
||||
}
|
||||
|
||||
/* Button Hover Styles */
|
||||
button.btn-primary:hover {
|
||||
background: rgb(20, 87, 187);
|
||||
}
|
||||
|
||||
/* Navigation Styles */
|
||||
ul.main-nav {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
font-size: 0;
|
||||
max-width: 1000px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
ul.main-nav > li {
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul.main-nav > li > a {
|
||||
display: block;
|
||||
padding: 20px 30px;
|
||||
position: relative;
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
ul.main-nav > li:hover {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
ul.main-nav > li:hover > a {
|
||||
color: #333;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
ul.main-nav > li ul.sub-menu-lists {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
ul.main-nav > li ul.sub-menu-lists > li {
|
||||
padding: 2px 0;
|
||||
}
|
||||
|
||||
ul.main-nav > li ul.sub-menu-lists > li > a {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
/* Responsive Navigation */
|
||||
@media only screen and (max-width: 768px) {
|
||||
.ic.menu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
ul.main-nav {
|
||||
z-index: 2;
|
||||
padding: 50px 0;
|
||||
position: fixed;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 0;
|
||||
background-color: #000;
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
transition: width 0.6s, background 0.6s;
|
||||
}
|
||||
|
||||
.ic.menu:focus ~ ul.main-nav {
|
||||
width: 300px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 769px) {
|
||||
.ic.menu {
|
||||
display: none;
|
||||
}
|
||||
|
||||
ul.main-nav {
|
||||
display: block;
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
|
||||
.fa-star {
|
||||
font-size: 20px;
|
||||
color: gray;
|
||||
}
|
||||
|
||||
.checked {
|
||||
color: gold;
|
||||
}
|
||||
BIN
smartsoltech/static/assets/img/about/1.jpg
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
smartsoltech/static/assets/img/about/2.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
smartsoltech/static/assets/img/about/3.jpg
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
smartsoltech/static/assets/img/about/4.jpg
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
smartsoltech/static/assets/img/clients/creative-market.jpg
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
smartsoltech/static/assets/img/clients/designmodo.jpg
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
smartsoltech/static/assets/img/clients/envato.jpg
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
smartsoltech/static/assets/img/clients/themeforest.jpg
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
smartsoltech/static/assets/img/header-bg.jpg
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
smartsoltech/static/assets/img/map-image.png
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
smartsoltech/static/assets/img/photo_2024-10-06_10-06-08.jpg
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
smartsoltech/static/assets/img/photo_2024-10-06_10-06-15.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
smartsoltech/static/assets/img/photo_2024-10-06_10-06-18.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
smartsoltech/static/assets/img/portfolio/1-full.jpg
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
smartsoltech/static/assets/img/portfolio/1-thumbnail.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
smartsoltech/static/assets/img/portfolio/2-full.jpg
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
smartsoltech/static/assets/img/portfolio/2-thumbnail.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
smartsoltech/static/assets/img/portfolio/3-full.jpg
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
smartsoltech/static/assets/img/portfolio/3-thumbnail.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
smartsoltech/static/assets/img/portfolio/4-full.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
smartsoltech/static/assets/img/portfolio/4-thumbnail.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
smartsoltech/static/assets/img/portfolio/5-full.jpg
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
smartsoltech/static/assets/img/portfolio/5-thumbnail.jpg
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
smartsoltech/static/assets/img/portfolio/6-full.jpg
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
smartsoltech/static/assets/img/portfolio/6-thumbnail.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |