Skip to content

Add kestrel purchase planner to community train#5157

Open
CaptDany wants to merge 9 commits into
truenas:masterfrom
CaptDany:add-kestrel-app
Open

Add kestrel purchase planner to community train#5157
CaptDany wants to merge 9 commits into
truenas:masterfrom
CaptDany:add-kestrel-app

Conversation

@CaptDany

@CaptDany CaptDany commented Jun 11, 2026

Copy link
Copy Markdown

Summary

Adds Kestrel, a self-hosted purchase planner that calendarizes e-commerce purchases based on your paydays and budget.

Features

  • Price Extraction: Paste any product URL — Kestrel auto-extracts title, price, and currency from Amazon, MercadoLibre, Aliexpress, IKEA, and Walmart
  • Payday Scheduling: Configure monthly, biweekly, weekly, or custom payday schedules
  • Budget Modes: Per-payday, flexible (base + bonuses), or total pool
  • Smart Sorting: Sort items by price, priority, date added, or desired date
  • Saving Mode: Large items automatically save across multiple pay cycles
  • Optional Playwright Scraper: Sidecar container for JavaScript-heavy sites
  • Self-Hosted: Single Go binary (~15MB), SQLite-backed, no external dependencies

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4

Checklist

  • App follows TrueNAS contribution guidelines
  • app.yaml, item.yaml, ix_values.yaml, questions.yaml present
  • Jinja2 docker-compose.yaml template using library v2.3.4
  • Test values provided
  • Screenshots

CaptDany added 2 commits June 11, 2026 13:43
Kestrel is a self-hosted purchase planner that calendarizes
e-commerce purchases based on paydays and budget.

- Go backend with SQLite, chi router, htmx + Bulma frontend
- Price extraction for Amazon, MercadoLibre, Aliexpress, IKEA, Walmart
- Optional Playwright scraper sidecar for JS-heavy sites
- Single binary ~15MB, runs as UID 568
- Port 8000, persistence at /data
@CaptDany

Copy link
Copy Markdown
Author

Updated the PR with the following fixes based on the contribution guidelines:

  1. app.yaml: Fixed
    un_as_context\ format (user_name/group_name now use \Host user is [apps]\ / \Host group is [apps]\ per \generate_metadata.py\ output)
  2. app.yaml: Added catalog URL to \sources\ list
  3. questions.yaml: Added missing sections (
    un_as,
    etworks\ with container enum, \labels\ with container enum, \host_network, \certificate_id, \�dditional_envs,
    ead_only, \host_ips, SMB/NFS config)
  4. docker-compose.yaml: Added \�dditional_envs\ loop
  5. test_values/basic-values.yaml: Added \host_network, \certificate_id, \�dditional_envs; moved test port to 31012 (non-default)
  6. ix_values.yaml: Switched to \ghcr.io/\ prefix

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant