Skip to content

xi-effect/xi.calls

Repository files navigation

Monorepo Starter

Современный starter-шаблон для создания React-приложений с использованием монорепозитория

Этот репозиторий представляет собой готовый к использованию шаблон для быстрого старта разработки современных веб-приложений на React с использованием TypeScript, Vite и TanStack Router.

🚀 Начало работы

Установка зависимостей

Выполните установку зависимостей, запустив команду в корне репозитория:

pnpm i

Если зависимости не устанавливаются, возможно, потребуется использовать флаг --legacy-peer-deps.

Запуск приложения

Запустите следующую команду в корне репозитория для начала локальной разработки:

pnpm run dev

Запустится приложение web на http://localhost:5173/, а также все пакеты перейдут в режим HMR.

📦 Структура проекта

Проект построен по принципу монорепозитория с использованием Turborepo:

monorepo-starter/
├── apps/                       # Приложения
│   └── web/                    # Основное фронтенд-приложение
├── packages/                   # Переиспользуемые пакеты
│   ├── calls.*                 # Пакеты ВКС (@xipkg/calls-*)
│   │   ├── calls/              # @xipkg/calls — основной UI
│   │   ├── calls.config/       # @xipkg/calls-config
│   │   ├── calls.types/        # @xipkg/calls-types
│   │   ├── calls.utils/        # @xipkg/calls-utils
│   │   └── …                   # hooks, ui, store, providers, …
│   └── common.*                # Инфраструктура монорепо (eslint, env, typescript)

🛠️ Технологии

Инфраструктура

  • Turborepo – инструмент для создания и управления монорепозиториями
  • pnpm – менеджер пакетов
  • Prettier – форматирование кода
  • ESLint – линтер с правилами написания кода
  • Husky – инструмент вызова прекоммит хуков в git
  • CommitLint – линтер наименования коммитов

Приложение (apps/web)

  • TypeScript v5 – типизированный JavaScript
  • React v19 – библиотека для создания пользовательских интерфейсов
  • Tailwind CSS v4 – утилитарный CSS-фреймворк
  • Vite – сборщик проекта
  • TanStack Router – организация роутинга на основе файловой системы
  • TanStack Query – организация кеширования и управления данными
  • Zustand – управление состоянием в приложении
  • i18next – интернационализация
  • Axios – работа с REST API
  • Socket.IO – взаимодействие с WebSockets

📝 Команды

Разработка

# Запуск приложения в режиме разработки
pnpm run dev

# Запуск всех пакетов в режиме разработки
pnpm run dev:all

# Предпросмотр production сборки
pnpm run preview

Сборка

# Сборка всех пакетов
pnpm run build

# Сборка в режиме разработки
pnpm run build:dev

# Сборка с отладочной информацией
pnpm run build:debug

Качество кода

# Запуск ESLint во всех пакетах
pnpm run lint

# Форматирование кода с помощью Prettier
pnpm run format

# Проверка форматирования без изменений
pnpm run format-check

🏗️ Архитектура

Принципы организации

  1. Модульность - код организован в переиспользуемые пакеты
  2. Feature-based структура - функциональность разделена на модули
  3. Разделение ответственности - общий код выделен в пакеты common.*
  4. Монорепозиторий - использование Turborepo для управления зависимостями

Система маршрутизации

Проект использует @tanstack/react-router для организации навигации по принципу файловой системы:

  • Структура директорий в apps/web/src/pages/ автоматически формирует маршруты
  • __root.tsx - корневой маршрут и контекст
  • _layout.tsx - шаблоны для вложенных маршрутов
  • (папка) - группировка маршрутов (не влияет на URL)

Локализация

Проект использует i18next для многоязычности. Переводы организованы по модульному принципу и распределены по соответствующим пакетам.

🔧 Переменные окружения

Проект использует переменные окружения для конфигурации. Они доступны через модуль common.env и используют префикс VITE_ для экспорта в клиентский код.

Создайте файл .env.local в папке apps/web/ для локальных переменных окружения:

VITE_SERVER_URL_BACKEND=http://localhost:3000
VITE_DEVTOOLS_ENABLED=true

📚 Создание новых пакетов

Для создания нового пакета:

  1. Создайте директорию в packages/ с префиксом common.*, modules.* или features.*
  2. Создайте package.json с соответствующим именем
  3. Добавьте пакет в зависимости приложения в apps/web/package.json
  4. Используйте пакет в коде: import { Something } from 'package-name'

🎨 UI компоненты

Проект использует базовые UI компоненты из пакета common.ui. Для более сложных компонентов рекомендуется использовать внешние библиотеки или создавать собственные в соответствующих пакетах.

📖 Дополнительная информация

📄 Лицензия

Этот проект является starter-шаблоном и может быть использован в любых целях.

About

monorepo for videoconference and videoconference's packages

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages