Бот і Mini App
VPN subscriptions
Про проєкт
Цей проєкт поєднує Telegram-бота, Mini App для клієнтів та адмін-панель Django. Клієнт вибирає VPN-тариф, перевіряє доступ і керує продовженням в одному акаунті. Бот відкриває сервіс, а Mini App дає зручний інтерфейс особистого кабінету.
Тариф визначає регіон, строк і кількість пристроїв. Я пов’язав клієнтський інтерфейс із замовленнями, підписками й автоматичним підключенням VPN. В акаунті видно реальний строк доступу й статус підписки, а не лише запис про покупку.
Як це працює
Вибрати тариф
Отримати доступ до VPN
Керувати підпискою
Клієнт вибирає тариф, потім бачить в акаунті регіон, ліміт пристроїв, дату завершення й налаштування продовження. Замовлення може створити нову підписку або продовжити наявну. Замовлення й підписки зберігаються окремо, щоб покупка та пов’язаний із нею доступ враховувалися правильно.
Бекенд створює й синхронізує доступ до VPN. Він фіксує очікування підключення, активний доступ та помилки, що потребують уваги. Оператор керує клієнтами, тарифами й підписками в адмін-панелі Django. Дати й статуси в ній збігаються з даними клієнтського акаунта.
Що було складніше
Найскладніше було узгодити оплату, підписку й доступ до VPN. Оплачене замовлення може ще чекати підключення. Підписка може завершитися чи продовжитися, поки VPN-акаунт на віддаленому сервері має інший статус. Інтерфейс має правильно показувати кожну із цих ситуацій.
Продовження також потребує уваги: нове замовлення може збільшити строк наявної підписки, а не створити ще один акаунт. Потрібно було пов’язати дати, підключення й помилки синхронізації, щоб клієнт і оператор бачили стан сервісу.
Що було простіше
Коли модель підписки була визначена, картки тарифів та елементи акаунта було простіше зібрати. Регіон, строк, кількість пристроїв і налаштування продовження мають своє місце в інтерфейсі.
Редагування клієнтів і тарифів у Django також спирається на ці записи. Складна логіка міститься в підключенні та зміні підписок, а окремі поля й картки показують її результат.
Що вдалося добре
Клієнт бачить тариф, строк доступу й налаштування продовження в одному місці. Не потрібно відновлювати інформацію про підписку зі старих повідомлень бота.
Розділення замовлень і підписок допомагає підтримці. Оператор бачить, що придбано, який доступ активний і чи потребує підключення уваги. Це дає потрібний контекст, коли клієнт звертається по допомогу.
