Нормисы
Некоммерческая платформа «для своих» — закрытое сообщество по приглашениям, псевдонимная идентификация, приватность по умолчанию. Без рекламы, слежки и пустых обещаний. Ради развития людей и кода, а не прибыли.
Открытый код · лицензия Apache-2.0 · self-host · построено в паре человек + ИИ (Claude Code). Прозрачность и философия — на странице «О проекте» (/about) запущенного приложения.
Код живёт на пяти площадках — в разных руках и юрисдикциях, чтобы проект не зависел от доступности одного сервиса: GitHub · Codeberg · SourceHut · GitFlic · GitVerse.
Все пять обновляются на каждый коммит, ветка везде main — клонировать и форкать можно с любой. Если какое-то зеркало временно отстало, значит хостинг был недоступен в момент пуша и догоняется позже. Разработка идёт на GitHub — правки и вопросы удобнее туда.
Что это простыми словами
Платформа, куда попадают по приглашению от уже существующего участника. Каждый — под псевдонимом (никаких настоящих имён, телефонов, паспортов). Готов личный кабинет: регистрация по коду, вход, профиль с аватаром, приглашения и дерево поддерева, баны (модерация своего поддерева), сессии/устройства, восстановление доступа по секретным вопросам, настройки, главный экран со статистикой. Дальше — разделы (трекер целей/привычек, протокол навыков, мессенджеры) и нативные приложения.
Принципы
- 🔒 Без персональных данных — логин + псевдоним + пароль (хеш). ПДн не собираем (152-ФЗ).
- 🚫 Без рекламы и трекинга — только технические cookie.
- 🌳 Сообщество-дерево — пригласивший отвечает за своё поддерево (может банить в нём).
- 🧩 Слоистая архитектура — бизнес-логику можно сохранить при смене БД/ORM.
- 🛠 Self-hosted — разворачивается у себя одной командой, без облачных зависимостей.
- 🤝 Честно, без гарантий — некоммерческий проект; данные не гарантируем, можем выключиться.
🧱 Стек
| Слой | Технологии |
|---|---|
| Frontend | Angular (standalone, Signals, чистый SCSS — без Tailwind), SPA |
| Backend | NestJS (5-слойная архитектура: controllers → use-cases → domain → adapters → repositories) |
| БД / ORM | PostgreSQL + Drizzle (явные миграции, без auto-push в проде) |
| Инфра | Docker (dev=prod), Traefik + Let’s Encrypt (авто-TLS) |
Почему именно так — с обоснованием по каждой технологии — на странице /about.
🚀 Быстрый старт (локально)
Нужен Docker. Из корня репозитория:
make dev-rebuild # postgres + pgadmin + nest + angular (watch-режим)
make db-migrate # накатить миграции Drizzle
Фронт — http://localhost:4200, API — http://localhost:3000/api/v1, pgAdmin — :8081. Подробнее: docs/getting-started.md. Прод-деплой (Traefik + Let’s Encrypt): docs/deployment.md.
📚 Где что лежит
| Путь | Что это |
|---|---|
nest/ · angular/ |
Бэкенд и фронтенд |
docs/ |
Техническая документация (архитектура, домен, БД, API-контракты) |
docs/decisions/ |
Журнал архитектурных решений (ADR) |
docs/api-contracts.md |
REST-контракты |
docs/impl-phase1-plan.md |
План фазы 1 по подэтапам (что сделано / дальше) |
CLAUDE.md |
Правила и конвенции проекта (для людей и ИИ) |
CONTRIBUTING.md |
Как развернуть и контрибьютить |
🤖 Прозрачность об ИИ
Код пишется человеком вместе с Claude Code (модели Claude Opus 4.x): ИИ кладёт реализацию по слоям и гоняет живые проверки, человек принимает решения, ловит баги и держит направление. Каждое значимое решение фиксируется отдельной записью ADR.
📄 Лицензия
Apache-2.0 с указанием первичных авторов (NOTICE). Вы вправе развернуть «Нормисы» у себя, форкнуть и контрибьютить — см. CONTRIBUTING.md.
Дорожная карта
Платформа развивается по фазам: ЛК → Акцент → НоваСкил → … → мессенджеры → нативные приложения. Порядок и состав фаз — Technical-assignment.md; прогресс по факту — в трекере фазы (docs/impl-phaseN-plan.md).