updates to readme

This commit is contained in:
2026-05-14 21:54:55 -05:00
parent 3a39a39be8
commit 55a14dbc4b
+44 -27
View File
@@ -2,6 +2,13 @@
A small PowerShell notifier for [Donetick](https://github.com/donetick/donetick) chores. A small PowerShell notifier for [Donetick](https://github.com/donetick/donetick) chores.
> [!IMPORTANT]
> **AI Assistance Disclosure**
>
> OpenAI Codex was used to help create this README and the Gitea pipeline files in this repository.
>
> All released application code is written by the repository owner.
The notifier checks the Donetick external API for chores, groups tasks that are overdue or due today, and sends summary notifications through an Apprise-compatible webhook. The notifier checks the Donetick external API for chores, groups tasks that are overdue or due today, and sends summary notifications through an Apprise-compatible webhook.
## What it does ## What it does
@@ -10,9 +17,9 @@ The notifier checks the Donetick external API for chores, groups tasks that are
- Authenticates to Donetick with the `secretkey` header. - Authenticates to Donetick with the `secretkey` header.
- Sends one Apprise notification for overdue tasks, when any exist. - Sends one Apprise notification for overdue tasks, when any exist.
- Sends one Apprise notification for tasks due today, when any exist. - Sends one Apprise notification for tasks due today, when any exist.
- Runs once and exits. - Runs continuously and sleeps until the next configured notification hour.
Because the container runs once and exits, schedule it with cron, systemd timers, Kubernetes CronJobs, Gitea Actions, or another scheduler if you want recurring notifications. The container is intended to stay running. Configure the notification hours with `NOTIFICATIONTIMES`; the script wakes up at those hours, checks chores, sends any needed notifications, then sleeps until the next configured hour.
## Configuration ## Configuration
@@ -25,6 +32,8 @@ All configuration is provided through environment variables.
| `DONETICKAPIKEY` | Yes | Donetick external API key. Sent as the `secretkey` header. | | `DONETICKAPIKEY` | Yes | Donetick external API key. Sent as the `secretkey` header. |
| `APPRISEWEBHOOKURL` | Yes | Apprise webhook URL that accepts notification posts. | | `APPRISEWEBHOOKURL` | Yes | Apprise webhook URL that accepts notification posts. |
| `APPRISEWEBHOOKTAG` | Yes | Apprise tag value to include with each notification. | | `APPRISEWEBHOOKTAG` | Yes | Apprise tag value to include with each notification. |
| `NOTIFICATIONTIMES` | No | Comma-separated list of 24-hour clock hours when notifications should be sent, such as `8,12,17`. Defaults to `8` when unset. |
| `TZ` | No | Container timezone, such as `America/Chicago`. Recommended so notification hours match your local time. |
## Docker ## Docker
@@ -34,17 +43,19 @@ The published image is:
docker.io/blinkfink182/donetick-notifier docker.io/blinkfink182/donetick-notifier
``` ```
### Run Once ### Run
```sh ```sh
docker run --rm \ docker run -d \
--name donetick-notifier \ --name donetick-notifier \
-e DONETICKHOST=host.docker.internal \ -e DONETICKHOST=host.docker.internal \
-e DONETICKPORT=8787 \ -e DONETICKPORT=8787 \
-e DONETICKAPIKEY=your-donetick-api-key \ -e DONETICKAPIKEY=your-donetick-api-key \
-e APPRISEWEBHOOKURL=https://apprise.example.com/notify/config \ -e APPRISEWEBHOOKURL=https://apprise.example.com/notify/config \
-e APPRISEWEBHOOKTAG=all \ -e APPRISEWEBHOOKTAG=all \
docker.io/blinkfink182/donetick-notifier:latest -e NOTIFICATIONTIMES=8,12,17 \
-e TZ=America/Chicago \
docker.io/blinkfink182/donetick-notifier
``` ```
### Docker Compose ### Docker Compose
@@ -53,19 +64,21 @@ docker run --rm \
services: services:
donetick-notifier: donetick-notifier:
container_name: donetick-notifier container_name: donetick-notifier
image: docker.io/blinkfink182/donetick-notifier:latest image: docker.io/blinkfink182/donetick-notifier
environment: environment:
DONETICKHOST: host.docker.internal - DONETICKHOST=host.docker.internal
DONETICKPORT: "8787" - DONETICKPORT=8787
DONETICKAPIKEY: your-donetick-api-key - DONETICKAPIKEY=your-donetick-api-key
APPRISEWEBHOOKURL: https://apprise.example.com/notify/config - APPRISEWEBHOOKURL=https://apprise.example.com/notify/config
APPRISEWEBHOOKTAG: all - APPRISEWEBHOOKTAG=all
- NOTIFICATIONTIMES=8,12,17
- TZ=America/Chicago
``` ```
Run it with: Run it with:
```sh ```sh
docker compose run --rm donetick-notifier docker compose up -d
``` ```
If Donetick and Apprise are running on the same Docker network, use the service names instead of `host.docker.internal`. If Donetick and Apprise are running on the same Docker network, use the service names instead of `host.docker.internal`.
@@ -73,13 +86,15 @@ If Donetick and Apprise are running on the same Docker network, use the service
```yaml ```yaml
services: services:
donetick-notifier: donetick-notifier:
image: docker.io/blinkfink182/donetick-notifier:latest image: docker.io/blinkfink182/donetick-notifier
environment: environment:
DONETICKHOST: donetick - DONETICKHOST=donetick
DONETICKPORT: "8787" - DONETICKPORT=8787
DONETICKAPIKEY: your-donetick-api-key - DONETICKAPIKEY=your-donetick-api-key
APPRISEWEBHOOKURL: http://apprise:8000/notify/config - APPRISEWEBHOOKURL=http://apprise:8000/notify/config
APPRISEWEBHOOKTAG: all - APPRISEWEBHOOKTAG=all
- NOTIFICATIONTIMES=8,12,17
- TZ=America/Chicago
``` ```
## Build Locally ## Build Locally
@@ -89,12 +104,15 @@ docker build -t donetick-notifier .
``` ```
```sh ```sh
docker run --rm \ docker run -d \
--name donetick-notifier \
-e DONETICKHOST=host.docker.internal \ -e DONETICKHOST=host.docker.internal \
-e DONETICKPORT=8787 \ -e DONETICKPORT=8787 \
-e DONETICKAPIKEY=your-donetick-api-key \ -e DONETICKAPIKEY=your-donetick-api-key \
-e APPRISEWEBHOOKURL=https://apprise.example.com/notify/config \ -e APPRISEWEBHOOKURL=https://apprise.example.com/notify/config \
-e APPRISEWEBHOOKTAG=all \ -e APPRISEWEBHOOKTAG=all \
-e NOTIFICATIONTIMES=8,12,17 \
-e TZ=America/Chicago \
donetick-notifier donetick-notifier
``` ```
@@ -108,29 +126,28 @@ $env:DONETICKPORT = "8787"
$env:DONETICKAPIKEY = "your-donetick-api-key" $env:DONETICKAPIKEY = "your-donetick-api-key"
$env:APPRISEWEBHOOKURL = "https://apprise.example.com/notify/config" $env:APPRISEWEBHOOKURL = "https://apprise.example.com/notify/config"
$env:APPRISEWEBHOOKTAG = "all" $env:APPRISEWEBHOOKTAG = "all"
$env:NOTIFICATIONTIMES = "8,12,17"
pwsh ./Start-DoneTickNotifier.ps1 pwsh ./Start-DoneTickNotifier.ps1
``` ```
The script runs continuously. Stop it with `Ctrl+C` when running interactively.
## CI/CD ## CI/CD
This repository includes Gitea workflows for: This repository includes Gitea workflows for:
- Building and pushing the Docker image. - Building and pushing the Docker image on demand.
- Running security checks with Gitleaks, Semgrep, and Trivy. - Running security checks with Gitleaks, Semgrep, and Trivy.
- Creating Gitea issues for security findings when configured with a `GITEA_TOKEN`. - Creating Gitea issues for security findings when configured with a `GITEA_TOKEN`.
- Sending Apprise notifications for Docker build success or failure. - Sending Apprise notifications for Docker build success or failure.
The Docker build workflow tags images as: The security workflow runs on pushes, pull requests, and manual dispatch. On pushes, it also pushes the scanned Docker image when all checks pass.
Docker images are tagged as:
| Branch or ref | Image tag | | Branch or ref | Image tag |
| --- | --- | | --- | --- |
| `main` | `latest` | | `main` | `latest` |
| refs beginning with `v` | matching ref name, such as `v1.0.0` | | refs beginning with `v` | matching ref name, such as `v1.0.0` |
| all other refs | `test` | | all other refs | `test` |
## AI Assistance Disclosure
OpenAI Codex was used to help create this README and the Gitea pipeline files in this repository.
All released application code is written by the repository owner.