Go to file
bvn13 3e2c0ba843 update 2024-06-29 00:32:42 +03:00
.vscode simple web server 2024-06-05 23:22:58 +03:00
src update 2024-06-29 00:32:42 +03:00
.gitignore simple web server 2024-06-05 23:22:58 +03:00
Dockerfile fix 2024-06-14 02:11:13 +03:00
README.md added ability to setup multiple lists 2024-06-29 00:08:56 +03:00
docker-compose.yaml added ability to setup multiple lists 2024-06-29 00:08:56 +03:00
docker-compose.yaml-distribution installation script and guide 2024-06-14 22:03:43 +03:00
prepare-install.sh installation script and guide 2024-06-14 22:03:43 +03:00
requirements.txt simple web server 2024-06-05 23:22:58 +03:00
version update 2024-06-29 00:32:42 +03:00

README.md

JeDoIst клиент

Что это?

  • это клиент для телеграм-бота JeDoIst

Зачем вам это?

  • JeDoIst - это автоматизатор входящей очереди задач

Не так давно я прочитал книгу Максима Дорофеева "Джедайские техники", данный проект основан на идеях, описанных в данной книге.

Какие идеи?

  • каждый человек работает с задачами
  • чтобы быть успешным, нужно правильно работать со своими задачами
  • очередь входящий задач должна быть одна: должно быть одно место, куда складываются все входящие задачи
  • работа заключается в постоянной проработке и декомпозиции этой очереди по правилам, описанным в книге, по принципу "для того, чтобы обезьянке стало проще выполнять"

Улучшения

  • часто идеи приходят в совершенно неподходящee для записывания "от руки" время
  • хочется иметь инструмент, который послужит входящей очередью, в которую можно буквально надиктовать задачу
  • но очередь задач должна быть одна, поэтому...
  • голосовые записи должны быть расшифрованы и сложены в единую очередь

Поэтому

  • JeDoIst является этой входящей очередью, в которую можно "надиктовать" свою идею или задачу
  • он бережно расшифрует голосовое сообщение и передаст его в callback-е на любой удаленный сервер
  • с одним ограничением: протокол диктует JeDoIst, и должна быть авторизация

И поэтому...

  • этот репозиторий предназначен для быстрого развертывания веб-сервера, в который будут отправляться ваши задачи

Но!

  • Вопрос: но где же опубликовать этот веб-сервер?
  • Ответ: на любом VPS
  • Вопрос: как сохраняются задачи?
  • Ответ: в одном файле в формате Markdown
  • Вопрос: файл на сервере, я работаю на ноутбуке - где логика?
  • Ответ: есть Syncthing, который позволит синхронизировать файл с задачми на сервере и на ноутбуке. И на смартфоне.

Инструкция установки и настройки

Что понадобится

В минимальной комплектации понадобится:

  1. VPS - арендуйте где-нибудь сервер (не хостинг). Проверенные варианты: Mail.Ru Group, Yandex
  2. git - установите на сервер
  3. Docker - куда без него?
  4. docker-compose - с этим проще деплоить

Как собрать

  1. git clone https://gitea.bvn13.me/bvn13/jedoist-client.git
  2. bash prepare-install.sh

Настройка запуска

  1. Настройка осуществляется установкой переменных окружения при старте
    • TODOS_PATH - каталог (локальный), где хранится файл с заданиями
  2. Формат файла с заданиями такой: это MarkDown с жесткой структурой
# ToDo

- [ ] task 1
- [ ] task 2

сервис при добавлении новой задачи ищет строку # ToDo, после этого отступает одну пустую строку и добавляет задачу в формате MarkDown checked action. Советую ознакомиться с форматом MarkDown, потому что полезно.

  1. Третья важная переменная окружения

    • TOKEN - это тот авторизационный токен, который будет необходимо сообщить боту JeDoIst при добавлении себе списка задач.
  2. Конфигурационный файл. Формат JSON, содержит список путей к TODO-файлам относительно TODOS_PATH, указанных в п.1.

{
    "lists": {
        "personal": "./test/personal.md",
        "work": "./test/work.md"
    }
}

Запуск

Запуск осуществляется стандартным путем, с помощью docker-compose:

> TODOS_PATH=/path/to/dir \
  TOKEN=my-secret-token \ 
  CONFIG_FILE=/path/to/config
  docker-compose up -d

Проверка статуса

> docker ps

Контейнер должен быть alive и не перегружаться.

Как же настроить список задач в боте?

/create_todo_list - команда добавления списка задач

  1. имя списка задач - необходимо для того, чтобы после введенной задачи (в диалоге бота в Телеграм) указать, в какой список добавить задачу
  2. callback URL - это внешний адрес вашего запущенного сервиса (по этой инструкции). Если вы арендовали VPS, то добавьте в ее FireWall порт 8080 для настоящего сервиса, и укажите в диалоге бота адрес http://YOUR_VPS_IP:8080/create-task
  3. токен авторизации - тот самый токен, который указан при запуске настоящего сервиса на вашем VPS
  4. Для списка важно задать ID - он указывается в config.json в качестве ключей объекта $.['lists']. Этот ID необходимо указать в callback URL в параметре list: http://YOUR_VPS_IP:8080/create-task?list=personal

Важная информация

  • распознавание текста - дело не бесплатное, увы
  • но и не дорогое - это плюс! :)
  • если вы решите использовать бота, свяжитесь со мной