204 lines
8.5 KiB
Markdown
204 lines
8.5 KiB
Markdown
# 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=<token> make release-publish
|
||
```
|
||
|
||
## Планы
|
||
|
||
- [ ] Drag-and-drop для порядка участников
|
||
- [ ] Интеграция с Telegram (отправка сводки митинга)
|
||
- [ ] Интеграция с календарём (авто-расписание)
|
||
- [ ] Шаблоны команд
|
||
- [ ] Облачная синхронизация
|
||
- [ ] Поддержка Windows/Linux
|
||
- [x] Автообновление приложения
|
||
|
||
## Лицензия
|
||
|
||
MIT License - см. [LICENSE](LICENSE).
|
||
|
||
## Поддержка
|
||
|
||
Для багов и запросов функций используйте GitHub Issues.
|