# Tasks: Локальные сервисы календаря (Radicale) и задач (Vikunja) ## Implementation Tasks ### Radicale (CalDAV, docker :5232) - [ ] R1: Создать `/opt/hermes/radicale/docker-compose.yml` (образ radicale, порт 5232, volumes, auth) - [ ] R2: Создать коллекции: «Личный», «Рабочий», «Задачи» (VTODO) — через скрипт или DAVx5 - [ ] R3: Проверить `curl -X PROPFIND http://127.0.0.1:5232/` → 207 ### Vikunja (трекер, docker :3456) - [ ] V1: Создать `/opt/hermes/vikunja/docker-compose.yml` (postgres + vikunja, env, volumes) - [ ] V2: `docker compose up -d` → Vikunja отвечает на `http://127.0.0.1:3456/api/v1/info` - [ ] V3: Создать админ-пользователя, получить API-токен - [ ] V4: Тест: `POST /api/v1/projects//tasks` с токеном → 201 ### Общее - [ ] O1: Caddy reverse proxy (cal.nixg.ru → 5232, tasks.nixg.ru → 3456) + TLS - [ ] O2: Проверить доступ с Android (DAVx5 для Radicale, Vikunja app/token для задач) - [ ] O3: Обновить README/STATUS (порты, логины, как синхронизировать) ## Verification - [ ] V1: `curl -s -o /dev/null -w '%{http_code}' -X PROPFIND http://127.0.0.1:5232/ -u estorozhenko:...` → 207 - [ ] V2: `curl -s http://127.0.0.1:3456/api/v1/info` → 200 - [ ] V3: Задача через API → 201 - [ ] V4: `cd /opt/hermes/openspec-lab && openspec validate local-calendar-tasks`