ar-webcetera/nervion
ar-webcetera/nervion has 31 GitHub stars and 0 forks. GitHot measured 0 stars in 24 hours and +1 in 7 days. Last checked 2026-11-09 07:38 UTC. Last push 2026-11-02.
Открытый трекер задач и проектов для команд и агентств. Self-hosted, NestJS + Nuxt 3 + PostgreSQL.
Measured star growth
- in 24h
- 0
- in 7 days
- +1
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalНервион
Открытая система управления проектами и задачами для команд и агентств.
Self-hosted или облако. Канбан и задачи, тайм-трекинг и планирование загрузки, чат и звонки, база знаний, встроенная почта, свой git и медиатека живут в одном приложении. Российская замена Jira, YouTrack и зоопарка сервисов.
🚀 Живое демо
Попробуйте Нервион прямо сейчас, без регистрации: открыть демо.
Демо-стенд наполнен реальными примерами: проекты с канбан-досками, задачи по колонкам, тайм-трекинг и отчёты, планирование загрузки, личные и групповые чаты, база знаний, встроенная почта с папками, свой git-репозиторий с ветками и уведомления. Заходите под демо-аккаунтом одним кликом и щёлкайте по разделам.
Что это
Нервион это open-source трекер для команд, которые устали платить за десяток разных сервисов и хотят держать данные у себя. Канбан и задачи, учёт времени, планирование загрузки людей, общение и база знаний работают в одной системе и в одном интерфейсе.
Подходит как полноценное импортозамещение Jira, YouTrack, Trello, Redmine для российских команд: разворачивается на вашем сервере (данные не уходят наружу) или берётся как managed-облако.
Возможности
- 🗂 Задачи и проекты: канбан и список, личные проекты только для создателя, быстрое создание задачи через плюс в колонке, контекстное меню карточек с удалением, флажками и управлением дедлайном, единая лента комментариев и изменений задачи, постоянные коды NRV-ID с копированием по клику и поиском по коду или номеру, приоритеты, сторипоинты, дедлайны, подзадачи, связи между задачами с подтверждением отвязки, упоминания участников проекта, спринты, гибкие фильтры и сохранённые представления.
- ⏱ Тайм-трекинг — таймеры со стартом и паузой, ручной учёт часов, статусы записей, привязка к задачам.
- 📊 Планирование загрузки — недельные аллокации «план/факт» по сотрудникам и проектам: видно, кто чем занят и где перегруз.
- 📈 Отчёты — сводки по времени и задачам в разрезе проектов и людей, выгрузка в XLSX с полным текстом описаний задач (до 32 000 символов на ячейку).
- 💬 Чат и звонки — реалтайм-чаты (личные и групповые, с вложениями и голосовыми), голосовые и видео-комнаты на каждый проект с демонстрацией экрана (WebRTC / mediasoup). Скорость голосовых сообщений общая для всех плееров в чатах и редакторе, сохраняется в браузере после перезапуска приложения.
- 📚 База знаний (вики) — дерево страниц с бесконечной вложенностью, богатый редактор (TipTap): заголовки, списки, таблицы, цитаты, блоки кода, картинки, чек-листы.
- 📨 Встроенная почта — приём и отправка писем, несколько изолированных ящиков, пользовательские папки и спам-фильтры, повторная отправка недоставленных писем, статусы открытия/bounce/жалоб через Postbox, привязка писем к задачам через адреса вида task+ID@.
- 🌿 Свой git-хостинг — репозитории внутри трекера: ветки, коммиты, диффы, дерево файлов и просмотр кода, привязка к проектам.
- 🎬 Медиатека — командные видео и фото для проектов.
- 🔔 Уведомления — web-push, оповещения об упоминаниях, назначениях и дедлайнах.
- 🛡 Контроль и надёжность — роли и права доступа, журнал аудита действий, health-чеки и мониторинг внешних сервисов.
- 📘 Документированный API — полное описание OpenAPI / Swagger из коробки (
/api/docs). - 🏠 Self-hosted и облако — полный контроль над данными на своём сервере или managed-вариант под ключ.
CRM
Внешние интеграции могут создавать и изменять сделки, компании и контакты через API с токеном администратора, без браузерной сессии. Методы, авторизация и примеры запросов. Контакты клиентов не получают учётные записи трекера.
Раздел /crm доступен администраторам и открывает единый канбан сделок. Вкладки «Компании» и «Контакты» содержат справочники. У сделок нет табличного представления; на телефоне используется горизонтальная прокрутка колонок и полноэкранная карточка.
Карточка сделки содержит сумму, этап, клиента, контакты, ответственного, источник, описание, комментарии и историю. Следующее действие вычисляется по ближайшей незавершённой коммерческой задаче со сроком. Это та же задача, что отображается в трекере; фильтр «Направление» переключает продажи и производство. Коммерческие задачи доступны только администраторам и не поддерживают биллинг, таймлог или повторения. Производственную задачу можно связать со сделкой без раскрытия коммерческих данных сотрудникам.
Проигрыш требует причину. Успешную сделку можно связать с существующим проектом или создать новый с описанием и бюджетом. Повторный запрос создания возвращает уже связанный проект. Суммы воронки не считаются фактической выручкой. Платежи, подробная аналитика, почтовые интеграции и редактирование воронок в первую версию не входят.
Миграция 1790500000000-add-crm создаёт CRM и этапы, добавляет задачам направление и связь со сделкой, сохраняет существующие задачи производственными и расширяет бюджет проектов до numeric(12,2). Обычный механизм миграций backend применяет её при запуске. Доступ к CRM и коммерческим событиям проверяется на сервере. Файлы с префиксом crm/ имеют private ACL и открываются через /api/files/raw после авторизации администратора; политика бакета не должна предоставлять публичное чтение этого префикса.
Интеграционные проверки запускаются с CRM_TEST_DATABASE_URL, указывающим только на отдельную тестовую PostgreSQL-базу с crm_test в имени: pnpm --filter backend exec jest --runInBand crm.integration.spec. Проверки применяют миграции и создают тестовые данные. Без этой переменной набор пропускается.
Скриншоты интерфейса
| Канбан-доска | Карточка задачи |
|---|---|
![]() |
![]() |
| Планирование загрузки | Графики работы |
|---|---|
![]() |
![]() |
| Чат | База знаний |
|---|---|
![]() |
![]() |
| Встроенная почта | Свой git-хостинг |
|---|---|
![]() |
![]() |
| Мониторинг сервисов | Журнал изменений |
|---|---|
![]() |
![]() |
Кому подходит
- Студиям и агентствам — проекты клиентов, загрузка команды, учёт часов и рентабельность, общение по проекту в одном месте.
- Продуктовым командам — канбан и спринты, база знаний, обсуждения и созвоны без переключения между сервисами.
- Распределённым командам — реалтайм-чаты и голосовые комнаты на проект с демонстрацией экрана, push-уведомления, всё с минимальной задержкой.
- Компаниям с требованиями к данным — self-hosted на своём сервере, данные не покидают периметр.
Почему Нервион
- Один инструмент вместо десятка. Задачи, время, планирование, чат, звонки, вики, почта и git не размазаны по внешним сервисам, а живут вместе.
- Данные у вас. Self-hosted разворачивается на вашем железе. Никакой привязки к чужому облаку.
- Импортозамещение. Рабочая российская замена Jira, YouTrack, Trello, Confluence без валютных платежей и риска отключения.
- Без лимита пользователей на self-hosted: open-source под AGPLv3 бесплатна для любой команды.
- Открытый код. Можно аудировать, дорабатывать под себя и контрибьютить.
Настройка этапов задач
Администратор открывает шестерёнку рядом с переключателем "Канбан / Неделя / Список" и выбирает "Настроить воронку". В меню с тремя точками пункт "Добавить этап после" создаёт этап сразу после выбранной колонки. В этом режиме доступны переименование нажатием на название и перетаскивание за ручку в заголовке. Плейсхолдер показывает место вставки, у края доска прокручивается автоматически. Перемещение влево или вправо и удаление доступны через меню с тремя точками. Для перемещения с клавиатуры используйте клавиши влево и вправо на ручке колонки. Изменения остаются черновиком до нажатия "Готово". Эта кнопка сохраняет этапы, порядок и перенос задач одной транзакцией для всей команды. "Отменить" полностью сбрасывает черновик. Во время настройки вместо переключателя видов отображаются только "Отменить" и "Готово". После выхода переключатель возвращается. Уход со страницы отменяет несохранённые изменения. При одновременном изменении этапов другим пользователем сохранение отклоняется, чтобы не затереть его правки.
"Открыто", "Выполняется" и "Закрыто" нельзя удалить или переименовать. Остальные этапы можно удалить с подтверждением. Если в этапе есть задачи, нужно выбрать этап для переноса. Переносятся все производственные задачи, включая скрытые фильтрами; перенос и удаление выполняются одной транзакцией. Закрытие при переносе учитывается в датах закрытия и фиксированной выручке. Коммерческие задачи сохраняют свою отдельную фиксированную воронку.
Миграция 1792627200000-add-editable-task-stages сохраняет существующие этапы,
переводит статус задачи в строковый ключ и добавляет справочник этапов.
Пользовательские этапы доступны в фильтрах, карточках и формах создания задач.
Технологии
Монорепозиторий на pnpm + turbo.
- Backend: NestJS, TypeORM, PostgreSQL, WebRTC (mediasoup), WebSockets.
- Frontend: Nuxt 3 (Vue 3), Pinia, TipTap, SCSS.
- Инфраструктура: Docker / Docker Compose, S3-совместимое хранилище, OpenAPI / Swagger.
Быстрый старт (Docker)
Полный комплект (PostgreSQL + API + веб-приложение) одной командой:
cp apps/backend/.env.example apps/backend/.env # работает из коробки, секреты заполнять не обязательно
docker compose up --build
Откройте http://localhost:3000 — фронтенд, API на http://localhost:3026, документация API на http://localhost:3026/api/docs. Чистая БД создаётся штатной initial migration, последующие миграции накатываются при старте. Секрет подписи токенов генерируется сам, отдельно настраивать его не нужно.
Запуск без Docker
pnpm i
cp apps/backend/.env.example apps/backend/.env
cp apps/frontend/.env.example apps/frontend/.env
# заполнить .env, поднять PostgreSQL, затем:
pnpm --filter backend dev
pnpm --filter frontend dev
Для production без Docker собирайте приложения и запускайте
apps/backend/dist/main.js и apps/frontend/.output/server/index.mjs. Nuxt SSR
может обращаться к локальному backend через
NUXT_API_INTERNAL_URL=http://127.0.0.1:3026, а браузер — через публичный
NUXT_PUBLIC_API_URL. Backend также нужен исполняемый mediasoup-worker,
указанный абсолютным путём в MEDIASOUP_WORKER_BIN.
Подробнее — в docs/development.md.
Docker-сборка frontend устанавливает зависимости с --frozen-lockfile и
использует apps/frontend/pnpm-lock.yaml вместе с настройками .npmrc.
При изменении зависимостей обновляйте и коммитьте соответствующий lockfile.
API и документация
Весь API описан через OpenAPI / Swagger. После запуска интерактивная документация доступна по адресу /api/docs (например http://localhost:3026/api/docs), машинное описание — /api/docs-json. Авторизация поддерживается как по cookie-сессии, так и по API-токену для внешних интеграций.
Структура
apps/backend— API (NestJS + TypeORM, PostgreSQL)apps/frontend— веб-приложение (Nuxt 3 / Vue)packages/contracts— общие типы и контракты backend ↔ frontend
Конфигурация
Вся конфигурация через переменные окружения, у каждого приложения свой файл с документированным образцом:
- backend:
apps/backend/.env.example— БД, S3, почта и прочее - frontend:
apps/frontend/.env.example— публичные настройки (URL API, S3-endpoint)
Секреты (помечены [secret]) не коммитятся: реальные .env в .gitignore, в репозитории только .env.example.
Push-уведомления на Android
Установка иконки на рабочий стол сама по себе не включает уведомления. Откройте приложение по HTTPS, войдите в аккаунт и нажмите "Разрешить" в баннере. Подключение подтверждается сообщением "Уведомления включены" только после сохранения подписки на сервере. При сбое можно повторить попытку; "Не сейчас" скрывает баннер на сутки. При разрешённых уведомлениях приложение автоматически повторяет подключение и перепроверяет подписку каждые пять минут во время работы.
На backend должны быть заданы VAPID_PUBLIC_KEY и VAPID_PRIVATE_KEY одной
пары. Сохраняйте их между перезапусками и обновлениями. Публичный ключ доступен
через /api/push/vapid-public-key, обработчик уведомлений через /sw.js.
Смена пары ключей требует повторного открытия приложения пользователями.
В профиле галочка "Push-уведомления" управляет подпиской текущего устройства. Отключение
сохраняется в этом браузере, блокирует автоподключение и синхронизируется между
вкладками. При запрете браузера попытка включения показывает тост с инструкцией по разрешениям.
"Проверить уведомления" отправляет push через backend только на текущую
подписку авторизованного пользователя (POST /api/push/test). Успешный ответ
означает принятие сообщения push-сервисом, а не подтверждённый показ на телефоне.
Результат теста и ошибки показываются тостами; истёкшая подписка удаляется.
Для проверки сверните установленное приложение и отправьте ему сообщение из
другого аккаунта. Если уведомления заблокированы, разрешите их в настройках
сайта в браузере и в настройках уведомлений Android для браузера или приложения.
Если подписка подключена, но доставки нет, проверьте ошибки Push failed в
логах backend и доступность push-сервиса из сети сервера и телефона.
При настроенном NUXT_PUBLIC_SENTRY_DSN ошибки подключения, отключения и теста
попадают в GlitchTip. Фильтр: feature:web_push; тег push_stage показывает
этап сбоя, error_name тип ошибки, http_status код ответа (0, если ответа нет).
Контекст push содержит разрешение браузера, наличие сети, режим PWA и контроль
Service Worker. Endpoint, ключи подписки, исходный текст ошибки и breadcrumbs
не передаются. Одинаковый сбой отправляется не чаще раза в пять минут в одной
вкладке. Отказ пользователя в разрешении не считается ошибкой.
Для диагностики повторите действие после обновления приложения и найдите событие
по времени. Отправка требует доступного GlitchTip; блокировщик может её остановить.
Уведомления разработчикам настраиваются правилами оповещений проекта GlitchTip.
Проверка восстановления подписок: node --experimental-strip-types --test apps/frontend/tests/push-subscription.test.mjs (Node.js 22.6+).
Проверка управления из профиля: node apps/frontend/tests/push-store.test.mjs.
Контроль почтовых событий
При настроенных SENTRY_DSN (GlitchTip/Sentry) и POSTBOX_CONFIGURATION_SET backend каждые 5 минут
проверяет отправленные через Postbox письма за последние 24 часа. Если для письма старше 15 минут
нет ни одного события, отправляется ошибка mail-delivery-events-missing. Повтор — не чаще раза
в час на процесс; без исходящих писем тревоги нет. Отсутствие открытия само по себе не считается
сбоем. Отдельная ошибка mail-delivery-monitor-failed сообщает о невозможности выполнить проверку.
В события не включаются адреса, текст писем или данные подключения. Доставка уведомлений пользователям
зависит от правил оповещений проекта GlitchTip. Проверка работает, пока запущен backend, и не заменяет
внешний мониторинг доступности приложения или облачных ресурсов в периоды без отправок.
Дорожная карта
Проект активно развивается. В планах: расширение интеграций, мобильные клиенты, гибкие автоматизации и шаблоны процессов. Предложения и голосование за фичи — через issues.
Внедрение под ключ
Не хотите разворачивать и поддерживать сами? Команда Webcetera поставит и настроит Нервион на вашем сервере, перенесёт данные из Jira или другого трекера, сделает интеграции и возьмёт сопровождение (или managed-облако).
- Сайт: https://webcetera.ru
- Telegram: https://t.me/webcetera
- Почта: [email protected] · по лицензии: [email protected]
- Телефон: +7 999 194-81-21
Лицензия
Open-core: исходный код под AGPLv3 (LICENSE). Доступна отдельная коммерческая лицензия для закрытых продуктов и SaaS без copyleft-обязательств — см. LICENSING.md.
Контрибьюторам
Конвенции и архитектурные правила — в AGENTS.md. Вклад принимается на условиях CLA.md (подписывается в один клик при первом PR). Баг-репорты и идеи — в issues.
FAQ
Это правда бесплатно? Да, self-hosted-версия под AGPLv3 бесплатна и без лимита на число пользователей. Платная только опциональная коммерческая лицензия (для закрытых продуктов) и внедрение под ключ.
Можно держать данные только у себя? Да, это основной сценарий: разворачиваете на своём сервере, данные не уходят наружу.
Это замена Jira? Да, Нервион закрывает типовые сценарии Jira, YouTrack, Trello и Confluence в одном приложении, плюс чат, звонки, почту и git.
Какая нужна инфраструктура? Docker и PostgreSQL. Для голосовых и видео-комнат используется WebRTC (mediasoup), для файлов и медиа — S3-совместимое хранилище.
Есть API? Да, полностью документированный REST API с OpenAPI / Swagger и поддержкой API-токенов.
Explore related projects
awesome-selfhosted/awesome-selfhosted
A list of Free Software network services and web applications which can be hosted on your own servers
335,547 starsimmich-app/immich
High performance self-hosted photo and video management solution.
118,645 starsStirling-Tools/Stirling-PDF
#1 PDF Application on GitHub that lets you edit PDFs on any device anywhere
96,149 starslouislam/uptime-kuma
A fancy self-hosted monitoring tool
93,425 stars








