{"id":32431101,"url":"https://github.com/iwizard7/kanbe","last_synced_at":"2025-10-25T21:53:42.761Z","repository":{"id":318807829,"uuid":"1072675385","full_name":"iwizard7/KanBe","owner":"iwizard7","description":null,"archived":false,"fork":false,"pushed_at":"2025-10-15T10:45:43.000Z","size":1613,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-15T15:26:09.169Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iwizard7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-09T04:08:26.000Z","updated_at":"2025-10-15T10:45:46.000Z","dependencies_parsed_at":"2025-10-16T04:41:01.589Z","dependency_job_id":"91f02c63-f0b5-4574-bdbf-71e29829d1de","html_url":"https://github.com/iwizard7/KanBe","commit_stats":null,"previous_names":["iwizard7/kanbe"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/iwizard7/KanBe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2FKanBe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2FKanBe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2FKanBe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2FKanBe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iwizard7","download_url":"https://codeload.github.com/iwizard7/KanBe/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwizard7%2FKanBe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281026228,"owners_count":26431753,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-25T02:00:06.499Z","response_time":81,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-25T21:53:41.811Z","updated_at":"2025-10-25T21:53:42.753Z","avatar_url":"https://github.com/iwizard7.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\u003cimg src=\"client/src/assets/logo.png\" alt=\"KanBe Logo\" width=\"500\" height=\"500\" /\u003e\u003c/div\u003e\n\nСовременная Kanban-доска с полной поддержкой macOS (Apple Silicon), Linux и Raspberry Pi. **Оптимизирована для высокой производительности** даже на устройствах с ограниченными ресурсами.\n\n## 🌟 Особенности\n\n### 🎯 Основные возможности\n- ✅ **Полная поддержка macOS** с процессорами M-серии (Apple Silicon)\n- ✅ **Оптимизировано для Raspberry Pi** 3/4/5 с ARM архитектурой\n- ✅ **Тёмная тема** с автоматическим переключением\n- ✅ **Расширенные возможности задач**: приоритеты, дедлайны, подзадачи, зависимости, метки\n- ✅ **Системные сервисы**: systemd (Linux) и launchd (macOS)\n- ✅ **Локальная аутентификация** (email + пароль)\n- ✅ **SQLite база данных** с оптимизациями для SD-карт\n- ✅ **Профиль пользователя** с настройками и статусом\n\n### 🚀 Производительность\n- ✅ **React.memo** для тяжелых компонентов (предотвращает лишние ререндеры)\n- ✅ **Виртуализация списков** (react-window) для больших досок\n- ✅ **Умное кеширование** React Query (5 мин stale, 10 мин cache)\n- ✅ **Пагинация API** с фильтрами и поиском\n- ✅ **Оптимизированная база данных** (WAL, memory-mapped I/O)\n- ✅ **Автоматическое определение платформы** и применение оптимизаций\n\n### 🎨 Интерфейс\n- ✅ **Drag \u0026 drop интерфейс** с поддержкой межколонкового перемещения\n- ✅ **Цветные метки и приоритеты** для задач\n- ✅ **Календарь дедлайнов** с визуальной индикацией\n- ✅ **Подзадачи** для декомпозиции сложных задач (до 10 подзадач)\n- ✅ **Зависимости задач** для управления последовательностью (до 5 зависимостей)\n- ✅ **Адаптивный дизайн** для всех устройств\n- ✅ **Виртуальная прокрутка** для списков с 1000+ элементов\n\n### 📊 Аналитика и отчеты\n- ✅ **Ключевые метрики**: всего задач, выполнено, просрочено, продуктивность\n- ✅ **Графики по статусу и приоритету задач**\n- ✅ **Динамика выполнения** за выбранный период (7/30/90 дней)\n- ✅ **Экспорт отчетов в PDF и Excel** \n- ✅ **Календарь дедлайнов с задачами на выбранную дату** \n- ✅ **Среднее время выполнения задач** \n\n## 🚀 Быстрая установка\n\n### Автоматическая установка (рекомендуется)\n\n#### Универсальный установщик (автоматически определяет платформу)\n```bash\n# Скачайте и запустите универсальный скрипт\ncurl -fsSL https://raw.githubusercontent.com/iwizard7/KanBe/main/install.sh -o install.sh\nchmod +x install.sh\n./install.sh\n```\n\n#### Для Raspberry Pi (специальная оптимизация)\n```bash\n# Полностью автоматическая установка с оптимизациями для Raspberry Pi\nnpm run setup:raspberry-pi\n```\n\n#### Для macOS / Linux (альтернативный способ)\n```bash\n# Полностью автоматическая установка без скачивания файла\ncurl -fsSL https://raw.githubusercontent.com/iwizard7/KanBe/main/install.sh | bash\n```\n\n### Ручная установка\n\n#### Для всех платформ (macOS, Linux, Raspberry Pi)\n\n1. **Скачайте проект:**\n   ```bash\n   git clone https://github.com/iwizard7/KanBe.git\n   cd KanBe\n   ```\n\n2. **Запустите универсальный скрипт установки:**\n   ```bash\n   chmod +x install.sh\n   ./install.sh\n   ```\n\n   Универсальный скрипт автоматически:\n   - Определит вашу платформу и архитектуру процессора\n   - **Для Raspberry Pi:** Применит специальные оптимизации памяти и производительности\n   - Проверит и установит системные зависимости\n   - Установит Node.js 18 LTS оптимальным способом для вашей системы\n   - Соберет нативные модули для вашей архитектуры\n   - Настроит базу данных с оптимизациями для SD-карт (Raspberry Pi)\n   - Создаст конфигурацию\n   - Создаст первого пользователя\n\n3. **Готово!** Приложение будет доступно на `http://localhost:3000`\n  - API и Фронтенд: `http://localhost:3000`\n  - **Raspberry Pi:** Автоматически оптимизировано для 256MB RAM\n\n## Ручная установка\n\nЕсли скрипт не подходит:\n\n```bash\n# Установка системных зависимостей\nsudo apt update\nsudo apt install -y build-essential python3-dev sqlite3 nginx\n\n# Установка Node.js 18\ncurl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -\nsudo apt-get install -y nodejs\n\n# Установка PM2\nsudo npm install -g pm2\n\n# Установка зависимостей проекта\nnpm install\nnpm rebuild better-sqlite3\n\n# Настройка базы данных\nnpm run db:push\n\n# Сборка\nnpm run build\n\n# Запуск\nnpm run start\n```\n\n## Использование\n\n### Веб-интерфейс\n\n1. Откройте браузер и перейдите на `http://localhost:3000` (режим разработки)\n2. Войдите с помощью email и пароля заданными при установке\n\n#### 📋 Канбан-доска\n- Создавайте задачи с подробным описанием, приоритетом, дедлайном\n- Добавляйте подзадачи для декомпозиции сложных задач\n- Устанавливайте зависимости между задачами\n- Используйте цветные метки для категоризации\n- Перемещайте задачи между колонками с помощью drag \u0026 drop\n\n#### 📊 Аналитика и отчеты\n- Просматривайте ключевые метрики продуктивности\n- Анализируйте графики по статусу и приоритету задач\n- Отслеживайте динамику выполнения за выбранный период\n- Экспортируйте отчеты в PDF и Excel\n- Просматривайте календарь дедлайнов\n\n#### 👤 Профиль пользователя\n- Редактируйте личную информацию и настройки\n- Загружайте аватар (изображения до 5MB)\n- Управляйте статусом присутствия\n- Настраивайте уведомления и часовой пояс\n\n### API\n\nБазовый URL: `http://localhost:3000/api`\n\nВсе запросы требуют аутентификации через сессии.\n\n#### Аутентификация\n- `POST /api/auth/register` - Регистрация\n- `POST /api/auth/login` - Вход\n- `POST /api/auth/logout` - Выход\n- `PATCH /api/auth/profile` - Обновление профиля\n- `POST /api/auth/avatar` - Загрузка аватара (multipart/form-data)\n\n#### Задачи\n- `GET /api/tasks` - Получить все задачи пользователя\n- `POST /api/tasks` - Создать задачу (с поддержкой приоритетов, дедлайнов, подзадач)\n- `PATCH /api/tasks/:id` - Обновить задачу\n- `DELETE /api/tasks/:id` - Удалить задачу\n- `PATCH /api/tasks/:id/position` - Переместить задачу\n\n## Управление\n\n### Системные сервисы (рекомендуется)\n\n#### Linux / Raspberry Pi (systemd)\n```bash\nsudo systemctl start kanbe      # Запуск\nsudo systemctl stop kanbe       # Остановка\nsudo systemctl restart kanbe    # Перезапуск\nsudo systemctl status kanbe     # Статус\nsudo journalctl -u kanbe -f     # Логи\nsudo systemctl enable kanbe     # Автозапуск при загрузке\n```\n\n#### macOS (launchd)\n```bash\nlaunchctl start com.kanbe.app     # Запуск\nlaunchctl stop com.kanbe.app      # Остановка\nlaunchctl list | grep kanbe       # Статус\ntail -f kanbe.log                 # Логи\n```\n\n### Универсальные команды (работают на всех платформах)\n```bash\nnpm run status    # Статус сервиса\nnpm run logs      # Просмотр логов\nnpm run restart   # Перезапуск\nnpm run stop      # Остановка\n```\n\n### PM2 команды (альтернативный способ)\n```bash\npm2 list                    # Список процессов\npm2 logs kanbe             # Логи приложения\npm2 restart kanbe          # Перезапуск\npm2 stop kanbe             # Остановка\n```\n\n## 📦 Скрипты npm\n\n### Основные команды\n```bash\nnpm run dev              # Режим разработки (API + фронтенд)\nnpm run dev:client       # Только фронтенд (порт 3000)\nnpm run build            # Сборка для продакшена\nnpm run start            # Запуск собранного приложения\nnpm run check            # TypeScript проверка\n```\n\n### Специфические для платформ\n```bash\n# Raspberry Pi оптимизации\nnpm run setup:raspberry-pi     # Установка с оптимизациями для RPi\nnpm run build:raspberry-pi     # Сборка с ограничением памяти\nnpm run start:raspberry-pi     # Запуск с оптимизациями для RPi\nnpm run pi:config              # Проверка и применение конфигурации RPi\nnpm run pi:monitor             # Мониторинг производительности\nnpm run pi:info                # Информация о системе\n\n# macOS сборки\nnpm run build:macos            # Сборка для macOS\nnpm run build:macos:client     # Только клиент для macOS\nnpm run build:macos:server     # Только сервер для macOS\n\n# Linux сборки\nnpm run build:linux            # Сборка для Linux\nnpm run build:linux:client     # Только клиент для Linux\nnpm run build:linux:server     # Только сервер для Linux\n```\n\n### Управление и отладка\n```bash\nnpm run status           # Статус сервиса\nnpm run logs             # Просмотр логов\nnpm run restart          # Перезапуск\nnpm run stop             # Остановка\n\n# База данных\nnpm run db:push          # Применить миграции\nnpm run db:migrate       # Миграция базы данных\nnpm run db:generate      # Генерация миграций\n```\n\n## 🚀 Производительность\n\n### Оптимизации для всех платформ\n\n#### React оптимизации\n- **React.memo** для тяжелых компонентов (TaskCard, KanbanColumn, EditTaskDialog)\n- **Виртуализация списков** с react-window для больших досок (1000+ задач)\n- **Ленивая загрузка** компонентов с React.lazy\n- **Оптимизированные ререндеры** с правильным использованием useMemo/useCallback\n\n#### API оптимизации\n- **Пагинация** с фильтрами (статус, приоритет, поиск)\n- **Умное кеширование** React Query (staleTime: 5min, gcTime: 10min)\n- **Background refetch** для актуальности данных\n- **Optimistic updates** для мгновенной обратной связи\n\n#### База данных\n- **SQLite WAL режим** для лучшей производительности\n- **Memory-mapped I/O** для эффективного чтения\n- **Оптимизированные индексы** для быстрого поиска\n- **Connection pooling** и prepared statements\n\n### Специфические оптимизации для Raspberry Pi 3\n\n#### Node.js оптимизации\n```javascript\n// Ограничение памяти heap до 256MB\n--max-old-space-size=256\n\n// Оптимизация для размера кода\n--optimize-for-size\n\n// Уменьшение thread pool до 2 потоков\nUV_THREADPOOL_SIZE=2\n```\n\n#### Systemd сервис\n```ini\n[Service]\nMemoryLimit=256M          # Ограничение памяти\nCPUQuota=50%              # 50% от одного ядра\nNice=10                   # Пониженный приоритет\nRestartSec=15             # Увеличенное время перезапуска\n```\n\n#### SQLite для SD-карт\n```sql\nPRAGMA journal_mode = WAL;        -- WAL режим\nPRAGMA busy_timeout = 30000;      -- Таймаут 30 сек\nPRAGMA cache_size = -2000;        -- Кеш 2MB\nPRAGMA synchronous = NORMAL;      -- Оптимизированная синхронизация\n```\n\n### Метрики производительности\n\n#### На мощных устройствах (macOS M1/M2, Linux x64)\n- **Время запуска:** 3-8 секунд\n- **Потребление памяти:** 100-200MB\n- **Одновременные пользователи:** 10-50\n- **Запросы/сек:** 200-1000\n\n#### На Raspberry Pi 3 (1GB RAM)\n- **Время запуска:** 15-30 секунд\n- **Потребление памяти:** 150-250MB\n- **Одновременные пользователи:** 2-5\n- **Запросы/сек:** 50-100\n\n#### На Raspberry Pi 4/5 (4GB+ RAM)\n- **Время запуска:** 5-15 секунд\n- **Потребление памяти:** 200-400MB\n- **Одновременные пользователи:** 5-15\n- **Запросы/сек:** 100-300\n\n## 🔧 Конфигурация\n\n### Переменные окружения\n\nСоздайте файл `.env` в корне проекта:\n\n```env\n# Основные настройки\nNODE_ENV=production\nPORT=3000\nSESSION_SECRET=your-secret-key\n\n# База данных\nDATABASE_URL=./data/kanbe.db\n\n# Платформа (автоматически определяется)\nPLATFORM=raspberry-pi  # macos | linux | raspberry-pi\nCPU_ARCH=armv7         # x86_64 | arm64 | armv7\n\n# Оптимизации для Raspberry Pi\nNODE_OPTIONS=--max-old-space-size=256\nUV_THREADPOOL_SIZE=2\nSQLITE_BUSY_TIMEOUT=30000\n```\n\n### Дополнительная документация\n\n- 📖 **[Полное руководство по Raspberry Pi](RASPBERRY-PI-README.md)** - детальные инструкции по оптимизации для Raspberry Pi 3/4/5\n- 🔧 **[API документация](API.md)** - подробное описание всех эндпоинтов\n- 🐛 **[Устранение неисправностей](TROUBLESHOOTING.md)** - решения распространенных проблем\n\n## Системные требования\n\n### Для macOS\n- **ОС:** macOS 10.15+ (Catalina или новее)\n- **Архитектура:** Apple Silicon (M1/M2/M3) или Intel x64\n- **Память:** Минимум 1GB RAM (рекомендуется 2GB+)\n- **Node.js:** 18+ (устанавливается автоматически)\n- **Дополнительно:** Xcode Command Line Tools (устанавливается автоматически)\n- **База данных:** SQLite (включается автоматически)\n\n### Для Raspberry Pi\n- **ОС:** Raspberry Pi OS (Debian-based)\n- **Архитектура:** ARMv7 (Pi 3/4) или ARM64 (Pi 5)\n- **Память:** Минимум 512MB RAM (рекомендуется 1GB+)\n- **Node.js:** 18+ (устанавливается автоматически)\n- **Дополнительно:** build-essential, python3-dev (устанавливается автоматически)\n- **База данных:** SQLite (включается автоматически)\n\n## Структура проекта\n\n```\nkanbe/\n├── client/                 # React фронтенд (порт 3000 в разработке)\n│   ├── src/\n│   │   ├── components/     # UI компоненты (диалоги, карточки, навбар)\n│   │   ├── pages/         # Страницы приложения\n│   │   ├── hooks/         # React хуки\n│   │   └── lib/           # Утилиты и конфигурация\n├── server/                 # Express бэкенд (порт 3000)\n│   ├── index.ts           # Главный серверный файл\n│   ├── routes.ts          # API маршруты\n│   ├── auth.ts            # Аутентификация\n│   └── db.ts              # Конфигурация базы данных\n├── shared/                 # Общие типы и схема БД\n│   └── schema.ts          # Drizzle схема, типы, константы\n├── data/                   # База данных SQLite\n├── dist/                   # Собранное приложение\n├── install.sh             # Универсальный установщик\n├── README.md              # Документация\n└── package.json           # Зависимости и скрипты\n```\n\n## Безопасность\n\n- Пароли хэшируются с bcrypt\n- Сессии защищены секретным ключом\n- CORS настроен для локального доступа\n- SQL-инъекции предотвращены через Drizzle ORM\n\n## 🏗️ Архитектура\n\n### Технологии\n- **Frontend:** React 18, TypeScript, Tailwind CSS, Radix UI\n- **Backend:** Node.js 18, Express, Drizzle ORM\n- **Database:** SQLite с оптимизациями для SD-карт\n- **Build:** Vite, esbuild\n- **Deployment:** systemd, launchd, PM2\n\n### Ключевые компоненты\n- **TaskCard:** Оптимизированная карточка задачи с React.memo\n- **VirtualizedTaskList:** Виртуализация больших списков (react-window)\n- **KanbanColumn:** Колонка доски с drag \u0026 drop\n- **EditTaskDialog:** Диалог редактирования с валидацией\n- **API Routes:** REST API с пагинацией и кешированием\n\n### Безопасность\n- **Аутентификация:** bcrypt хеширование паролей\n- **Сессии:** Безопасное управление сессиями\n- **Валидация:** Zod схемы для всех входных данных\n- **CORS:** Настроен для локального доступа\n- **SQL Injection:** Предотвращено через Drizzle ORM\n- **Rate Limiting:** Защита от brute force (5 попыток входа/15 мин) и DDoS (100 запросов/15 мин)\n\n## Устранение неполадок\n\n### Проблемы с better-sqlite3\n\n#### Для Apple Silicon (macOS)\n```bash\n# Специальная сборка для ARM64\nnpm rebuild better-sqlite3 --build-from-source\n\n# Если проблемы продолжаются\nnpm config set python python3\nnpm install better-sqlite3 --build-from-source\n```\n\n#### Для Raspberry Pi / Linux\n```bash\nnpm rebuild better-sqlite3\n# или\nnpm install better-sqlite3 --build-from-source\n```\n\n### Проблемы с установкой на macOS\n\n#### Xcode Command Line Tools не устанавливаются\n```bash\n# Ручная установка\nxcode-select --install\n\n# Если команда недоступна, установите Xcode из App Store\n# Или скачайте инструменты разработчика с сайта Apple\n```\n\n#### Homebrew не устанавливается\n```bash\n# Убедитесь что у вас macOS 10.15+\n# Проверьте подключение к интернету\n# Попробуйте альтернативную установку:\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n```\n\n#### Node.js не устанавливается через Homebrew\n```bash\n# Альтернативная установка Node.js\ncurl -fsSL https://nodejs.org/dist/v18.19.1/node-v18.19.1-darwin-arm64.tar.gz -o node.tar.gz\nsudo mkdir -p /usr/local/lib/nodejs\nsudo tar -xf node.tar.gz -C /usr/local/lib/nodejs\nsudo ln -sf /usr/local/lib/nodejs/node-v18.19.1-darwin-arm64/bin/* /usr/local/bin/\n```\n\n### Порт занят\n\n#### macOS\n```bash\n# Проверить занятые порты\nlsof -i :3000\n\n# Убить процесс\nkill -9 \u003cPID\u003e\n```\n\n#### Linux/Raspberry Pi\n```bash\n# Проверить занятые порты\nsudo netstat -tulpn | grep :3000\n# Изменить порты в .env файле\n```\n\n### Проблемы с портами в разработке\n```bash\n# Если порт 3000 занят другим процессом\nnpm run dev:client -- --port 3001\n\n# Или изменить в vite.config.ts\n```\n\n### Проблемы с памятью на Raspberry Pi\n```bash\n# Проверить использование памяти\nfree -h\n\n# Очистить кэш\nsudo apt-get clean\nsudo apt-get autoclean\n\n# Отключить ненужные сервисы\nsudo systemctl disable \u003cservice-name\u003e\n```\n\n## Лицензия\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwizard7%2Fkanbe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiwizard7%2Fkanbe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwizard7%2Fkanbe/lists"}