Skip to content

fenjo26/Orbitra.link

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Orbitra v0.9.2.9 Tracker

License: MIT PHP Version React SQLite Status

Упрощённый клон Keitaro Tracker — система для управления и отслеживания трафика с возможностями сплит-тестирования, ротации потоков и учёта конверсий.

🚀 Быстрая Установка (Ubuntu 20.04 / 22.04)

Для автоматической установки на "чистый" Linux сервер выполните команду в терминале (под root / sudo):

wget -qO- https://raw.githubusercontent.com/fenjo26/Orbitra.link/main/install.sh | bash

Установщик автоматически скачает исходный код GitHub, установит Nginx, PHP 8+, SQLite, загрузит собранный релиз Frontend'a и настроит бесплатный SSL-сертификат Let's Encrypt для вашего домена.

Что уже реализовано:

1. Архитектура и База Данных

  • SQLite база данных (orbitra_db.sqlite), создаваемая на лету(без необходимости MySQL).
  • Единый конфигурационный файл config.php с автоматическим накатом таблиц.
  • Таблицы: campaigns, offers, landings, affiliate_networks, streams, clicks, conversions, domains, traffic_sources, telegram_bot_chats и другие.
  • Анти-дребезг (Debounce) ядро: Встроенная система защиты от двойных кликов при агрессивной фоновой предзагрузке (prefetch/prerender) ссылок современными браузерами.

2. Frontend (React + Vite)

  • Современная SPA админ-панель, вдохновленная дизайном Keitaro (боковая панель слева, контент справа, серый чистый фон, минималистичные тени).
  • Разделы:
    • Дашборд: Главная страница со сводкой и логами кликов/конверсий.
    • Кампании: Список кампаний с удобной полноэкранной панелью редактирования (CampaignEditor.jsx). Левая часть — основные параметры, правая — гибкая настройка потоков (Streams).
    • Офферы, Лендинги, Источники, Партнёрки, Домены: Полноценные CRUD-таблицы с модальными окнами для редактирования. Плавное закрытие, кнопки "Сохранить", чекбоксы "Добавить еще".
    • Гео Базы: Загрузка и обновление SxGeoCity.dat напрямую из админки в один клик.
    • Настройки: Аналог инструментария Keitaro "Advanced Settings". Смена паролей, глобальные конфигурации системы, настройка конверсий (mapping), кастомные метрики и мощный анти-бот (user-agents, IPs).
    • Миграции и Обновления системы: Встроенная система наката схем БД и автоматический git pull прямо из админки.
    • Архив: Безопасное "мягкое" удаление элементов с возможностью их восстановления или полной очистки сборщиком мусора.
  • Smart UI: Компонент GeoSelector с поддержкой визуальных тегов (флагов), режима массового ввода текста (textarea) и автодополнения по профилям (EU, CIS, etc). Встроенная "Детализация клика" (Click Details Modal) для аналитики логов.
  • Сплит-тесты: Поддержка A/B тестирования прямо внутри потоков (Stream Schema) со встроенным валидатором весов.
  • WordPress Плагин: Официальный WP-плагин для быстрой монетизации трафика и вставки мультиязычных кнопок на сайты.
  • Безопасность API: Полная защита интерфейсов μέσω Session Management (Anti-Fraud, SSRF Protection, JWT-совместимость аутентификации React).

3. 🌍 Мультиязычность (i18n)

  • Полная поддержка двух языков: Русский (RU) и Английский (EN).
  • Контекст LanguageContext с хуком useLanguage() для доступа к функции перевода t().
  • Файлы переводов: src/locales/en.js (~1100 ключей) и src/locales/ru.js (~1260 ключей).
  • Все 46 компонентов переведены — нет захардкоженных строк в UI.
  • Переключение языка в Профиль → Настройки с мгновенным применением без перезагрузки.

4. 👤 Профиль и Персонализация

  • Страница профиля (ProfileSettings.jsx):
    • Выбор языка интерфейса (Русский / English)
    • Настройка часового пояса (полный список IANA)
    • Первый день недели (Понедельник / Воскресенье)
    • Смена пароля
  • Настройки сохраняются per-user и применяются глобально.

5. 🤖 Telegram Bot Интеграция

  • Полнофункциональный Telegram-бот для мониторинга трекера:
    • /stats / /stats 7d — статистика (клики, конверсии, доход, ROI)
    • /campaigns — список активных кампаний с метриками
    • /campaign ID — детальная статистика по кампании
    • /top — ТОП-5 кампаний по доходу (🥇🥈🥉)
    • /conversions — последние 10 конверсий
    • /notify on|off — уведомления о новых конверсиях
    • /daily on|off — ежедневная сводка
    • /lang ru|en — смена языка бота
  • Автоматические уведомления:
    • Мгновенное при каждой конверсии (кампания, статус, сумма, страна + флаг)
    • Ежедневная сводка с ТОП-3 кампаниями
  • UI настройки во вкладке Интеграции → Telegram Bot:
    • Ввод токена с показом/скрытием
    • Индикатор подключения (зелёный/красный)
    • Список подключённых чатов
    • Toggle уведомлений и время ежедневной сводки
    • Тестовое сообщение
  • Бот мультиязычный — поддерживает RU и EN.

Продвинутое управление доменами

  • Проверка DNS статуса в реальном времени (автоматический резолв A-записи).
  • Модальное окно с инструкциями по парковке и автоопределением IP сервера.
  • HTTPS-only: Тумблер для принудительного 301 редиректа на безопасный протокол.
  • Защита от ботов: Встроенный перехват /robots.txt и отдача заголовков X-Robots-Tag: noindex, nofollow для паркованных доменов.

TrendsPage (Аналитика)

  • Графики по метрикам: клики, уники, конверсии, доход, расход, прибыль, CTR, CR
  • Группировка: по дням, неделям, месяцам, часам
  • Таблица с данными
  • Фильтры по параметрам

Обновлённый Dashboard

  • 4 секции таблиц: Кампании, Офферы, Лендинги, Источники (в сетке 2x2)
  • Сортировка топов с учетом глобального фильтра по датам и автоматическое скрытие сущностей с нулевым трафиком
  • Синхронизация времени обновления дашборда со строгим серверным часовым поясом логирования
  • Перемещён ConversionsLog в раздел Admin

📁 Структура проекта

Orbitra/
├── config.php              # Конфигурация БД и инициализация таблиц SQLite
├── database.sql            # Схема БД (документация SQLite)
├── api.php                 # REST API для React frontend
├── index.php               # Основной трекер — приём кликов и редиректы
├── postback.php            # Приём постбеков от партнёрских сетей
├── telegram_bot.php        # 🤖 Telegram Bot webhook handler
├── telegram_notify.php     # 🤖 Уведомления бота (конверсии + daily)
├── router.php              # Router для PHP built-in server
├── admin.php               # Admin panel (React App)
├── .htaccess               # Apache mod_rewrite правила
├── orbitra_db.sqlite      # Файл БД SQLite (создаётся автоматически)
├── landings/               # Папка для загруженных локальных лендингов
└── frontend/               # React + Vite frontend
    ├── src/
    │   ├── App.jsx         # Главный компонент с роутингом
    │   ├── main.jsx        # Entry point
    │   ├── index.css       # Стили + CSS переменные для темизации
    │   ├── contexts/
    │   │   └── LanguageContext.jsx  # 🌍 Контекст мультиязычности
    │   ├── locales/
    │   │   ├── en.js       # 🌍 Английские переводы (~1100 ключей)
    │   │   └── ru.js       # 🌍 Русские переводы (~1260 ключей)
    │   └── components/     # 46 React компонентов
    │       ├── Navbar.jsx              # Навигация + переключатель темы
    │       ├── StatCards.jsx           # Карточки метрик
    │       ├── MainChart.jsx           # График кликов/конверсий
    │       ├── DataTables.jsx          # 4 таблицы на дашборде
    │       ├── DashboardHeader.jsx     # Шапка дашборда с фильтрами
    │       ├── DashboardSettingsModal.jsx # Настройки дашборда
    │       ├── TrendsPage.jsx          # Страница аналитики и трендов
    │       ├── CampaignEditor.jsx      # Полноэкранный редактор кампаний
    │       ├── CampaignReports.jsx     # Отчёты по кампаниям
    │       ├── RecentClicks.jsx        # Последние клики
    │       ├── ClickDetailsModal.jsx   # Детализация клика
    │       ├── Campaigns.jsx           # Список кампаний
    │       ├── Offers.jsx              # Список офферов
    │       ├── OfferEditor.jsx         # Редактор оффера
    │       ├── Landings.jsx            # Список лендингов
    │       ├── LandingEditor.jsx       # Редактор лендинга
    │       ├── Domains.jsx             # Управление доменами
    │       ├── TrafficSources.jsx      # Источники трафика
    │       ├── TrafficSourceEditor.jsx # Редактор источника
    │       ├── AffiliateNetworks.jsx   # Партнерские сети
    │       ├── AffiliateNetworkEditor.jsx # Редактор сети
    │       ├── IntegrationsPage.jsx    # Скрипты интеграции + Telegram Bot 🤖
    │       ├── ConversionsLog.jsx      # Лог конверсий
    │       ├── ConversionTypesSettings.jsx # Настройка типов конверсий
    │       ├── CustomMetricsSettings.jsx   # Кастомные метрики
    │       ├── PostbackSettings.jsx    # Настройки Postback
    │       ├── TrafficSimulation.jsx   # Симуляция трафика
    │       ├── GeoSelector.jsx         # Селектор стран с флагами
    │       ├── GeoProfilesPage.jsx     # Гео-профили
    │       ├── GroupsModal.jsx         # Универсальный модал групп
    │       ├── ProfileSettings.jsx     # 👤 Профиль (язык, часовой пояс)
    │       ├── Login.jsx               # Авторизация
    │       ├── SetupWizard.jsx         # Мастер первичной настройки
    │       ├── UsersPage.jsx           # Управление пользователями
    │       ├── BrandingPage.jsx        # Настройки брендинга и тем
    │       ├── BotSettings.jsx         # Настройки бот-фильтров
    │       ├── PrivacySettings.jsx     # Настройки приватности
    │       ├── GeneralSettings.jsx     # Общие настройки системы
    │       ├── SystemSettings.jsx      # Системные настройки
    │       ├── Settings.jsx            # Расширенные настройки трекера
    │       ├── ArchivePage.jsx         # Архив удалённых элементов
    │       ├── MigrationsPage.jsx      # Миграции БД
    │       ├── UpdatePage.jsx          # Обновление системы
    │       ├── LogsPage.jsx            # Расширенные логи аудита и трафика
    │       ├── AdminPage.jsx           # Страницы администрирования
    │       └── GeoDBPage.jsx           # Управление гео-базами
    ├── index.html
    ├── vite.config.js
    └── package.json

🔌 API Endpoints

Метрики и статистика

  • GET ?action=metrics — агрегированные метрики (клики, конверсии, доход)
  • GET ?action=chart — данные для графика по дням
  • GET ?action=logs — последние клики
  • GET ?action=trends — данные для графиков и таблиц аналитики

Кампании

  • GET ?action=campaigns — список кампаний со статистикой
  • GET ?action=get_campaign&id=X — получение кампании с потоками
  • POST ?action=save_campaign — создание/обновление кампании
  • POST ?action=delete_campaign — удаление кампании
  • GET/POST ?action=campaign_groups — группы кампаний
  • GET ?action=campaign_logs&campaign_id=X — логи кликов кампании
  • POST ?action=clear_campaign_stats — очистка статистики кампании

Офферы

  • GET ?action=offers — список офферов со статистикой
  • GET ?action=all_offers — краткий список активных офферов
  • GET ?action=get_offer&id=X — получение оффера
  • POST ?action=save_offer — создание/обновление оффера
  • POST ?action=delete_offer — удаление оффера

Лендинги

  • GET ?action=landings — список лендингов
  • GET ?action=get_landing&id=X — получение лендинга
  • POST ?action=save_landing — создание/обновление
  • POST ?action=delete_landing — удаление
  • POST ?action=upload_landing — загрузка ZIP архива

Источники трафика

  • GET/POST ?action=traffic_sources — CRUD источников
  • GET ?action=traffic_source_templates — шаблоны (Facebook, Google, TikTok и др.)

Партнерские сети

  • GET/POST ?action=affiliate_networks — CRUD партнерских сетей
  • GET ?action=affiliate_network_templates — шаблоны (Leadbit, M4Leads и др.)

Конверсии

  • GET ?action=conversions — лог конверсий с фильтрами и пагинацией
  • GET ?action=conversion_statuses — список статусов
  • POST ?action=import_conversions — импорт конверсий

Настройки

  • GET ?action=settings — получение настроек
  • POST ?action=save_settings — сохранение настроек
  • GET/POST ?action=profile_settings — настройки профиля пользователя

Гео-профили

  • GET ?action=geo_profiles — список гео-профилей
  • GET ?action=countries_list — список всех стран с кодами

Пользователи и авторизация

  • GET ?action=users — список пользователей
  • POST ?action=save_user — создание/обновление пользователя
  • POST ?action=login — авторизация
  • GET ?action=init_admin — инициализация администратора

Telegram Bot 🤖

  • GET ?action=telegram_settings — статус бота, список чатов
  • POST ?action=save_telegram_settings — сохранение токена, установка webhook
  • POST ?action=telegram_test — отправка тестового сообщения

Архив

  • GET ?action=archive_items — элементы в архиве
  • POST ?action=archive_restore — восстановление из архива
  • POST ?action=archive_purge — окончательное удаление

🎯 Редактор кампаний (CampaignEditor)

Интерфейс (как в Keitaro)

┌─────────────────────────────────────────────────────────┐
│ Header: [Сохранить] [Copy] [Log] [⋮] [X]               │
├──────────────┬──────────────────────────────────────────┤
│ Слева (320px)│ Справа - Потоки                          │
│ ────────────│ ┌─────────────────────────────────────┐  │
│ Основные     │ │ [Перехват] [Обычный] [Замыкающий]  │  │
│ Финансы      │ ├─────────────────────────────────────┤  │
│ Параметры    │ │ Потоки с фильтрами и схемами...    │  │
│ Интеграции   │ └─────────────────────────────────────┘  │
│ S2S Postbacks│                                          │
│ Заметки      │                                          │
└──────────────┴──────────────────────────────────────────┘

Вкладка "Основные"

  • Название кампании
  • Алиас (автогенерация 6 символов)
  • URL кампании (с копированием)
  • Домен, Группа, Источник трафика
  • Код для лендингов (JavaScript)

Вкладка "Финансы"

  • 6 моделей вознаграждения:
    • CPC (Оплата за клик)
    • CPuC (Оплата за уникальный клик)
    • CPM (Оплата за тысячу показов)
    • CPA (Оплата за действие)
    • CPS (Оплата за продажу)
    • RevShare (Процент от дохода)
  • Метод уникальности (IP, IP+UA, Cookies)
  • Срок уникальности (часов)
  • Ротация потоков (по весу / по позиции)

Вкладка "Параметры"

37 параметров для передачи:

  • keyword, cost, currency, external_id
  • creative_id, ad_campaign_id, source
  • sub_id_1 .. sub_id_30

Вкладка "Интеграции"

5 предустановленных интеграций:

  • 📘 Facebook
  • 🎵 TikTok
  • 🔍 Яндекс
  • 🔎 Google Ads
  • 💬 VK Ads

Вкладка "S2S Postbacks"

  • URL для постбеков
  • Метод (GET/POST)
  • Статусы для отправки

Вкладка "Заметки"

  • Текстовое поле для заметок

Кнопка "⋮" (доп. действия)

  • Отчёты по источнику
  • Отчёты по ГЕО
  • Отчёты по потоку
  • Лог конверсий
  • Обновить расходы
  • Симуляция трафика
  • Очистка статистики

📈 TrendsPage (Аналитика)

Метрики

Метрика Цвет на графике
Клики 🔵 Синий
Уник. клики 🟢 Зелёный
Конверсии 🟡 Жёлтый
Доход 🟣 Фиолетовый
Расход 🔴 Красный
Прибыль 🔵 Голубой
CTR 💗 Розовый
CR 🟢 Лаймовый

Группировка

  • По дням
  • По неделям
  • По месяцам
  • По часам
  • По дню недели

Фильтры

  • По всем полям кликов
  • Операторы: содержит, не содержит, равно, не равно, начинается с, заканчивается на

📊 Dashboard (обновлён)

4 секции в сетке 2x2

┌─────────────────────┬─────────────────────┐
│   Кампании (Топ 10) │   Офферы (Топ 10)   │
├─────────────────────┼─────────────────────┤
│  Лендинги (Топ 10)  │ Источники (Топ 10)  │
└─────────────────────┴─────────────────────┘

Каждая таблица показывает: Название, Клики, Уники, Конверсии

🤖 Telegram Bot

Быстрый старт

  1. Создайте бота через @BotFather в Telegram
  2. Откройте Интеграции → Telegram Bot → вставьте токен → Подключить
  3. Отправьте /start боту в Telegram
  4. Готово! Бот активен и начнёт отправлять уведомления.

Команды бота

Команда Описание
/start Приветственное сообщение
/stats Статистика за сегодня
/stats 7d Статистика за 7 дней (также: 1d, 30d, yesterday)
/campaigns Список активных кампаний
/campaign ID Детальная статистика по кампании
/top ТОП-5 кампаний по доходу
/conversions Последние 10 конверсий
/notify on|off Вкл/выкл уведомлений о конверсиях
/daily on|off Вкл/выкл ежедневной сводки
/lang ru|en Смена языка бота
/help Справка по командам

Автоматические уведомления

  • Конверсия: кампания, статус, сумма, валюта, страна (с флагом), время
  • Ежедневная сводка: клики, конверсии, доход/расход/профит + ТОП-3 кампании

🛠 Ручной запуск (Local Development)

Разработка (PHP built-in + Vite)

# Терминал 1: Backend
cd Orbitra
php -S localhost:8080 router.php

# Терминал 2: Frontend
cd Orbitra/frontend
npm install
npm run dev

Продакшн сборка фронтенда

cd Orbitra/frontend
npm run build

🔧 Конфигурация

config.php

$db_file = __DIR__ . '/orbitra_db.sqlite';  // Путь к БД
$postback_key = 'fd12e72';                    // Ключ для постбеков

Первый вход

📝 TODO / Будущие улучшения

  • Рефакторинг CampaignEditor (интерфейс как в Keitaro)
  • TrendsPage с графиками
  • 4 секции на Dashboard
  • 6 моделей вознаграждения
  • 30+ параметров
  • Интеграции (Facebook, TikTok, Яндекс)
  • Автогенерация алиаса
  • Умный Geo Selector с тегами и текстом
  • А/Б тестирование офферов (сплит по весам)
  • Детерминированная маршрутизация и сортировка потоков
  • Продвинутое управление доменами (DNS-чекер, HTTPS, защита от ботов)
  • Мультиязычность (RU/EN) — полная локализация всех компонентов
  • Профиль пользователя (язык, часовой пояс, первый день недели)
  • Telegram Bot интеграция (статистика, уведомления, 10 команд)
  • Архив с мягким удалением и восстановлением
  • Полноценные отчёты по кампаниям
  • Экспорт статистики в CSV
  • Интеграция с гео-базами (MaxMind)

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

  • Backend: PHP 8+ (без фреймворков)
  • Database: SQLite 3
  • Frontend: React 18 + Vite
  • UI: CSS Variables + Custom Design System
  • Icons: Lucide React
  • HTTP Client: Axios
  • i18n: Custom LanguageContext (RU/EN)
  • Bot: Telegram Bot API (webhook)

Создано как учебный и коммерческий проект для арбитражников и вебмастеров по управлению трафиком.

Tags: tracker, affiliate-marketing, keitaro-clone, php-tracker, react-admin, cpa, cpa-network, traffic-management, split-testing

About

Orbitra.link — High-performance, self-hosted traffic tracker for media buyers and SEO. Lightweight, secure, and optimized for Linux. Features advanced GEO-targeting, real-time analytics, and a premium UI with customizable themes. Take full control of your data.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors