# Общее Сервис продажи VPN. Ключи для приложений Happ (vless, histeria) и Wiregueard/Amnezia WG. # Своими словами Есть 2 сайта. Один - продаёт Dedicated VPN, где каждому пользователю даётся свой IP. Второй - более классический вариант, где на 1 IP множество пользователей. Фундаментально они работают одинаково, это привязанные к пользователю ключи. Ключи уже открывают доступ либо к dedicated либо mass. Скрипты - которыми обрабатывается оба сайта - общие. Поэтому это одна база, один бэк, но разные домены. Отличаться они будут по доменам. Дизайн отличается по цветам, но в общей концепции, но дизайны всё таки разные, тк по разному представлены данные и делать именно общий смысла нет. - Фиолетовый - это dedicated. - Зелёный - mass. - Дизайн сделал в Claude Design лежит в файле VEILIX-handoff.zip. Сайт x2 Личный кабинет x2 Личный кабинет в Telegram (MiniApp) x2 Бот в TG x2 veilix.app - dedicated veilixvpn.com - mass my.veilix.app - личный кабинет dedicated my.veilixvpn.com - личный кабинет mass tg.veilix.app - tg miniapp dedicated tg.veilixvpn.com - tg miniapp mass Сайты многоязычные. Боты чтобы и миниапп были или в самом tg можно было командами всё делать. # Стэк - CMS Payload - Next - React - SSR - Postgres Вопрос. Payload через докер ставится? Нужно чтобы он с базой и nginx которые на хосте работал, чтобы не ставить базу в докер. Это нормально или лучше чтобы база в докере тоже была? # Сущности - Сайты - Домены - Языки - Страны - Пользователи - Тарифы - Ключи - Подключения - Заказы - Транзации счёта пользователя # Сайты и Домены Каждая из сущностей привязывается к Сайту. Языки привязываются к Домену, Домены привязываются к сайтам. Вопрос. В Payload связка сайты/языки может какой то нативный мехнизм есть? И в целом где-то переводы всего в базе тоже нужно иметь на разных языках или это есть тоже нативное? # Языки По умолчанию язык EN без постфикса в URL, остальные языки с postfix /de /es /jp /ru Английский, немецкий, французский, испанский, португальский, японский и дальше RU. Язык именно через URL везде проводить, те запомнить выбор можно в настройках пользователя или куки или localstorage, но в URL показывать именно с постфиксом. Определять по MAXMIND LITE в Nginx. # Telegram боты Команды в ботах через n8n, чтобы можно было править логику ответов. Вопрос. n8n для этого подходит или есть другие варианты? Miniapp я думаю имеет смысл напрямую делать без n8n? # Авторизация и регистрация По email по коду без паролей. Одно поле email, проверять есть или нет. Либо регистрировать либо авторизовывать. Защить Google Captcha. Отправка будет через локально установленный listmonk. # Оплата, заказы, транзации У пользователя есть счёт. Его можно пополнить криптой и картой, может ещё как то в итоге. Привязка карты к счёту и рекурентная оплата в зависимости от суммы всех ключей. Если положить на счёт деньги заранее, то ежемесячно списывается только сумма за вычетом того что есть на счёте. Понять как лучше сделать в плане связки Заказы и Транзакции. Оплачивает клиент Заказ, к заказу справочно привязывается Тариф и Ключ и Пользователь. Юкасса Страйп (демо режимы пока) Вопрос. Заказы и Транзакции - не понятно, может одной сущности достаточно. Нужна возможность делать оплату вручную, те то что генерируется при оплате с карточки или при рекурентном списании, чтобы любые из этих действий я мог добавить в админке payload и иницировались остальные действия, пользователь получил ключ или начисления на счёт и тп. Может по какой то галочке - "Провести как реальную оплату", тогда это будет не просто запись в коллекции, а произойдёт весь набор действий, который при реальной оплате. # Ключи VPN Страны привязыны к Тарифам. Тэги привязаны к Тарифам. Страны, чтобы на сайте отображать и возможно для получения с бэка в дальнейшем ключей. Тэги, нужно будут для получения с бэка ключей для фильтраций каких-то произвольных. Пользователь выбирает Тариф, на основе Тарифа ему подбирается свободный сервер и с бэка прилетают Подключения для ключа. Подключения могут быть вручную добавлены, ссылка на подписку для happ, и ключ для wg. Срок истечения у Ключа. Те следующий заказ продлевает этот же ключ. К Ключу тоже привязывается Тариф, чтобы при достижении срока оплата списалась. # ID и UUID Не должно быть явных ID нигде, которые идут подряд, чтобы не было понятно, сколько и чего есть в базе. Нужно использовать UUID, в тч при работе с API, чтобы и в консоли браузера нельзя было увидеть реальные ID. Если payload предполагает автоикремент ID обычный, возможно не стоит городить кастом, и пусть так будет. Но нужно тогда всё равно всё обыграть все обращения по UUID. Вопрос. Обсудить. # Дополнительный софт На этом же vps: - N8N - для TG бота - Listmonk - отправка транзакционных писем На отдельном vps: - Chatwoot - чат на сайте - 12CRM - лиды собирать # Этапы Составить всю .md документацию и план. Далее, чтобы я мог запускать по этапам в отдельных сессиях. В первую очередь собрать полноценный сайт с дизайном, всем функционалом (регистрация, авторизация, реферальная программа). Без эквайринга и ключей по внешним api. При этом чтобы вручную я мог и добавить ключи и оплаты. Далее интеграция с chatwoot, 12crm. Далее listmonk. Далее TG боты. Далее эквайринг и ключи. Но ключи автоматизация пока с вопросами, это нужно оставить обсуждение к моменту запуска этапа. Эквайринг тестовый режим страйпа и юкассы, я зарегистриуюсь, если они дают песочницу, то сначала так. # Общее - Отраслевые стандарты. Стараться придерживаться отраслевых стандартов и использовать максимально современные решения. Если я предлагаю решения, которые плохо связываются друг с другом или кастом, который может решается иными методами, то обсудить со мной. Я могу не знать, но с другой стороны может быть что нужно и делать кастом, в любом случае это повод для обсуждения. - Нумерация пунктов в документации и чатаха с тобой - цифрами и латинскими буквами, чтобы не было путаницы, где А русская, где анлийская, гда B - толи БЭ латинская, толи ВЭ русская. - Не писать никаких скриптов пока не будет всё утверждено, сначала обсуждаем. - Если есть противоречия на любом этапе, сначала обсуждаем, потом делаем. - Софт, который не достаёт и требуется установки от root - говоришь, я сделаю. Не нужно пытаться какие то обходные пути делать внутри пользователя, чтобы меня не беспокоить. Что нужно и правильно установить глобально на сервере - я установлю. - Настройки на сервере - также как и софт, что правильнее сделать глобально, делаю глобально я. - Доступ к root у меня есть, я в этом разбираюсь, нет никаких проблем и софт и настройки сделать.