NENVEST

Stripe payment bot + Telegram-native admin

Підпискова платформа для закритої інвестиційної спільноти Capitalist Invest / Риночок

👤 Solo full-stack🌍 SubTech / Wealth-tech✅ ProductionDemo on request

Контекст

Capitalist Invest / Риночок — закрита інвестиційна спільнота за платну підписку: щоденна аналітика ринків, тижневі research-звіти, 8 тематичних каналів (акції, облігації, волатильність, крипта, макро, commodity, research, портфель), live-чат. 500+ учасників, партнерство з медіа «Останній Капіталіст».

Я побудував дві системи, які працюють разом: Stripe Payment Bot — Telegram-фронтенд для оплати підписок (єдина точка взаємодії з користувачем), і Admin Panel — Telegram-native адмінку для команди (промо, тарифи, бродкасти, міграції).

Моя роль: solo full-stack — від архітектури до прода. Stripe-bot, Telegram-native адмінка, webhook-pipeline, operational dashboard у Google Sheets, Docker-деплой і Cloudflare Tunnels. До цього я керував digital-спільнотою близько 1000 людей — вручну робив розсилки, комунікацію з клієнтами, повторні платежі, додавання і видалення учасників. Ці знання та досвід дозволили мені побудувати комплексну платформу для автоматичного управління учасниками.

Що з цього вийшло

Дві системи, які працюють разом: Stripe-бот для користувачів і адмінка для команди.

// system

Архітектура

01 — user-facing
Stripe Payment Bot
live
Користувач (Telegram)
/subscribe · /cancel · /status
command
Stripe Payment Link
+ metadata: telegram_id, product_id
Webhook Receiver
Flask · :3001 · idempotent (event.json)
Schedulers
warning · delete
Event Transmitter
routing per event type
Bot Notifier
success · failed · expiring
Stripe
DUAL accounts
Google Sheets
state machine
Closed Chat
invite / kick
02 — team-facing
Admin Panel
live
Адмін / команда
whitelist Telegram-ID
inline keyboard
Cloudflare Tunnel
no public IP needed
Admin Bot
Flask · :3003 · 7-step state machine
JSON store
atomic writes
Promo
CRUD
Pricing
change · sync
Mass-sender
filter · test · send
Migration
2-step pipeline
Stripe API
subs · prices
Google Sheets
read-only sync
Bot API
broadcast
production

Технічна інформація

Структура, інфраструктура і процеси розробки.

Stripe-domain depth

Повний lifecycle підписки: Payment Links з metadata-routing, Subscription Schedules для price-migrations без шкоди для активних, webhook idempotency з 30-day TTL event-registry (захист від ретраїв і подвійних нарахувань), failed-payment escalation з retry-логікою.

Reliability & atomicity

Атомарна 3-стадійна обробка webhook-події: підтвердження фіксується ТІЛЬКИ після успіху всіх кроків. Mutex-protected JSON-storage з atomic writes (tempfile → rename) замість окремої БД — обґрунтовано обʼємом команди, працює рік без інцидентів.

Multi-process orchestration

Паралельні async-процеси (бот, webhook receiver, API server, Telegram monitor, warning/delete checkers) під tmux, з окремими логами. Координація через Stripe events + спільний Sheets — без оркестратора типу Celery чи Kubernetes.

CI/CD + observability

GitLab pipelines: lint → tests (Pytest з mock Stripe через recorded fixtures) → build → deploy. Daily log rotation, structured logs per-process. Cloudflare Tunnel для webhook ingress без публічного IP.

Pragmatic architecture

JSON-файли замість БД, Google Sheets замість окремого dashboard, in-memory FSM з atomic snapshots замість Redis. Кожне рішення обґрунтоване розміром команди і обʼємами — overkill'у нема, ремонтопридатність максимальна.

Hot-reload & zero-downtime

Configs (тарифи, whitelist, промо) перечитуються через mtime-tracking — зміна без рестарту бота. Rolling-деплой через Docker: новий контейнер піднімається поряд, трафік перемикається, старий зупиняється — нуль розривів активних оплат.

Технології

Backend / runtime

Python 3.11+Flask 3.1pyTelegramBotAPI 4.27python-telegram-bot 22Telethon 1.24asynciomulti-process orchestration

Payments

Stripe 12.2dual-account orchestrationSubscription SchedulesPayment Linkswebhook idempotency

Persistence / data

JSON files (atomic writes)Google Sheets (gspread 6.2).env confighot-reloadable configs

Інтеграції

Telegram Bot APIStripe APIGoogle Sheets APIEmail (SMTP)

Інфраструктура

DockerCloudflare Tunnelsshell-orchestrationdaily log rotationEurope/Kyiv TZ

Що далі?

Це один з моїх кейсів. Решта зібрана на головній.