Бот і Mini App

VPN subscriptions

Про проєкт

Цей проєкт поєднує Telegram-бота, Mini App для клієнтів та адмін-панель Django. Клієнт вибирає VPN-тариф, перевіряє доступ і керує продовженням в одному акаунті. Бот відкриває сервіс, а Mini App дає зручний інтерфейс особистого кабінету.

Тариф визначає регіон, строк і кількість пристроїв. Я пов’язав клієнтський інтерфейс із замовленнями, підписками й автоматичним підключенням VPN. В акаунті видно реальний строк доступу й статус підписки, а не лише запис про покупку.

Як це працює

  1. Вибрати тариф

  2. Отримати доступ до VPN

  3. Керувати підпискою

Клієнт вибирає тариф, потім бачить в акаунті регіон, ліміт пристроїв, дату завершення й налаштування продовження. Замовлення може створити нову підписку або продовжити наявну. Замовлення й підписки зберігаються окремо, щоб покупка та пов’язаний із нею доступ враховувалися правильно.

Бекенд створює й синхронізує доступ до VPN. Він фіксує очікування підключення, активний доступ та помилки, що потребують уваги. Оператор керує клієнтами, тарифами й підписками в адмін-панелі Django. Дати й статуси в ній збігаються з даними клієнтського акаунта.

Що було складніше

Найскладніше було узгодити оплату, підписку й доступ до VPN. Оплачене замовлення може ще чекати підключення. Підписка може завершитися чи продовжитися, поки VPN-акаунт на віддаленому сервері має інший статус. Інтерфейс має правильно показувати кожну із цих ситуацій.

Продовження також потребує уваги: нове замовлення може збільшити строк наявної підписки, а не створити ще один акаунт. Потрібно було пов’язати дати, підключення й помилки синхронізації, щоб клієнт і оператор бачили стан сервісу.

Що було простіше

Коли модель підписки була визначена, картки тарифів та елементи акаунта було простіше зібрати. Регіон, строк, кількість пристроїв і налаштування продовження мають своє місце в інтерфейсі.

Редагування клієнтів і тарифів у Django також спирається на ці записи. Складна логіка міститься в підключенні та зміні підписок, а окремі поля й картки показують її результат.

Що вдалося добре

Клієнт бачить тариф, строк доступу й налаштування продовження в одному місці. Не потрібно відновлювати інформацію про підписку зі старих повідомлень бота.

Розділення замовлень і підписок допомагає підтримці. Оператор бачить, що придбано, який доступ активний і чи потребує підключення уваги. Це дає потрібний контекст, коли клієнт звертається по допомогу.