Это pet-проект, реализующий backend-систему для управления трафиком, сбора статистики и настройки гибких правил маршрутизации. Проект разработан на NestJS с использованием PostgreSQL и TypeORM. Основная цель — продемонстрировать навыки построения масштабируемого, модульного и расширяемого решения с акцентом на чистую архитектуру, SOLID-принципы и паттерны проектирования.
- Node.js / TypeScript
- NestJS — масштабируемый backend-фреймворк
- TypeORM — ORM для PostgreSQL
- PostgreSQL — основная реляционная СУБД
- Docker / Docker Compose — для локального запуска
- Jest — для unit и е2е тестов
Проект построен с фокусом на чистую архитектуру и масштабируемость:
-
SOLID:
- Каждый класс отвечает за одну зону ответственности
- Логика расширяема через абстракции и интерфейсы
- Все зависимости внедряются через DI
-
Применяемые паттерны:
- Repository Pattern — изоляция бизнес-логики от доступа к данным
- Service Layer — логика вынесена из контроллеров
- Factory — для динамического создания объектов
- Strategy — для динамического изменения бизнес логики
-
Модульность:
- Каждый функциональный блок — отдельный Nest-модуль
- Легко масштабировать и заменять компоненты
- Создание и настройка кампаний
- Управление потоками (streams)
- Настройка условий маршрутизации на основе гео, устройств, IP и других параметров
- Поддержка множественных оферов и сплит-тестирования
- Подсчёт и хранение статистики по визитам/кликам
- Интеграция с внешними источниками через постбэки
- Unit-тесты для сервисов
- e2e-тесты для тестирования бизнес логики
- Запуск тестов с помощью Jest
- Использование testcontainers для запуска окружения для e2e тестов
git clone https://github.com/direct808/tds5.git
cd tds5
cp .env.example .env
# Установка зависимостей
yarn install
# Запуск окружения
docker-compose up
# Запуск проекта
yarn run start:dev
- Показывает моё понимание backend-архитектуры и модульного подхода
- Используется реальный кейс с нетривиальной бизнес-логикой
- Основан на production-подходах, которые можно применять в реальной работе
src/
├── affiliate-network/ # Партнерские сети
├── auth/ # Аутентификация пользователя
├── campaign/ # Управление кампаниями
├── config]/ # Конфигурация приложения
├── offer/ # Управление оферами
├── source/ # Источники траффика
├── user/ # Управление пользователями
├── utils - # общий модуль
├── main.ts # Точка входа
├── app.module.ts # Корневой модуль
test # e2e тесты
- Telegram: @direct808
- Email: direct808@yandex.ru