Add project and deployment instruction (docs/DEPLOYMENT.md)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
ars
2026-02-19 18:12:09 +00:00
commit 53c572ef46
94 changed files with 9200 additions and 0 deletions

BIN
media/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

6
media/favicon.svg Normal file
View File

@@ -0,0 +1,6 @@
<svg width="64" height="64" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Favicon iiEasy - упрощенная версия логотипа -->
<circle cx="100" cy="100" r="70" stroke="#1F2937" stroke-width="6" fill="none" stroke-dasharray="15 85"/>
<circle cx="100" cy="100" r="50" stroke="#1F2937" stroke-width="6" fill="none" stroke-dasharray="12 58" transform="rotate(30 100 100)"/>
<circle cx="100" cy="100" r="30" stroke="#1F2937" stroke-width="6" fill="none" stroke-dasharray="8 32" transform="rotate(60 100 100)"/>
</svg>

After

Width:  |  Height:  |  Size: 577 B

35
media/init-logos.sh Executable file
View File

@@ -0,0 +1,35 @@
#!/bin/bash
# Скрипт для автоматической замены логотипов при запуске контейнера
# Этот скрипт можно запускать при каждом старте контейнера
MEDIA_DIR="/app/media"
MAX_RETRIES=10
RETRY_DELAY=2
# Ждем пока контейнер полностью запустится
for i in $(seq 1 $MAX_RETRIES); do
if curl -f http://localhost:8080/health >/dev/null 2>&1; then
break
fi
sleep $RETRY_DELAY
done
# Находим все favicon и logo файлы
find /app -type f \( -name "favicon.png" -o -name "favicon.ico" -o -name "logo.png" -o -name "logo.svg" \) 2>/dev/null | while read file; do
dir=$(dirname "$file")
name=$(basename "$file")
# Заменяем favicon
if [[ "$name" == favicon* ]] && [ -f "$MEDIA_DIR/favicon.png" ]; then
cp "$MEDIA_DIR/favicon.png" "$file" 2>/dev/null || true
# Также создаем .ico
cp "$MEDIA_DIR/favicon.png" "$dir/favicon.ico" 2>/dev/null || true
fi
# Заменяем logo
if [[ "$name" == logo* ]] && [ -f "$MEDIA_DIR/logo.png" ]; then
cp "$MEDIA_DIR/logo.png" "$file" 2>/dev/null || true
# Также создаем .svg
cp "$MEDIA_DIR/logo.png" "$dir/logo.svg" 2>/dev/null || true
fi
done

6
media/logo-dark.svg Normal file
View File

@@ -0,0 +1,6 @@
<svg width="200" height="200" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Логотип iiEasy - темная тема -->
<circle cx="100" cy="100" r="70" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="15 85"/>
<circle cx="100" cy="100" r="50" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="12 58" transform="rotate(30 100 100)"/>
<circle cx="100" cy="100" r="30" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="8 32" transform="rotate(60 100 100)"/>
</svg>

After

Width:  |  Height:  |  Size: 557 B

6
media/logo-light.svg Normal file
View File

@@ -0,0 +1,6 @@
<svg width="200" height="200" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Логотип iiEasy - светлая тема -->
<circle cx="100" cy="100" r="70" stroke="#1F2937" stroke-width="6" fill="none" stroke-dasharray="15 85"/>
<circle cx="100" cy="100" r="50" stroke="#1F2937" stroke-width="6" fill="none" stroke-dasharray="12 58" transform="rotate(30 100 100)"/>
<circle cx="100" cy="100" r="30" stroke="#1F2937" stroke-width="6" fill="none" stroke-dasharray="8 32" transform="rotate(60 100 100)"/>
</svg>

After

Width:  |  Height:  |  Size: 559 B

BIN
media/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -0,0 +1,41 @@
```html
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>iiEasy Logo - Right Aligned with Styled Slogan</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;700;800&display=swap');
body {
font-family: 'Inter', sans-serif;
background-color: #FFFFFF;
}
.slogan-style {
letter-spacing: 0.25em;
text-transform: uppercase;
}
</style>
</head>
<body class="flex items-center justify-center min-h-screen p-8 bg-white">
<div class="flex items-center">
<!-- Логотип (SVG) -->
<svg width="180" height="180" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg" class="mr-10">
<!-- Внешнее кольцо -->
<circle cx="100" cy="100" r="70" stroke="#111827" stroke-width="6" fill="none" stroke-dasharray="15 85"/>
<!-- Среднее кольцо -->
<circle cx="100" cy="100" r="50" stroke="#111827" stroke-width="6" fill="none" stroke-dasharray="12 58" transform="rotate(30 100 100)"/>
<!-- Внутреннее кольцо -->
<circle cx="100" cy="100" r="30" stroke="#111827" stroke-width="6" fill="none" stroke-dasharray="8 32" transform="rotate(60 100 100)"/>
</svg>
<!-- Текстовый блок справа -->
<div class="flex flex-col border-l border-gray-300 pl-10">
<div class="text-3xl font-bold text-gray-900 mb-2">iiEasy</div>
<div class="text-lg text-gray-600">Будущее. Просто.</div>
</div>
</div>
</body>
</html>
```

View File

@@ -0,0 +1,32 @@
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AI Logo - Variant 40 (Kinetic Rings - Compact)</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
/* Устанавливаем шрифт Inter для всего тела документа */
body { font-family: 'Inter', sans-serif; background-color: #FFFFFF; /* Изменено на белый фон */ }
</style>
</head>
<body class="flex flex-col items-center justify-center min-h-screen p-8 bg-white text-gray-900">
<!-- SVG-иконка: Несколько открытых колец или дуг, расположенных так, чтобы создать ощущение движения. -->
<svg width="200" height="200" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg" class="mb-4">
<!-- Уменьшены радиусы для всех трех кругов, чтобы сделать их более сбитыми -->
<!-- Первый круг (самый внешний, теперь более компактный) -->
<circle cx="100" cy="100" r="70" stroke="#1F2937" stroke-width="6" fill="none" stroke-dasharray="15 85"/>
<!-- Второй круг (средний, теперь более компактный) -->
<circle cx="100" cy="100" r="50" stroke="#1F2937" stroke-width="6" fill="none" stroke-dasharray="12 58" transform="rotate(30 100 100)"/>
<!-- Третий круг (самый внутренний, теперь более компактный) -->
<circle cx="100" cy="100" r="30" stroke="#1F2937" stroke-width="6" fill="none" stroke-dasharray="8 32" transform="rotate(60 100 100)"/>
</svg>
<!-- Название компании -->
<div class="text-3xl font-bold text-gray-900 mb-2">iiEasy</div>
<!-- Слоган компании -->
<div class="text-lg text-gray-600">Будущее. Просто.</div>
</body>
</html>
```

View File

@@ -0,0 +1,32 @@
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AI Logo - Variant 40 (Kinetic Rings - Compact) - Light, Right Aligned Text</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
/* Устанавливаем шрифт Inter для всего тела документа */
body { font-family: 'Inter', sans-serif; background-color: #FFFFFF; /* Светлый фон */ }
</style>
</head>
<body class="flex items-center justify-center min-h-screen p-8 bg-white text-gray-800">
<!-- SVG-иконка: Несколько открытых колец или дуг, расположенных так, чтобы создать ощущение движения. -->
<!-- Добавлен margin-right для отступа от текста -->
<svg width="200" height="200" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg" class="mr-6">
<!-- Уменьшены радиусы для всех трех кругов, чтобы сделать их более сбитыми -->
<!-- Первый круг (самый внешний, теперь более компактный) -->
<circle cx="100" cy="100" r="70" stroke="#1F2937" stroke-width="6" fill="none" stroke-dasharray="15 85"/>
<!-- Второй круг (средний, теперь более компактный) -->
<circle cx="100" cy="100" r="50" stroke="#1F2937" stroke-width="6" fill="none" stroke-dasharray="12 58" transform="rotate(30 100 100)"/>
<!-- Третий круг (самый внутренний, теперь более компактный) -->
<circle cx="100" cy="100" r="30" stroke="#1F2937" stroke-width="6" fill="none" stroke-dasharray="8 32" transform="rotate(60 100 100)"/>
</svg>
<!-- Название компании -->
<!-- Слоган удален, размер текста увеличен -->
<div class="text-5xl font-bold text-gray-900">iiEasy</div>
</body>
</html>
```

View File

@@ -0,0 +1,32 @@
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AI Logo - Variant 40 (Kinetic Rings - Compact) - Dark</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
/* Устанавливаем шрифт Inter для всего тела документа */
body { font-family: 'Inter', sans-serif; background-color: #000000; /* Изменено на черный фон */ }
</style>
</head>
<body class="flex flex-col items-center justify-center min-h-screen p-8 bg-black text-white">
<!-- SVG-иконка: Несколько открытых колец или дуг, расположенных так, чтобы создать ощущение движения. -->
<svg width="200" height="200" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg" class="mb-4">
<!-- Уменьшены радиусы для всех трех кругов, чтобы сделать их более сбитыми -->
<!-- Первый круг (самый внешний, теперь более компактный) -->
<circle cx="100" cy="100" r="70" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="15 85"/>
<!-- Второй круг (средний, теперь более компактный) -->
<circle cx="100" cy="100" r="50" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="12 58" transform="rotate(30 100 100)"/>
<!-- Третий круг (самый внутренний, теперь более компактный) -->
<circle cx="100" cy="100" r="30" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="8 32" transform="rotate(60 100 100)"/>
</svg>
<!-- Название компании -->
<div class="text-3xl font-bold text-white mb-2">iiEasy</div>
<!-- Слоган компании -->
<div class="text-lg text-gray-300">Будущее. Просто.</div>
</body>
</html>
```

View File

@@ -0,0 +1,32 @@
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AI Logo - Variant 40 (Kinetic Rings - Compact) - Dark, Right Aligned Text</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
/* Устанавливаем шрифт Inter для всего тела документа */
body { font-family: 'Inter', sans-serif; background-color: #000000; /* Черный фон */ }
</style>
</head>
<body class="flex items-center justify-center min-h-screen p-8 bg-black text-white">
<!-- SVG-иконка: Несколько открытых колец или дуг, расположенных так, чтобы создать ощущение движения. -->
<!-- Добавлен margin-right для отступа от текста -->
<svg width="200" height="200" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg" class="mr-6">
<!-- Уменьшены радиусы для всех трех кругов, чтобы сделать их более сбитыми -->
<!-- Первый круг (самый внешний, теперь более компактный) -->
<circle cx="100" cy="100" r="70" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="15 85"/>
<!-- Второй круг (средний, теперь более компактный) -->
<circle cx="100" cy="100" r="50" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="12 58" transform="rotate(30 100 100)"/>
<!-- Третий круг (самый внутренний, теперь более компактный) -->
<circle cx="100" cy="100" r="30" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="8 32" transform="rotate(60 100 100)"/>
</svg>
<!-- Название компании -->
<!-- Слоган удален, размер текста увеличен -->
<div class="text-5xl font-bold text-white">iiEasy</div>
</body>
</html>
```

View File

@@ -0,0 +1,42 @@
```html
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>iiEasy Logo - Right Aligned Dark with Styled Slogan</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;700;800&display=swap');
body {
font-family: 'Inter', sans-serif;
background-color: #000000;
}
.slogan-style {
letter-spacing: 0.25em;
text-transform: uppercase;
}
</style>
</head>
<body class="flex items-center justify-center min-h-screen p-8 bg-black">
<div class="flex items-center">
<!-- Логотип (SVG) - Белый -->
<svg width="180" height="180" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg" class="mr-10">
<!-- Внешнее кольцо -->
<circle cx="100" cy="100" r="70" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="15 85"/>
<!-- Среднее кольцо -->
<circle cx="100" cy="100" r="50" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="12 58" transform="rotate(30 100 100)"/>
<!-- Внутреннее кольцо -->
<circle cx="100" cy="100" r="30" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="8 32" transform="rotate(60 100 100)"/>
</svg>
<!-- Текстовый блок справа - Белый -->
<div class="flex flex-col border-l border-gray-700 pl-10">
<div class="text-3xl font-bold text-white mb-2">iiEasy</div>
<!-- Слоган компании -->
<div class="text-lg text-gray-300">Будущее. Просто.</div>
</div>
</div>
</body>
</html>
```

View File

@@ -0,0 +1,75 @@
```html
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Анимированный логотип - iiEasy (Горизонтальная темная версия)</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Inter', sans-serif;
background-color: #000000; /* Черный фон */
}
</style>
</head>
<body class="flex items-center justify-center min-h-screen bg-black p-8">
<!-- Основной контейнер для горизонтального расположения -->
<div class="flex items-center space-x-6">
<!--
SVG-иконка: Анимированные кинетические кольца (инвертированная версия).
Размер уменьшен для гармоничного сочетания с текстом.
-->
<svg width="100" height="100" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Внешнее кольцо -->
<circle cx="100" cy="100" r="70" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="15 85">
<animateTransform
attributeName="transform"
attributeType="XML"
type="rotate"
from="0 100 100"
to="360 100 100"
dur="10s"
repeatCount="indefinite" />
</circle>
<!-- Среднее кольцо -->
<circle cx="100" cy="100" r="50" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="12 58" transform="rotate(30 100 100)">
<animateTransform
attributeName="transform"
attributeType="XML"
type="rotate"
from="30 100 100"
to="-330 100 100"
dur="12s"
repeatCount="indefinite" />
</circle>
<!-- Внутреннее кольцо -->
<circle cx="100" cy="100" r="30" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="8 32" transform="rotate(60 100 100)">
<animateTransform
attributeName="transform"
attributeType="XML"
type="rotate"
from="60 100 100"
to="420 100 100"
dur="8s"
repeatCount="indefinite" />
</circle>
</svg>
<!-- Название бренда (белый текст) -->
<h1 class="text-6xl font-bold text-white tracking-tight">iiEasy</h1>
</div>
</body>
</html>
```

View File

@@ -0,0 +1,78 @@
```html
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Анимированный логотип - iiEasy (Темная версия)</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Inter', sans-serif;
background-color: #000000; /* Черный фон */
}
</style>
</head>
<body class="flex items-center justify-center min-h-screen bg-black p-8">
<!-- Основной контейнер для центрирования контента по вертикали -->
<div class="flex flex-col items-center text-center">
<!--
SVG-иконка: Анимированные кинетические кольца (инвертированная версия).
Все штрихи сделаны белыми для контраста с черным фоном.
-->
<svg width="200" height="200" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Внешнее кольцо -->
<circle cx="100" cy="100" r="70" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="15 85">
<animateTransform
attributeName="transform"
attributeType="XML"
type="rotate"
from="0 100 100"
to="360 100 100"
dur="10s"
repeatCount="indefinite" />
</circle>
<!-- Среднее кольцо -->
<circle cx="100" cy="100" r="50" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="12 58" transform="rotate(30 100 100)">
<animateTransform
attributeName="transform"
attributeType="XML"
type="rotate"
from="30 100 100"
to="-330 100 100"
dur="12s"
repeatCount="indefinite" />
</circle>
<!-- Внутреннее кольцо -->
<circle cx="100" cy="100" r="30" stroke="#FFFFFF" stroke-width="6" fill="none" stroke-dasharray="8 32" transform="rotate(60 100 100)">
<animateTransform
attributeName="transform"
attributeType="XML"
type="rotate"
from="60 100 100"
to="420 100 100"
dur="8s"
repeatCount="indefinite" />
</circle>
</svg>
<!-- Название бренда (белый текст) -->
<h1 class="text-5xl font-bold text-white mt-8 tracking-tight">iiEasy</h1>
<!-- Новый слоган (светло-серый текст для легкого контраста) -->
<p class="text-xl font-medium text-gray-300 mt-2 tracking-wide">Будущее. Просто.</p>
</div>
</body>
</html>
```