# Daily Timer Десктопное приложение для проведения daily standup митингов с отслеживанием времени, управлением участниками и статистикой. ## Возможности - ⏱️ **Таймер** - крупный таймер текущего спикера с прогресс-баром - 👥 **Управление участниками** - список с настраиваемым лимитом времени для каждого - 🔄 **Очередь выступлений** - визуальная очередь, можно менять порядок - ⏭️ **Пропуск** - переместить неготового участника в конец очереди - ✅ **Отметка присутствия** - пометить кто есть/отсутствует перед митингом - ⚠️ **Предупреждения** - визуальные и звуковые оповещения когда время заканчивается - 📊 **Статистика** - длительность митингов, превышения, показатели участников - 📈 **История** - просмотр прошлых митингов с детальной разбивкой - 💾 **Экспорт** - экспорт данных в JSON или CSV - 🔊 **Звуковые уведомления** - настраиваемые звуковые оповещения - 🌐 **Локализация** - русский и английский интерфейс - 🔄 **Автообновление** - проверка и установка обновлений из приложения ## Скриншоты _(Скоро)_ ## Требования - macOS 10.15+ (Catalina и выше) - Go 1.21+ - Node.js 18+ - Wails CLI v2 ## Установка ### Скачать готовый релиз 1. Скачать последний релиз: https://git.movida.biz/bell/daily-timer/releases 2. Распаковать архив 3. Переместить `Daily Timer.app` в `/Applications/` 4. Убрать атрибут карантина (см. ниже) ### Автообновление Приложение поддерживает автоматическое обновление: 1. Открыть **Настройки** → секция "Обновления" 2. Нажать **Проверить сейчас** 3. Если доступно обновление → **Скачать и установить** 4. После установки нажать **Перезапустить** Приложение автоматически: - Скачивает новую версию - Устанавливает в `/Applications/` - Снимает карантин (`xattr -cr`) - Перезапускается **Обнаружение пересборок**: Если версия та же, но бинарник изменился (пересборка) - приложение также предложит обновление. ### Установка Wails CLI ```bash go install github.com/wailsapp/wails/v2/cmd/wails@latest ``` ### Клонирование и сборка ```bash git clone https://git.movida.biz/bell/daily-timer.git cd daily-timer # Инициализация проекта make init # Режим разработки make dev # Сборка для production make build ``` Собранное приложение будет в `build/bin/`. ### macOS Gatekeeper Приложение не подписано Apple Developer сертификатом, поэтому macOS может показать ошибку "приложение повреждено". Исправление: ```bash # Убрать атрибут карантина xattr -cr "Daily Timer.app" ``` Или: правый клик → Открыть → Открыть (только при первом запуске). ## Использование ### Подготовка митинга 1. **Добавить участников** - ввести имена и установить лимиты времени 2. **Установить общий лимит** - настроить длительность митинга (по умолчанию: 60 минут) 3. **Упорядочить** - перетащить для изменения порядка выступлений 4. **Отметить присутствие** - переключить статус присутствия/отсутствия ### Во время митинга 1. Нажать **Начать митинг** 2. Таймер показывает текущего спикера с обратным отсчётом 3. Нажать **Следующий** для перехода (или ⌘N) 4. Нажать **Пропустить** чтобы переместить спикера в конец очереди 5. **Клик по спикеру** в списке - быстро переключиться на него (для done-спикеров таймер продолжится) 6. Использовать **Пауза/Продолжить** для прерываний 7. Нажать **Стоп** для досрочного завершения ### Горячие клавиши | Клавиша | Действие | | ------- | ----------------- | | ⌘N | Следующий спикер | | ⌘S | Пропустить | | Space | Пауза/Продолжить | | ⌘Q | Остановить митинг | ### Статистика - Просмотр истории в вкладке **История** - Фильтрация по датам - Экспорт в JSON или CSV для анализа - Отслеживание превышений и среднего времени выступлений ## Конфигурация Настройки хранятся в `~/Library/Application Support/DailyTimer/`: - `daily-timer.db` - SQLite база данных со всеми данными - `sounds/` - кастомные звуковые файлы (опционально) ### Кастомные звуки Положить MP3 файлы в директорию sounds: - `warning.mp3` - воспроизводится когда время заканчивается - `timeup.mp3` - воспроизводится когда время спикера истекло - `meeting_end.mp3` - воспроизводится при завершении митинга ## Разработка ### Структура проекта ``` daily-timer/ ├── main.go # Точка входа Wails приложения ├── internal/ │ ├── app/ # Логика приложения и Wails bindings │ ├── models/ # Модели данных │ ├── storage/ # Слой работы с SQLite │ └── timer/ # Логика таймера с событиями ├── frontend/ │ ├── src/ │ │ ├── App.svelte # Главный компонент │ │ └── components/ # UI компоненты │ └── wailsjs/ # Сгенерированные Go bindings ├── wails.json # Конфигурация Wails ├── Makefile # Команды сборки └── README.md ``` ### Команды ```bash make dev # Запуск разработки с hot reload make build # Сборка production бинарника make test # Запуск тестов make fmt # Форматирование кода make lint # Запуск линтеров make clean # Очистка артефактов сборки ``` ### Релиз ```bash # 1. Создать тег версии git tag -a v0.2.0 -m "Описание релиза" git push origin v0.2.0 # 2. Собрать и опубликовать GITEA_TOKEN= make release-publish ``` ## Планы - [x] Drag-and-drop для порядка участников - [ ] Интеграция с Telegram (отправка сводки митинга) - [ ] Интеграция с календарём (авто-расписание) - [ ] Шаблоны команд - [ ] Облачная синхронизация - [ ] Поддержка Windows/Linux - [x] Автообновление приложения ## Лицензия MIT License - см. [LICENSE](LICENSE). ## Поддержка Для багов и запросов функций используйте GitHub Issues.