Технология | Назначение |
NestJS 10 | Modular REST API, 15 feature modules |
Prisma 5 | Type-safe ORM, 19 моделей, миграции |
PostgreSQL 16 + PostGIS | Основная БД, гео-индексы для поиска по координатам |
Redis 7 (ioredis) | Кэш поиска (5 мин TTL), счётчик активных просмотров (SADD/SCARD) |
Elasticsearch 8 | Полнотекстовый поиск с русским анализатором |
YooKassa SDK | Платежи, возвраты, холдирование депозитов |
Socket.io | Realtime-чат между пользователями |
@nestjs/schedule | Cron: auto-cancel pending bookings (15 мин), auto-complete + capture deposit (1 ч), price-drop alerts (6 ч) |
Firebase Admin SDK | Push-уведомления (FCM) |
SMSC.ru | OTP по SMS для аутентификации |
nodemailer | Email-уведомления (booking events, price drops) |
AWS S3 SDK | Загрузка медиа (MinIO локально, Yandex Cloud в проде) |
bcrypt | Хэширование паролей и checkout-кодов |
AES-256 | Шифрование паспортных данных (KYC) |
Технология | Назначение |
Next.js 14 (App Router) | SSR + Client Components, dynamic metadata, sitemap |
TanStack Query | Серверный стейт, кэширование, оптимистичные обновления |
Zustand | Клиентский стейт (auth, wishlist) |
Tailwind CSS | Дизайн-система с custom brand palette |
react-hook-form + zod | Формы с валидацией |
react-map-gl + Mapbox GL | Интерактивная карта с маркерами цен, split-view |
Socket.io Client | Realtime-чат |
axios | HTTP-клиент с interceptors (refresh-token) |
lucide-react | Иконки |
Canvas API | Клиентское сжатие изображений (1600px, JPEG 0.82) перед upload |
Технология | Назначение |
Expo 51 (React Native) | Кроссплатформа iOS + Android |
Expo Router | File-based навигация, tabs |
expo-camera | Check-in / check-out фотографии |
expo-image-picker | Загрузка фото в листинги |
expo-notifications | Push-уведомления |
@shopify/flash-list | Производительные списки 1000+ элементов |
react-native-reanimated | 60fps анимации |
react-native-maps | Карта в поиске |
Package | Назначение |
@rigs/types | Shared TS типы (User, Listing, Booking, enums, DTO) |
@rigs/utils | calcSubtotal, calcBookingTotal, formatPrice, formatDate, plural, slugify |
@rigs/config | Базовые tsconfig для всех приложений |
Технология | Назначение |
Turborepo | Параллельные сборки + кэш |
pnpm workspaces | Управление зависимостями monorepo |
Docker Compose | Локальное окружение (Postgres + Redis + Elasticsearch + MinIO) |
Jest | Unit-тесты бэка и фронта |
Метрика | Значение |
Строк TypeScript | ~26,500 |
API эндпоинтов | 84 |
Таблиц в БД | 19 |
NestJS модулей | 15 |
Web страниц | 33 |
Mobile экранов | 18 |
Cron-задач | 4 |
Миграций | 5 |
# | Модель | Доля |
M1 | Комиссия с транзакций (8% арендатор + 3% хост) | ~70% |
M2 | Продвижение листингов (299 / 490 / 890 ₽) | ~10% |
M3 | Подписки хостов (Pro 1490 ₽ / Business 3990 ₽) | ~8% |
M4 | Страховка через партнёра (4% от чека) | ~5% |
M5 | Бейдж «Проверено Rigs» (1990 ₽/год) | ~2% |
M6 | Платформенная доставка (15% комиссия) | ~3% |
M7 | Программа лояльности Rigspoints | retention |
M8 | B2B-события и корпоративные клиенты | ~2% |
Файл | Содержимое |
14 сегментов, 70+ категорий, 300+ позиций снаряжения | |
Монетизация, комиссии, страховка, юнит-экономика | |
Стек, БД, API-эндпоинты, экраны приложения |
Пакет | Было | Стало |
expo | ~51.0.0 | ~54.0.0 |
expo-router | ~3.5.0 | ~6.0.23 |
react | 18.2.0 | 19.1.0 |
react-native | 0.74.0 | 0.81.5 |
react-native-reanimated | ~3.10.0 | ~4.1.7 |
react-native-safe-area-context | 4.10.0 | 5.6.2 |
@shopify/flash-list | 1.6.4 | 2.0.2 |
expo-notifications | ~0.28.0 | ~0.32.17 |
expo-splash-screen | ~0.27.0 | ~31.0.13 |
Изменение | Файл |
Добавлен helmet — HTTP security headers для всех ответов | apps/api/src/main.ts |
Socket.io CORS: origin: '*' → whitelist из WEB_URL | apps/api/src/modules/chat/chat.gateway.ts |
CORS для REST API теперь поддерживает несколько origins через запятую | apps/api/src/main.ts |
Изменение | Файл |
HttpLoggerMiddleware — логирует каждый HTTP запрос: метод / путь / статус / время | apps/api/src/common/middleware/http-logger.middleware.ts |
PrismaService — логирование slow/error queries, сообщение об успешном коннекте | apps/api/src/prisma/prisma.service.ts |
Изменение | Файл |
Socket.io typed events: ServerToClientEvents / ClientToServerEvents | apps/api/src/modules/chat/types/socket-events.types.ts |
ChatGateway.server получил полные generics Server<C, S> | apps/api/src/modules/chat/chat.gateway.ts |
Изменение | Файл |
.env.example — полный шаблон всех переменных окружения | .env.example |
apps/mobile/.gitignore — добавлен в репозиторий (был неотслеживаем) | apps/mobile/.gitignore |
Пакет | Версия |
helmet | ^8.2.0 |
@types/helmet | ^4.0.0 |
@types/express | ^5.0.6 |