Skip to content

Latest commit

 

History

333 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📝 Описание проекта

GPL-3.0 License Website GitHub stars GitHub forks GitHub Watchers GitHub pull requests GitHub issues

Это современный веб-интерфейс для проекта goida-vpn-configs. Сайт автоматически парсит актуальные конфигурации (V2Ray / VLESS / Hysteria / Trojan / VMess / Reality / Shadowsocks), генерирует удобные ссылки для копирования, QR-коды и предоставляет исчерпывающие инструкции по настройке.

Preview

✨ Ключевые особенности

maxresdefault

  • 🌍 Мультиязычность (i18n): Полная поддержка 8 языков (Русский, English, Français, Polski, Українська, Беларуская, Deutsch, Казахский) с сохранением выбора пользователя.
  • 📱 PWA Ready: Сайт является прогрессивным веб-приложением. Его можно установить на смартфон или ПК, он поддерживает кэширование и работает в офлайн-режиме быстрее.
  • 🔄 Динамические конфигурации: Данные о конфигах и времени их обновления подтягиваются в реальном времени из внешнего репозитория.
  • ⚡ Автоматизация ссылок: Автоматический поиск и обновление прямых ссылок на VPN-клиенты (v2rayNG, Throne) и системные компоненты (VC Runtimes) на базе GitHub API и comss.ru.
  • 🌗 Поддержка тем: Полноценная темная и светлая темы с автоматическим определением предпочтений системы.
  • 🔍 SEO Оптимизация: Автоматическая генерация sitemap.xml и robots.txt, правильные мета-теги и канонические ссылки.
  • 🛡️ Безопасность: Модальные окна подтверждения для внешних ссылок и загрузок файлов.

🏗️ Структура проекта

Кодовая база спроектирована по канонам разработки на Flask с использованием фабрики приложений (Application Factory), разделением роутинга на синие страницы (Blueprints) и инкапсуляцией логики в слой сервисов (Services). Все исходные файлы проекта перенесены в папку source.

goida-vpn-site/
├── source/                           # Папка с исходными файлами проекта
│   ├── app/                          # Основной пакет веб-приложения
│   │   ├── __init__.py              # Фабрика приложений (create_app), регистрация Blueprints
│   │   ├── config.py                # Глобальные настройки, SEO-дефолты, fallback-ссылки и источники
│   │   ├── utils.py                 # Утилиты генерации robots.txt, sitemap.xml и нормализации URL
│   │   ├── routes/                  # Контроллеры и маршрутизация (Blueprints)
│   │   │   ├── views.py             # Рендеринг основного UI (главная страница `/`)
│   │   │   ├── api.py               # API эндпоинты с кэшированием (скачивания, статистика, VC++)
│   │   │   └── seo.py               # SEO и PWA-файлы (sitemap, robots, sw.js, manifest)
│   │   ├── services/                # Бизнес-логика и сбор данных из внешних источников
│   │   │   ├── vpn.py               # Скрапинг VPN-конфигураций и времени их обновлений
│   │   │   ├── github.py            # Работа с GitHub API (загрузка бейджей, ссылки, статистика)
│   │   │   └── vc_runtime.py        # Парсинг VC++ Redistributable с comss.ru
│   │   ├── templates/               # HTML-шаблоны (Jinja2)
│   │   │   ├── base.html            # Основной лэйаут с Alpine.js (модалки, темы, меню)
│   │   │   ├── index.html           # Точка сборки главной страницы
│   │   │   └── components/          # Модульные компоненты UI (header, footer, hero, tabs, bypass, video, instructions)
│   │   └── static/                  # Статические ресурсы фронтенда
│   │       ├── css/                 # Tailwind CSS стили (tailwind.css, tailwind.input.css)
│   │       ├── js/                  # Скрипты (i18n.js, statistics.js, update-download-links.js, link-confirmation.js)
│   │       ├── i18n/                # Переводы (translations.json на 5 языках)
│   │       ├── images/              # Картинки, фавиконы, QR-коды и папка badges/
│   │       ├── manifest.webmanifest # Манифест PWA-приложения
│   │       └── sw.js                # Сервис-воркер PWA-кэширования
│   ├── build.py                      # Скрипт сборки статического HTML/JSON сайта и деплоя в Pages
│   ├── main.py                       # Точка входа для локального запуска сервера (Flask / Waitress)
│   ├── tailwind.config.js            # Конфигурация сканирования контента Tailwind CSS
│   ├── package.json                  # Зависимости Tailwind (JIT/CLI компилятор)
│   └── requirements.txt              # Зависимости Python-приложения

🛠️ Технологии

  • Backend: Python 3.10+, Flask, Waitress, Requests, BeautifulSoup4.
  • Frontend: TailwindCSS (CLI), Alpine.js, FontAwesome, Vanilla JS.
  • Интернационализация: Собственная JS-реализация на базе JSON-файла переводов.
  • PWA: Service Workers, Web App Manifest.
  • CI/CD: GitHub Actions + build.py для автоматического деплоя в ветку gh-pages.

⚙️ Установка и запуск

Предварительные требования:

  • Python 3.10+
  • Node.js (только если планируете изменять CSS)

Шаги установки:

  1. Клонируйте репозиторий:
git clone https://github.com/AvenCores/goida-vpn-site.git
cd goida-vpn-site
  1. Настройте виртуальное окружение:
python -m venv .env
# Windows:
.env\Scripts\activate
# Linux/macOS:
source .env/bin/activate
# Установите зависимости:
pip install -r source/requirements.txt
  1. Сборка стилей (опционально):
cd source
npm install
npm run build:css

📝 Разработка и обслуживание

Локальный запуск

  • Режим отладки (со всеми заглушками API):
    python source/main.py --debug
    Сайт будет доступен на http://localhost:5000 с включенным автоперезагрузчиком при изменении кода.
  • Режим продакшена (через Waitress):
    python source/main.py

Сборка статической версии

  • Простая локальная компиляция (по умолчанию):
    # Перейдите в папку source, так как скрипты завязаны на относительные пути
    cd source
    python build.py
    или с явным указанием флага:
    python build.py --build-only
    Результат компилируется в папку source/dist/.
  • Компиляция и деплой на GitHub Pages:
    python build.py --deploy
    (Требуется наличие MY_TOKEN или GITHUB_TOKEN в переменных окружения).

Обслуживание контента

  • Обновление конфигураций VPN: Все конфигурации подтягиваются динамически. Любые изменения вносите напрямую в исходный репозиторий AvenCores/goida-vpn-configs.
  • Редактирование локализации: Для изменения текстов, добавления новых строк или исправления перевода редактируйте файл перевода: source/app/static/i18n/translations.json.
  • Изменение дизайна и стилей: После изменения шаблонов или файла source/app/static/css/tailwind.input.css перейдите в папку source и запустите сборку стилей через npm run build:css.

🚀 Автоматизация (GitHub Actions)

Сайт полностью автономен и обновляется через CI/CD:

  1. По расписанию (каждый час): Запускается GitHub Action, который через build.py стягивает свежие ссылки, собирает актуальную статистику репозитория конфигураций и компилирует свежую статическую версию.
  2. При пуше изменений: Автоматически запускается процесс деплоя сгенерированного билда в ветку gh-pages.

📜 Лицензия

Лицензия GPL-3.0 — подробности в файле LICENSE.


💰 Поддержать автора

  • SBER: 2202 2050 1464 4675