Initial commit
This commit is contained in:
BIN
dist/assets/geo-logo-CTcDXZQa.webp
vendored
Normal file
BIN
dist/assets/geo-logo-CTcDXZQa.webp
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
1
dist/assets/index-BZSFOg8v.css
vendored
Normal file
1
dist/assets/index-BZSFOg8v.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,sans-serif}.overflow-x-auto{scrollbar-width:thin;scrollbar-color:#FF9900 #f5f5f5}.overflow-x-auto::-webkit-scrollbar{height:8px}.overflow-x-auto::-webkit-scrollbar-track{background:#f5f5f5;border-radius:10px}.overflow-x-auto::-webkit-scrollbar-thumb{background:#f90;border-radius:10px}.overflow-x-auto::-webkit-scrollbar-thumb:hover{background:#e68a00}.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}@keyframes gradient-shift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.animate-gradient{background-size:200% 200%;animation:gradient-shift 8s ease infinite}@keyframes fade-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in-up{animation:fade-in-up .6s ease-out forwards}
|
||||
361
dist/assets/index-WgNyvlZq.js
vendored
Normal file
361
dist/assets/index-WgNyvlZq.js
vendored
Normal file
File diff suppressed because one or more lines are too long
104
dist/index.html
vendored
Normal file
104
dist/index.html
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>ГеоВектор - Проектирование и Строительство</title>
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/webp" href="/assets/geo-logo-CTcDXZQa.webp" />
|
||||
<link rel="shortcut icon" type="image/webp" href="/assets/geo-logo-CTcDXZQa.webp" />
|
||||
<link rel="apple-touch-icon" href="/assets/geo-logo-CTcDXZQa.webp" />
|
||||
|
||||
<!-- Meta tags -->
|
||||
<meta name="description" content="ООО ГеоВектор - профессиональные инженерные изыскания, проектирование и строительство в Уфе. Современное оборудование, опытные специалисты." />
|
||||
<meta name="keywords" content="инженерные изыскания, проектирование, строительство, геология, геодезия, ГеоВектор, Уфа" />
|
||||
|
||||
<!-- Open Graph для соцсетей -->
|
||||
<meta property="og:title" content="ГеоВектор - Инженерные изыскания, проектирование и строительство" />
|
||||
<meta property="og:description" content="Профессиональные инженерные изыскания, проектирование и строительство в Уфе. Современное оборудование, опытные специалисты." />
|
||||
<meta property="og:image" content="https://geowektor.ru/media/geo-logo.webp" />
|
||||
<meta property="og:url" content="https://geowektor.ru" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:locale" content="ru_RU" />
|
||||
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="ГеоВектор - Инженерные изыскания и строительство" />
|
||||
<meta name="twitter:description" content="Профессиональные решения для строительства в Уфе" />
|
||||
<meta name="twitter:image" content="https://geowektor.ru/media/geo-logo.webp" />
|
||||
|
||||
<!-- Schema.org разметка -->
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
"name": "ООО ГеоВектор",
|
||||
"alternateName": "GeoVector",
|
||||
"url": "https://geowektor.ru",
|
||||
"logo": "https://geowektor.ru/media/geo-logo.webp",
|
||||
"contactPoint": {
|
||||
"@type": "ContactPoint",
|
||||
"telephone": "+7-347-292-73-70",
|
||||
"contactType": "customer service",
|
||||
"areaServed": "RU",
|
||||
"availableLanguage": ["Russian"]
|
||||
},
|
||||
"address": {
|
||||
"@type": "PostalAddress",
|
||||
"streetAddress": "ул. Комсомольская 19/1",
|
||||
"addressLocality": "Уфа",
|
||||
"addressRegion": "Республика Башкортостан",
|
||||
"postalCode": "450001",
|
||||
"addressCountry": "RU"
|
||||
},
|
||||
"sameAs": [
|
||||
"https://t.me/ooo_geo_wektor",
|
||||
"https://vk.com/geowektor_ru"
|
||||
],
|
||||
"description": "Профессиональные инженерные изыскания, проектирование и строительство. Грунтовая и радиационная лаборатории."
|
||||
}
|
||||
</script>
|
||||
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||||
<script>
|
||||
tailwind.config = {
|
||||
theme: {
|
||||
extend: {
|
||||
fontFamily: {
|
||||
sans: ['Inter', 'sans-serif'],
|
||||
},
|
||||
colors: {
|
||||
brand: {
|
||||
orange: '#FF9900',
|
||||
dark: '#111111',
|
||||
gray: '#222222',
|
||||
light: '#F5F5F5'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<script type="importmap">
|
||||
{
|
||||
"imports": {
|
||||
"lucide-react": "https://aistudiocdn.com/lucide-react@^0.555.0",
|
||||
"react/": "https://aistudiocdn.com/react@^19.2.0/",
|
||||
"react": "https://aistudiocdn.com/react@^19.2.0",
|
||||
"react-dom/": "https://aistudiocdn.com/react-dom@^19.2.0/",
|
||||
"react-router-dom": "https://aistudiocdn.com/react-router-dom@^6.22.3",
|
||||
"react-router": "https://aistudiocdn.com/react-router@^6.22.3",
|
||||
"@remix-run/router": "https://aistudiocdn.com/@remix-run/router@^1.15.3"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<script type="module" crossorigin src="/assets/index-WgNyvlZq.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-BZSFOg8v.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
</body>
|
||||
</html>
|
||||
19
dist/robots.txt
vendored
Normal file
19
dist/robots.txt
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
User-agent: *
|
||||
Allow: /
|
||||
|
||||
# Sitemap
|
||||
Sitemap: https://geowektor.ru/sitemap.xml
|
||||
|
||||
# Запрет индексации служебных файлов
|
||||
Disallow: /node_modules/
|
||||
Disallow: /*.json
|
||||
Disallow: /*.ts
|
||||
Disallow: /*.tsx
|
||||
|
||||
# Доступ к медиа файлам
|
||||
Allow: /media/
|
||||
|
||||
# Host (основной домен)
|
||||
Host: https://geowektor.ru
|
||||
|
||||
|
||||
107
dist/sitemap.xml
vendored
Normal file
107
dist/sitemap.xml
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://geowektor.ru/</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/about</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/services</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/services/surveying</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/services/design</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/services/construction</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/services/soil-survey</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/services/building-survey</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/services/land-survey</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/services/technical-tasks</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.6</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/projects</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/fleet</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/laboratories/soil</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/laboratories/radiation</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/certificates</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/contacts</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://geowektor.ru/#/privacy-policy</loc>
|
||||
<lastmod>2025-01-01</lastmod>
|
||||
<changefreq>yearly</changefreq>
|
||||
<priority>0.5</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
|
||||
|
||||
67
dist/sw.js
vendored
Normal file
67
dist/sw.js
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
const CACHE_NAME = 'geovector-v1';
|
||||
const urlsToCache = [
|
||||
'/',
|
||||
'/index.html',
|
||||
'/index.css',
|
||||
'/media/geo-logo.webp',
|
||||
'/media/qr-code.png'
|
||||
];
|
||||
|
||||
// Установка Service Worker
|
||||
self.addEventListener('install', (event) => {
|
||||
event.waitUntil(
|
||||
caches.open(CACHE_NAME)
|
||||
.then((cache) => {
|
||||
console.log('Кэш открыт');
|
||||
return cache.addAll(urlsToCache);
|
||||
})
|
||||
);
|
||||
self.skipWaiting();
|
||||
});
|
||||
|
||||
// Активация Service Worker
|
||||
self.addEventListener('activate', (event) => {
|
||||
event.waitUntil(
|
||||
caches.keys().then((cacheNames) => {
|
||||
return Promise.all(
|
||||
cacheNames.map((cacheName) => {
|
||||
if (cacheName !== CACHE_NAME) {
|
||||
console.log('Удаление старого кэша:', cacheName);
|
||||
return caches.delete(cacheName);
|
||||
}
|
||||
})
|
||||
);
|
||||
})
|
||||
);
|
||||
return self.clients.claim();
|
||||
});
|
||||
|
||||
// Fetch - стратегия Network First, затем Cache
|
||||
self.addEventListener('fetch', (event) => {
|
||||
event.respondWith(
|
||||
fetch(event.request)
|
||||
.then((response) => {
|
||||
// Клонируем ответ, так как можем использовать его только один раз
|
||||
const responseToCache = response.clone();
|
||||
|
||||
caches.open(CACHE_NAME).then((cache) => {
|
||||
cache.put(event.request, responseToCache);
|
||||
});
|
||||
|
||||
return response;
|
||||
})
|
||||
.catch(() => {
|
||||
// Если сеть недоступна, пытаемся получить из кэша
|
||||
return caches.match(event.request).then((cachedResponse) => {
|
||||
if (cachedResponse) {
|
||||
return cachedResponse;
|
||||
}
|
||||
|
||||
// Если нет в кэше, возвращаем офлайн-страницу
|
||||
return caches.match('/index.html');
|
||||
});
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user