<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="1">
<package type="rpm">
  <name>turf-tracker</name>
  <arch>x86_64</arch>
  <version epoch="0" ver="0.5.0" rel="1.fc43"/>
  <checksum type="sha256" pkgid="YES">f0a4a53a3181d03311f66ef50fb3c5e6d4b68d285e7d16b9c749f705620400a9</checksum>
  <summary>Mobile-first PWA for area-based plant nutrition tracking</summary>
  <description>Mobile-first PWA that answers "what should I do right now in this
area?" for any cultivated piece of ground — lawn, bed, tree, garden.
Computes exact application rates from soil tests + product specs at
the moment of decision; logging is a side-effect of using the field
tool, not the primary mode.

Built on Next.js 16 (App Router) with a custom server entrypoint,
Prisma 7 on Postgres, Better-Auth (email/password, argon2id-hashed
with server-side pepper), Tailwind v4, Serwist for the service
worker, and Sentry for error + performance monitoring.

Ships:
  - Pre-built Next.js tree at /usr/share/turf-tracker/
  - Custom server entrypoint (server.js), pre-compiled seed runner
    (bin/seed.js), and operational CLI core (bin/turf.js)
  - CLI wrapper at /usr/bin/turf — sources the two-layer env and
    execs node-24 against the CLI core
  - Prisma schema + migrations for runtime apply via migrate oneshot
  - systemd service unit + migration oneshot + seed oneshot
  - Opt-in upgrade path/service pair: turf-tracker-upgrade.path
    watches package.json for changes and triggers
    turf-tracker-upgrade.service (which runs `turf upgrade`) when an
    RPM upgrade lands. Enable with
    `sudo systemctl enable --now turf-tracker-upgrade.path`.
  - First-install bootstrap via `turf setup` — auto-generates secret
    keys, prompts for required URLs/DB, writes
    /etc/sysconfig/turf-tracker at 0600, offers to enable+start the
    service, and offers to create the first user.
  - `turf backup` / `turf restore` — single-tarball backup tool;
    bundles pg_dump custom-format dump + (when STORAGE_PATH is set)
    a storage tar + sysconfig.env into one .tar.gz under
    /var/backups/turf-tracker/. flock'd against concurrent
    backup/restore.
  - `turf status` — composite health check (env, DB, services,
    Path-unit opt-in state, /api/health).
  - tmpfiles.d snippet for the /var/lib + /var/cache + /var/backups
    + /run state dirs
  - sysusers.d snippet declaring the 'turf-tracker' system user
  - Canonical default env at /usr/lib/turf-tracker/default.env
  - Apache reverse-proxy snippet at /usr/share/turf-tracker/
    apache-snippet.conf (operator Include's it from their own vhost)

Operator-owned, NOT shipped here:
  - The Apache vhost itself (TLS, ServerName, log paths — all host-
    specific)
  - The env override file at /etc/sysconfig/turf-tracker (optional
    drop-in over the canonical default; carries real secrets)
  - The Postgres database itself (DATABASE_URL points at it)
  - Optional OnFailure drop-in at /etc/systemd/system/
    turf-tracker.service.d/notify.conf for failure-email</description>
  <packager></packager>
  <url>https://github.com/Vigario-Technology-Solutions/turf-tracker</url>
  <time file="1778634109" build="1778633254"/>
  <size package="163367101" installed="1000112847" archive="1012147084"/>
  <location href="turf-tracker-0.5.0-1.fc43.x86_64.rpm"/>
  <format>
    <rpm:license>AGPL-3.0-or-later</rpm:license>
    <rpm:vendor></rpm:vendor>
    <rpm:group>Unspecified</rpm:group>
    <rpm:buildhost>tylervigario</rpm:buildhost>
    <rpm:sourcerpm>turf-tracker-0.5.0-1.fc43.src.rpm</rpm:sourcerpm>
    <rpm:header-range start="4504" end="8876593"/>
    <rpm:provides>
      <rpm:entry name="group(turf-tracker)"/>
      <rpm:entry name="libvips-cpp.so.8.17.3()(64bit)"/>
      <rpm:entry name="turf-tracker" flags="EQ" epoch="0" ver="0.5.0" rel="1.fc43"/>
      <rpm:entry name="turf-tracker(x86-64)" flags="EQ" epoch="0" ver="0.5.0" rel="1.fc43"/>
      <rpm:entry name="user(turf-tracker)" flags="EQ" epoch="0" ver="dSB0dXJmLXRyYWNrZXIgLSAidHVyZi10cmFja2VyIHNlcnZpY2UgYWNjb3VudCIgL3Zhci9saWIvdHVyZi10cmFja2VyIC9zYmluL25vbG9naW4A"/>
    </rpm:provides>
    <rpm:requires>
      <rpm:entry name="/bin/bash"/>
      <rpm:entry name="/bin/sh" pre="1"/>
      <rpm:entry name="/bin/sh"/>
      <rpm:entry name="/usr/bin/env"/>
      <rpm:entry name="ld-linux-x86-64.so.2()(64bit)"/>
      <rpm:entry name="ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)"/>
      <rpm:entry name="libcrypto.so.3()(64bit)"/>
      <rpm:entry name="libcrypto.so.3(OPENSSL_3.0.0)(64bit)"/>
      <rpm:entry name="libdl.so.2()(64bit)"/>
      <rpm:entry name="libdl.so.2(GLIBC_2.2.5)(64bit)"/>
      <rpm:entry name="libgcc_s.so.1()(64bit)"/>
      <rpm:entry name="libgcc_s.so.1(GCC_3.0)(64bit)"/>
      <rpm:entry name="libgcc_s.so.1(GCC_3.3)(64bit)"/>
      <rpm:entry name="libgcc_s.so.1(GCC_3.3.1)(64bit)"/>
      <rpm:entry name="libgcc_s.so.1(GCC_4.2.0)(64bit)"/>
      <rpm:entry name="libm.so.6()(64bit)"/>
      <rpm:entry name="libm.so.6(GLIBC_2.2.5)(64bit)"/>
      <rpm:entry name="libpthread.so.0()(64bit)"/>
      <rpm:entry name="libpthread.so.0(GLIBC_2.12)(64bit)"/>
      <rpm:entry name="libpthread.so.0(GLIBC_2.18)(64bit)"/>
      <rpm:entry name="libpthread.so.0(GLIBC_2.2.5)(64bit)"/>
      <rpm:entry name="libpthread.so.0(GLIBC_2.3.2)(64bit)"/>
      <rpm:entry name="libpthread.so.0(GLIBC_2.3.4)(64bit)"/>
      <rpm:entry name="libresolv.so.2()(64bit)"/>
      <rpm:entry name="libresolv.so.2(GLIBC_2.2.5)(64bit)"/>
      <rpm:entry name="librt.so.1()(64bit)"/>
      <rpm:entry name="librt.so.1(GLIBC_2.2.5)(64bit)"/>
      <rpm:entry name="libssl.so.3()(64bit)"/>
      <rpm:entry name="libssl.so.3(OPENSSL_3.0.0)(64bit)"/>
      <rpm:entry name="libstdc++.so.6()(64bit)"/>
      <rpm:entry name="libstdc++.so.6(CXXABI_1.3)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(CXXABI_1.3.11)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(CXXABI_1.3.2)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(CXXABI_1.3.3)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(CXXABI_1.3.5)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(CXXABI_1.3.8)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(CXXABI_1.3.9)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(GLIBCXX_3.4)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(GLIBCXX_3.4.11)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(GLIBCXX_3.4.14)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(GLIBCXX_3.4.15)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(GLIBCXX_3.4.17)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(GLIBCXX_3.4.18)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(GLIBCXX_3.4.20)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(GLIBCXX_3.4.21)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(GLIBCXX_3.4.22)(64bit)"/>
      <rpm:entry name="libstdc++.so.6(GLIBCXX_3.4.9)(64bit)"/>
      <rpm:entry name="nodejs24"/>
      <rpm:entry name="rtld(GNU_HASH)"/>
      <rpm:entry name="systemd" pre="1"/>
      <rpm:entry name="systemd"/>
      <rpm:entry name="libc.so.6(GLIBC_2.25)(64bit)"/>
    </rpm:requires>
    <file>/usr/bin/turf</file>
    <file>/usr/share/turf-tracker/bin/cli-manifest.json</file>
    <file>/usr/share/turf-tracker/bin/seed.js</file>
    <file>/usr/share/turf-tracker/bin/turf.js</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/acorn</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/baseline-browser-mapping</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/browserslist</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/email</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/esbuild</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/giget</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/is-in-ci</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/jiti</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/jsesc</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/json5</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/marked</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/nanoid</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/next</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/node-which</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/nypm</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/parser</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/pglite-server</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/prettier</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/prisma</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/rc</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/rolldown</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/rollup</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/semver</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/sentry-cli</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/serwist</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/terser</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/tsc</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/tsserver</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/tsx</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/update-browserslist-db</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/vite</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/vitest</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/webpack</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/why-is-node-running</file>
    <file>/usr/share/turf-tracker/node_modules/.bin/yaml</file>
    <file>/usr/share/turf-tracker/node_modules/@babel/core/node_modules/.bin/semver</file>
    <file>/usr/share/turf-tracker/node_modules/@babel/core/node_modules/semver/bin/semver.js</file>
    <file>/usr/share/turf-tracker/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver</file>
    <file>/usr/share/turf-tracker/node_modules/@babel/helper-compilation-targets/node_modules/semver/bin/semver.js</file>
    <file>/usr/share/turf-tracker/node_modules/@babel/parser/bin/babel-parser.js</file>
    <file>/usr/share/turf-tracker/node_modules/@esbuild/linux-x64/bin/esbuild</file>
    <file>/usr/share/turf-tracker/node_modules/@sentry/cli-linux-x64/bin/sentry-cli</file>
    <file>/usr/share/turf-tracker/node_modules/@sentry/cli/bin/sentry-cli</file>
    <file>/usr/share/turf-tracker/node_modules/@sentry/cli/bin/sentry-cli-dev</file>
    <file>/usr/share/turf-tracker/node_modules/@serwist/next/node_modules/.bin/semver</file>
    <file>/usr/share/turf-tracker/node_modules/@serwist/next/node_modules/semver/bin/semver.js</file>
    <file>/usr/share/turf-tracker/node_modules/acorn/bin/acorn</file>
    <file>/usr/share/turf-tracker/node_modules/esbuild/bin/esbuild</file>
    <file>/usr/share/turf-tracker/node_modules/jsesc/bin/jsesc</file>
    <file>/usr/share/turf-tracker/node_modules/marked/bin/main.js</file>
    <file>/usr/share/turf-tracker/node_modules/marked/bin/marked.js</file>
    <file>/usr/share/turf-tracker/node_modules/nanoid/bin/nanoid.cjs</file>
    <file>/usr/share/turf-tracker/node_modules/next/dist/bin/next</file>
    <file>/usr/share/turf-tracker/node_modules/next/dist/bin/next.d.ts</file>
    <file>/usr/share/turf-tracker/node_modules/next/dist/bin/next.map</file>
    <file>/usr/share/turf-tracker/node_modules/prettier/bin/prettier.cjs</file>
    <file>/usr/share/turf-tracker/node_modules/react-email/node_modules/.bin/jiti</file>
    <file>/usr/share/turf-tracker/node_modules/react-email/node_modules/.bin/parser</file>
    <file>/usr/share/turf-tracker/node_modules/react-email/node_modules/@babel/parser/bin/babel-parser.js</file>
    <file>/usr/share/turf-tracker/node_modules/rolldown/bin/cli.mjs</file>
    <file>/usr/share/turf-tracker/node_modules/rollup/dist/bin/rollup</file>
    <file>/usr/share/turf-tracker/node_modules/semver/bin/semver.js</file>
    <file>/usr/share/turf-tracker/node_modules/terser/bin/package.json</file>
    <file>/usr/share/turf-tracker/node_modules/terser/bin/terser</file>
    <file>/usr/share/turf-tracker/node_modules/terser/bin/uglifyjs</file>
    <file>/usr/share/turf-tracker/node_modules/tsx/node_modules/.bin/esbuild</file>
    <file>/usr/share/turf-tracker/node_modules/tsx/node_modules/@esbuild/linux-x64/bin/esbuild</file>
    <file>/usr/share/turf-tracker/node_modules/tsx/node_modules/esbuild/bin/esbuild</file>
    <file>/usr/share/turf-tracker/node_modules/typescript/bin/tsc</file>
    <file>/usr/share/turf-tracker/node_modules/typescript/bin/tsserver</file>
    <file>/usr/share/turf-tracker/node_modules/vite/bin/openChrome.js</file>
    <file>/usr/share/turf-tracker/node_modules/vite/bin/vite.js</file>
    <file>/usr/share/turf-tracker/node_modules/webpack/bin/webpack.js</file>
    <file>/usr/share/turf-tracker/node_modules/which/bin/node-which</file>
  </format>
</package>
</metadata>