Skip to content
View mailframe-app's full-sized avatar

Block or report mailframe-app

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
mailframe-app/README.md

MailFrame

Современное веб-приложение для управления почтовыми рассылками

TypeScript React Vite TailwindCSS

📋 Описание

MailFrame — это высокопроизводительное веб-приложение, редактор MJML-шаблонов писем и осуществления рассылок.

🚀 Основные возможности

  • Быстрая разработка с Vite и Hot Module Replacement
  • 🎨 Современный UI с Consta Design System и TailwindCSS
  • 🔧 Type Safety с TypeScript
  • 📊 Управление состоянием с Zustand и React Query
  • 🧩 Модульная архитектура по принципам Feature-Sliced Design
  • 🔒 Строгие правила импортов с ESLint Boundaries
  • 📱 Адаптивный дизайн для всех устройств

🛠 Технологический стек

Основные технологии

  • React 19 - библиотека для создания пользовательских интерфейсов
  • TypeScript 5.8 - типизированный JavaScript
  • Vite 6 - современный инструмент сборки
  • TailwindCSS 4 - utility-first CSS фреймворк

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

  • Consta Design System - корпоративная система дизайна
  • React Hook Form - производительные формы с минимальными ре-рендерами
  • React Router DOM 7 - декларативное клиентское роутинг
  • React Icons - популярные иконки для React

Управление состоянием

  • Zustand - небольшая, быстрая и масштабируемая state-management библиотека
  • TanStack React Query - мощная библиотека для синхронизации данных
  • Create GStore - дополнительные утилиты для управления состоянием

Валидация и типы

  • Zod - TypeScript-first схемы валидации
  • Hookform Resolvers - резолверы для React Hook Form

Инструменты разработки

  • ESLint - статический анализ кода
  • Prettier - форматирование кода
  • Knip - поиск неиспользуемого кода
  • Bundle Analyzer - анализ размера бандла

📁 Архитектура проекта

Проект использует Feature-Sliced Design (FSD) — архитектурную методологию для создания масштабируемых фронтенд-приложений.

src/
├── app/          # 🏗️ Конфигурация приложения
│   ├── entrypoints/    # Точки входа
│   ├── layouts/        # Макеты страниц
│   ├── providers/      # Провайдеры контекста
│   └── router/         # Настройка роутинга
│
├── pages/        # 📄 Страницы приложения
│   └── [page-name]/    # Композиция виджетов
│
├── widgets/      # 🧩 Виджеты
│   └── [widget-name]/  # Композиция фич
│
├── features/     # ✨ Бизнес-функции
│   └── [feature-name]/ # Законченная бизнес-логика
│
├── entities/     # 🏢 Бизнес-сущности
│   └── [entity-name]/  # Модели предметной области
│
└── shared/       # 🔧 Переиспользуемые ресурсы
    ├── api/            # API клиенты
    ├── config/         # Конфигурация
    ├── lib/            # Внешние библиотеки
    ├── ui/             # UI компоненты
    └── utils/          # Утилиты

🔧 Установка и запуск

Предварительные требования

  • Node.js >= 18
  • Bun (рекомендуется) или npm/yarn

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

# Клонирование репозитория
git clone <repository-url>
cd app

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

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

Создайте файл .env в корне проекта:

VITE_API_BASE_URL=http://localhost:4200
VITE_COOKIE_DOMAIN=localhost

Доступные команды

# Запуск в режиме разработки
bun run dev

# Сборка для продакшена
bun run build

# Предварительный просмотр продакшен сборки
bun run preview

# Линтинг кода
bun run lint

# Форматирование кода
bun run format

# Поиск неиспользуемого кода
bun run knip

🎯 Правила разработки

Процесс разработки

  1. Перед началом работы: git pull и проверка, что ваша ветка удалена
  2. Создание ветки: Создайте отдельную ветку для каждой задачи
  3. Форматирование: Запустите bun run format перед коммитом
  4. Уведомление: Отметьтесь в канбане после отправки изменений

Правила импортов

Проект использует строгие правила импортов через ESLint Boundaries:

🚫 Запрещены импорты снизу вверх

shared → entities → features → widgets → pages → app

Нижние слои не могут импортировать верхние

🚫 Запрещены горизонтальные импорты

  • Сущности не могут импортировать другие сущности
  • Фичи не могут импортировать другие фичи
  • Страницы не могут импортировать другие страницы

✅ Обязательный Public API

  • Все модули экспортируются через index.ts
  • Прямые импорты из внутренних файлов запрещены

Соглашения по коду

  • Язык: Английский для кода, русский для комментариев
  • Именование файлов: kebab-case
  • Именование компонентов: PascalCase
  • Именование переменных: camelCase
  • Типизация: Строгая типизация, избегание any

🐳 Деплой

Docker

# Сборка и запуск
docker compose up -d --build

# Остановка
docker compose down

Обновление

git pull
docker compose down
docker compose up -d --build

Подробные инструкции по деплою доступны в DEPLOY.md.

📊 Мониторинг и отладка

  • Bundle Analyzer: Автоматически открывается после сборки
  • React Query DevTools: Доступны в режиме разработки
  • TypeScript: Строгая проверка типов
  • ESLint: Статический анализ кода

🤝 Участие в разработке

  1. Форкните репозиторий
  2. Создайте ветку для фичи: git checkout -b feature/amazing-feature
  3. Следуйте правилам архитектуры и импортов
  4. Добавьте тесты для новой функциональности
  5. Запустите bun run format перед коммитом
  6. Создайте Pull Request

📄 Лицензия

Этот проект является частной разработкой. Все права защищены.

Pinned Loading

  1. mailframe-api mailframe-api Public

    TypeScript

  2. mailframe-app mailframe-app Public

    MailFrame — это высокопроизводительное веб-приложение, редактор MJML-шаблонов писем и осуществления рассылок.

    TypeScript

  3. mailframe-promo mailframe-promo Public

    Платформа для создания шаблонов писем и email-рассылок

    TypeScript