Без маркетинга и общих слов: настоящий стек, настоящие решения и настоящие ограничения. Здесь написано, что именно происходит с вашими данными и почему сделано именно так.
Всё остальное на этой странице — следствие вот этих решений.
Серверы физически в РФ. Это не только 152-ФЗ — это ещё и отказ от удобных зарубежных облаков, которые могли бы отключить нас в любой момент.
Нет Google Analytics, нет пикселей, нет сторонних SDK. Мы не строим ваш рекламный профиль, потому что не продаём рекламу — Nexora живёт на подписке.
PHP без фреймворка, JavaScript без сборки. Меньше зависимостей — меньше чужого кода, который может сломаться или утечь вместе с вашими данными.
Ниже есть раздел «Честно об ограничениях». Проект молодой, и делать вид, что у него нет слабых мест, — самый быстрый способ потерять доверие.
Ни Laravel, ни Symfony. Свой маршрутизатор на ~200 строк, контроллеры, вьюшки — и всё. Это осознанный выбор, а не незнание фреймворков: у Nexora один разработчик, и цена обновления мажорной версии фреймворка со всеми его зависимостями здесь выше, чем польза. Каждая строка на сервере написана под задачу и понятна целиком.
Все запросы идут через единый слой DB с подготовленными выражениями и
отключённой эмуляцией. SQL-инъекция через пользовательский ввод невозможна
архитектурно, а не «потому что мы аккуратные».
Нет React, нет Vue, нет сборщика. Страница отдаётся сервером готовой и работает сразу — без ожидания, пока браузер скачает и выполнит мегабайт JavaScript. Тема, анимации и вся интерактивность — на нативных возможностях браузера.
Nexora ставится на телефон как обычное приложение — свой Service Worker и манифест. Без магазинов приложений и их правил.
Полный путь одного запроса — от адресной строки до ответа.
index.php. Прямого
доступа к исходникам, конфигам и загруженным файлам нет — служебные папки
закрыты на уровне веб-сервера.Не «мы заботимся о вашей безопасности», а перечень механизмов, которые работают в коде прямо сейчас.
Хранятся как хеш bcrypt (password_hash). В базе нет ни одного пароля
в читаемом виде — даже владелец проекта не может узнать ваш пароль, только сбросить.
Свой TOTP по RFC 6238 — те же одноразовые коды, что в Google Authenticator и Authy. Реализован на чистом PHP, без внешних сервисов: код проверяется на нашем сервере и никуда не отправляется. Доверенные устройства запоминаются, чтобы не вводить код каждый раз.
Текст переписки шифруется алгоритмом XSalsa20-Poly1305 (libsodium,
crypto_secretbox) — с проверкой целостности, то есть подменить сообщение
незаметно нельзя. Если кто-то получит доступ к дампу базы, он увидит нечитаемый набор
байтов вместо переписки.
Каждое изменяющее действие требует CSRF-токена — чужой сайт не сможет выполнить действие от вашего имени. Вход, регистрация и восстановление пароля ограничены по частоте (rate limiting), поэтому перебор паролей упирается в блокировку, а не в терпение.
Файлы проверяются по типу и размеру, лежат вне исполняемых путей и не могут быть запущены как код. Дампы базы, логи и резервные копии закрыты от скачивания на уровне веб-сервера.
Проще перечислить то, чего в Nexora нет — этот список важнее любых обещаний.
Обычно живые чаты делают на WebSocket — постоянном соединении. Наш хостинг не позволяет держать долгоживущий процесс, поэтому мессенджер устроен иначе: браузер сам спрашивает сервер о новых сообщениях. Но не с фиксированной частотой, а подстраиваясь под происходящее:
Результат: в живом диалоге сообщения приходят почти мгновенно, а простаивающие вкладки дёргают сервер втрое реже, чем при обычном интервале. Тот же приём применён к индикатору «печатает…» — он не спамит сервер на каждую нажатую клавишу.
Ещё один пример решения под ограничения: у нас нет планировщика задач (cron). Поэтому отложенные публикации, поздравления с днём рождения и очистка устаревших данных происходят «попутно» — их досчитывает первый же запрос, который зашёл после нужного момента. Снаружи выглядит как работающий планировщик, внутри — ни одного лишнего процесса.
Аудитория Nexora — с 14 лет, поэтому модерация здесь не формальность.
Бан или мут нельзя выдать «молча»: система требует причину и описание нарушения. Без них действие просто не выполнится.
Заблокированный видит причину и может оспорить решение — с перепиской, а не в пустоту.
Модератор, техадмин и владелец — разные роли с разными возможностями. Выдавать роли может только владелец.
Список запрещённых слов, жалобы на посты и профили, история наказаний по каждому пользователю.
Вокруг Nexora выросло несколько отдельных продуктов — и все они входят по одному аккаунту NEXORA.
Настольный редактор 3D-сцен для macOS. Написан на Swift, собирает игру и публикует её прямо на сайт — она открывается в браузере без установки.
Видеозвонки на отдельном домене. Видео идёт напрямую между участниками (P2P), через наш сервер проходит только служебная информация о соединении.
Настольный лаунчер — только с лицензионным входом, пиратских сборок у нас нет.
Полноценный редактор статей с черновиками, кабинет автора со статистикой и поддержка авторов внутренней валютой.
У Nexora есть собственный сервер авторизации OAuth 2.0 — тот же механизм, по которому вы входите куда-то «через Google». Любое приложение может добавить кнопку «Войти через NEXORA»: пользователь видит экран согласия, сам решает, какие данные отдать, и в любой момент отзывает доступ в настройках.
Именно так работают наши же продукты: Studio публикует игры, а Meet пускает в видеозвонки — оба через этот OAuth, без отдельных паролей. Приложения регистрируются в кабинете разработчика, а данные отдаёт REST API.
Раздел, которого обычно не бывает на таких страницах. Мы считаем, что он важнее всех остальных: если вы знаете слабые места, вы можете принять решение осознанно.
Спрашивайте что угодно о технической стороне — отвечаем без «это коммерческая тайна» там, где это не касается безопасности пользователей.