Property
Property Image
Upload an aerial photo or map of your property. It is used to mark event locations. Uploading a new image keeps the previous ones, so events recorded against an older image still display correctly.
Loading...
Previous Images
Older property images are kept for historic events. You can switch back to one at any time.
Routes
Draw census survey routes (spotlight routes, stand transects, etc.) on your current property image. Routes can be attached to Census events in the Activity Log, and re-using the same route keeps your counts comparable year over year.
Loading...
Draw New Route
Click along the route on the map to add points — green dot marks the start, red the end. Click a point to select it, then use Delete Point to remove it, or Clear to start the route over.
Photos
Photo Downscaling
Photos straight off a phone can be 5–10 MB each. Downscaling them on upload keeps the app fast and backups small while staying plenty sharp for reports. This applies to newly added photos only — existing photos are unchanged.
Calendar
Season Calendar Data
The home page Season Calendar can show exact TPWD season dates, MLDP deadlines, and habitat windows from an imported calendar file. Until one is imported, a small built-in starter calendar with approximate dates is used. Season dates change every year — regenerate and re-import each spring.
Loading...
Display Filters
Hide calendar events that don't apply to your ranch — uncheck ecoregions you're not in, species you don't manage, or event types you don't care about. Unchecked values are hidden from the home page Season Calendar. Statewide events (ecoregion "all") always show.
AI Instructions — Generate a New Calendar
Copy these instructions into an AI assistant that has web access (so it can verify current TPWD season dates). It will produce a
tpwd_wildlife_management_calendar.json file you can import above.View instructions
# AI Generation Instructions: TPWD Wildlife Management Calendar JSON
## Purpose
You (the AI) are generating a JSON data file of important dates for a wildlife manager operating a Texas ranch under a TPWD Wildlife Management Plan (1-d-1 wildlife tax valuation). The consuming application expects a **static schema and fixed enumerations**. You may update dates, details, and add/remove events as regulations change, but you must NEVER change schema field names, group names, category values, species values, or type values. If new content does not fit an existing enum value, use the closest existing value and explain in `details` — do not invent new enum values.
---
## Step 1 — Determine the season year
1. Use today's date. TPWD hunting seasons run roughly September–August and are labeled by split year (e.g., "2026-2027").
2. TPWD typically approves and publishes next season's dates in **late March / early April**.
3. Rule: if today is **on or after April 15**, target the season starting that fall (e.g., on 2027-05-01, target "2027-2028"). If before April 15, target the season currently in progress or about to be published; if the upcoming season's dates are not yet published, use the most recent published season and say so in `meta.disclaimer`.
4. Set `meta.season_year` accordingly.
## Step 2 — Research (mandatory, do not rely on memory)
You MUST verify dates from primary sources via web search/fetch. Season dates change every year. Never output remembered dates without verification.
Fetch, in priority order:
1. **Official season dates page** (substitute the target years):
`https://tpwd.texas.gov/regulations/outdoor-annual/hunting/{YYYY}-{YYYY+1}-hunting-season-dates`
This single page contains: javelina, mule deer, pronghorn, squirrel, white-tailed deer, chachalaca, pheasant, quail, turkey (fall/spring/youth), dove, duck, goose, rails, sandhill crane, snipe, teal, woodcock, alligator, rabbits. It is the authoritative source for all `type: "season"` events.
2. **TPW Commission regulation news release** (search: `TPW Commission approves {YYYY}-{YYYY+1} hunting regulations`) — capture notable regulation changes (county closures, bag-limit changes, zone restructures). Encode each significant change as a `type: "regulation"` event in the affected species group and/or mention in `details` of affected season events.
3. **MLDP program page / news release** (search: `TPWD MLDP enrollment {YYYY}`) — verify Conservation Option enrollment window (historically ~April 1/2/5 – June 15), Harvest Option window (historically May 1 – Sep 1), and the April 1 harvest/habitat reporting deadline. If unchanged, keep historical dates.
4. If any fetch fails, fall back to web search snippets from tpwd.texas.gov domains only for season dates. Third-party sites (blogs, license vendors) may be used only for cross-checking, never as the sole source — they frequently publish wrong dates.
## Step 3 — Compute administrative and recurring dates
These rules are stable year over year; compute concrete dates for the target cycle:
| Event | Rule |
|---|---|
| 1-d-1 WMP filing deadline | April 30 of the spring following the fall season start |
| PWD 888 annual report due | Last day of February (Feb 28, or Feb 29 in leap years) |
| MLDP Year begins | March 1 |
| MLDP reporting deadline | April 1 |
| MLDP Conservation Option enrollment | ~Apr 1 – Jun 15 (verify) |
| MLDP Harvest Option enrollment | May 1 – Sep 1 (verify) |
| Licenses on sale | Aug 15 of season start year |
| License year begins / HIP | Sep 1 of season start year |
| Property tax protest deadline | May 15 (note "typical; varies by notice date") |
| Drawn hunt applications | Jul 1 – Oct 15 of season start year |
Biology/habitat windows (fawning, rut, nesting, burns, plantings, surveys, stress periods) are ecological constants — keep the month/day windows from the reference event list below, updating only the year.
**Seasonal markers:** include the four astronomical season starts that fall within the calendar cycle (Sep 1 of the season start year through Aug 31 of the following year). Equinox/solstice dates shift by a day between years, so VERIFY the exact dates for the target years (search: `equinox solstice dates {YYYY}` / `{YYYY+1}`) rather than assuming. Typical ranges: autumnal equinox Sep 22–23; winter solstice Dec 21–22; spring (vernal) equinox Mar 19–20; summer solstice Jun 20–21. Each is a single-day event (no `end_date`, no `recurrence` since the date varies). In `details`, note the corresponding meteorological season start (Sep 1, Dec 1, Mar 1, Jun 1) and one ranch-relevant cue (e.g., spring → green-up and start of nesting season; fall → cool-season planting and migration).
## Step 4 — Build the JSON
### Schema (FROZEN — do not alter)
```json
{
"meta": {
"title": "TPWD Wildlife Management Calendar",
"description": "string",
"season_year": "YYYY-YYYY",
"generated": "YYYY-MM-DD",
"sources": ["url", "..."],
"disclaimer": "string",
"ecoregions": ["ALWAYS the complete ECOREGION enum excluding \"all\", in enum order — include every ecoregion even if no event in this file references it (the app builds its region filter UI from this list)"]
},
"groups": [
{
"group": "string (from GROUP enum)",
"category": "string (from CATEGORY enum)",
"species": "string (from SPECIES enum; OMIT field when category is 'general' or 'habitat')",
"events": [
{
"name": "string",
"start_date": "YYYY-MM-DD (optional only for no-closed-season or pure-recurring items)",
"end_date": "YYYY-MM-DD (optional; omit for single-day events)",
"recurrence": "annual | monthly (optional; omit for one-time/season-specific events)",
"type": "string (from TYPE enum)",
"icon": "string (from ICON enum; REQUIRED on every event; assigned by the deterministic algorithm in 'Art assignment')",
"emoji": "string (single emoji; REQUIRED; must be the exact emoji mapped to the icon in the ICON→EMOJI table)",
"ecoregion": ["array of strings from ECOREGION enum; REQUIRED; use [\"all\"] unless the event is geographically limited per the Ecoregion assignment rules"],
"details": "string (optional but strongly encouraged)",
"more_info_url": "https URL (optional but strongly encouraged; an authoritative public page — prefer tpwd.texas.gov — where the user can read more about the event)"
}
]
}
]
}
```
### Enumerations (FROZEN)
**GROUP (exactly these 10, in this order):**
1. `General & Administrative`
2. `White-tailed Deer`
3. `Mule Deer`
4. `Wild Turkey`
5. `Quail (Bobwhite & Scaled)`
6. `Dove`
7. `Waterfowl & Migratory Birds`
8. `Other Game Species`
9. `Habitat Management & Nongame`
10. `Seasonal & Astronomical`
**CATEGORY:** `general` | `species` | `habitat` | `seasonal`
Mapping: group 1 → `general`; groups 2–8 → `species`; group 9 → `habitat`; group 10 → `seasonal`.
**SPECIES:** `white_tailed_deer` | `mule_deer` | `wild_turkey` | `quail` | `dove` | `waterfowl` | `other_game`
Mapping: groups 2–8 in order. Pronghorn, javelina, squirrel, pheasant, chachalaca, alligator, feral hogs, rabbits all live inside `other_game`. The `species` field is OMITTED on groups 1, 9, and 10.
**TYPE:** `season` | `deadline` | `enrollment` | `license` | `program` | `opportunity` | `survey` | `biology` | `habitat` | `management` | `restriction` | `regulation` | `recordkeeping` | `seasonal`
**ECOREGION (FROZEN — Texas Gould ecoregions plus `all`):**
`all` | `pineywoods` | `gulf_prairies_marshes` | `post_oak_savannah` | `blackland_prairies` | `cross_timbers` | `south_texas_plains` | `edwards_plateau` | `rolling_plains` | `high_plains` | `trans_pecos`
The `ecoregion` field is always an **array**. Statewide or region-independent events get exactly `["all"]`. Geographically limited events get the applicable ecoregion value(s) and never include `"all"` alongside specific values.
`meta.ecoregions` must ALWAYS list the complete enum (all 10 values, excluding `all`), in enum order, even when no event in the file references a given ecoregion — the consuming app builds its region filter UI from this list, not from the events.
**Ecoregion assignment rules (apply in order):**
1. **Hunting zones are NOT ecoregions.** TPWD North/South/Central deer, dove, duck, and turkey zones are regulatory boundaries that cut across ecoregions — zone-split season events keep `["all"]` with the zone in `name`. Do not translate "South Zone" into `south_texas_plains`.
2. **Fixed mapping table** — use these exact assignments for the recurring region-limited events:
| Event | ecoregion |
|---|---|
| Mule deer seasons — Panhandle | `["high_plains", "rolling_plains"]` |
| Mule deer seasons — Trans-Pecos | `["trans_pecos"]` |
| Mule deer rut & herd surveys (full range) | `["high_plains", "rolling_plains", "trans_pecos"]` |
| Pronghorn season | `["high_plains", "rolling_plains", "trans_pecos"]` |
| Pheasant (Panhandle/South Plains) | `["high_plains"]` |
| Chachalaca (LRGV counties) | `["south_texas_plains"]` |
| Squirrel — East Texas (incl. youth weekend) | `["pineywoods", "post_oak_savannah"]` |
| Javelina (both zones) | `["south_texas_plains", "trans_pecos", "edwards_plateau"]` |
| Alligator — core counties | `["gulf_prairies_marshes", "pineywoods"]` |
| Spring turkey — East Texas (Eastern turkey) | `["pineywoods"]` |
| Golden-cheeked warbler restriction window | `["edwards_plateau", "cross_timbers"]` |
| Duck — High Plains Mallard Management Unit | `["high_plains"]` |
| Sandhill crane zones | `["high_plains", "rolling_plains", "gulf_prairies_marshes", "south_texas_plains"]` |
| Wetland/moist-soil flooding & drawdowns | `["all"]` (any ranch with wetland units) |
3. **New region-limited events** (e.g., a county-cluster closure or a new region-specific season): map the named counties/area to Gould ecoregions, citing the TPWD source in `details`. If the mapping is ambiguous or you cannot verify it, use `["all"]` and note the geographic limitation in `details` — never guess a specific ecoregion.
4. Everything else — all administrative, license, MLDP, seasonal/astronomical, statewide seasons, biology windows, and habitat practices — gets `["all"]`.
Type semantics:
- `season` — legal hunting season windows (from the TPWD page only)
- `deadline` — hard filing/reporting dates with consequences
- `enrollment` — program signup windows
- `license` — license/endorsement purchases and license-year events
- `program` — program cycle markers (e.g., MLDP Year begins)
- `opportunity` — optional applications (drawn hunts)
- `survey` — census/monitoring activities
- `biology` — natural events (rut, fawning, nesting, antler shed)
- `habitat` — active habitat practices (burns, plots, disking, wetland flooding, nest boxes)
- `management` — ongoing operational tasks (feeders, water, hog control, stress-period support)
- `restriction` — windows to AVOID activities (nesting-season clearing limits, GCW window)
- `regulation` — notable rule changes for the target season
- `recordkeeping` — documentation tasks for PWD 888
- `seasonal` — astronomical/meteorological season markers (equinoxes, solstices)
### Art (FROZEN) — icons and emoji
Every event carries two static art fields: `icon` (a stable identifier the application maps to its own SVG/icon assets) and `emoji` (a renderable fallback). Do NOT generate inline SVG, image URLs, base64 data, or free-form art descriptions — those are not reproducible. Art is expressed ONLY through these two fields, and identical events must receive identical art on every regeneration.
**ICON enum (exactly these values):**
`whitetail` | `muledeer` | `turkey` | `quail` | `dove` | `waterfowl` | `javelina` | `pronghorn` | `squirrel` | `pheasant` | `chachalaca` | `alligator` | `hog` | `rabbit` | `antler` | `fawn` | `nest` | `nest-box` | `paw` | `binoculars` | `fire` | `seedling` | `water-drop` | `feed` | `gear` | `calendar-alert` | `clipboard` | `id-card` | `flag` | `target` | `no-entry` | `gavel` | `notebook` | `flower` | `sun` | `leaf` | `snowflake`
**ICON → EMOJI table (use these exact pairings; do not substitute):**
| icon | emoji | icon | emoji | icon | emoji |
|---|---|---|---|---|---|
| whitetail | 🦌 | muledeer | 🦌 | turkey | 🦃 |
| quail | 🐦 | dove | 🕊️ | waterfowl | 🦆 |
| javelina | 🐗 | pronghorn | 🦌 | squirrel | 🐿️ |
| pheasant | 🦚 | chachalaca | 🐦 | alligator | 🐊 |
| hog | 🐗 | rabbit | 🐇 | antler | 🦌 |
| fawn | 🦌 | nest | 🪺 | nest-box | 🏠 |
| paw | 🐾 | binoculars | 🔎 | fire | 🔥 |
| seedling | 🌱 | water-drop | 💧 | feed | 🌾 |
| gear | ⚙️ | calendar-alert | 📅 | clipboard | 📋 |
| id-card | 🪪 | flag | 🚩 | target | 🎯 |
| no-entry | 🚫 | gavel | ⚖️ | notebook | 📓 |
| flower | 🌸 | sun | ☀️ | leaf | 🍂 |
| snowflake | ❄️ | | | | |
**Art assignment algorithm (apply rules in order; first match wins):**
1. `type: "seasonal"` → by season: Spring → `flower`; Summer → `sun`; Fall/Autumn → `leaf`; Winter → `snowflake`.
2. `type: "season"` → species icon by group: White-tailed Deer → `whitetail`; Mule Deer → `muledeer`; Wild Turkey → `turkey`; Quail → `quail`; Dove → `dove`; Waterfowl & Migratory Birds → `waterfowl`. Other Game Species → match the animal in the event `name`: javelina → `javelina`; pronghorn → `pronghorn`; squirrel → `squirrel`; pheasant → `pheasant`; chachalaca → `chachalaca`; alligator → `alligator`; rabbit → `rabbit`.
3. `type: "biology"` → name contains "Fawning" → `fawn`; name contains "Rut" or "Antler" → `antler`; name contains "Nesting", "brood", or "poult" → `nest`; otherwise → `paw`.
4. `type: "survey"` → `binoculars`.
5. `type: "habitat"` → name contains "burn" → `fire`; name contains "Nest box" → `nest-box`; name contains "moist-soil", "wetland", "drawdown", or "Flood" → `water-drop`; otherwise (planting, disking, brush, half-cutting) → `seedling`.
6. `type: "management"` → name contains "hog" → `hog`; name contains "water" → `water-drop`; name contains "stress" or "feeder" → `feed`; otherwise → `gear`.
7. Remaining types map 1:1: `deadline` → `calendar-alert`; `enrollment` → `clipboard`; `license` → `id-card`; `program` → `flag`; `opportunity` → `target`; `restriction` → `no-entry`; `regulation` → `gavel`; `recordkeeping` → `notebook`.
### Formatting rules
- All dates ISO `YYYY-MM-DD`. Multi-segment seasons (split dove/duck seasons): one event per segment where segments are listed separately on the TPWD page for dove; for duck/rails, a single event spanning first open day to last close is acceptable IF the split is spelled out in `details` (follow the reference list's pattern). Never silently merge gaps without noting them.
- Zone-specific seasons get separate events with the zone in `name` (e.g., "General season - North Zone").
- `recurrence: "annual"` only on events governed by stable rules (admin deadlines, biology windows, habitat practices, surveys). Season events for a specific year get NO recurrence field. Astronomical seasonal events get NO recurrence field (the exact date shifts between years).
- Every event MUST include `icon` and `emoji`, assigned strictly by the Art assignment algorithm and ICON→EMOJI table. Never improvise art.
- Every event MUST include `ecoregion` as an array — `["all"]` by default, specific values only per the Ecoregion assignment rules. Never mix `"all"` with specific values.
- `meta.generated` = today's date. `meta.sources` = the actual URLs you fetched.
- Include `more_info_url` on every event where an authoritative public page exists: season events → the TPWD season dates page or the species page in the Outdoor Annual; MLDP events → the TPWD MLDP program page; license events → the TPWD license page; drawn hunts → the TPWD drawn hunts page; habitat/biology events → a relevant TPWD or extension resource if one was encountered during research. Use only real URLs you actually visited or verified — NEVER fabricate or guess a link. Omit the field when no authoritative page applies.
- Output must be valid JSON (no comments, no trailing commas). Validate before delivering.
## Step 5 — Required event coverage (reference list)
Reproduce every event from the v2026-2027 reference file, updated to the target season. Minimum required events per group:
- **General & Administrative (10):** WMP filing Apr 30; PWD 888 due end of Feb; MLDP Year begins Mar 1; MLDP reporting Apr 1; MLDP CO enrollment; MLDP HO enrollment; licenses on sale Aug 15; license year/HIP Sep 1; tax protest May 15; drawn hunts Jul–Oct.
- **White-tailed Deer (15):** archery; youth early; general North; general South; special late North; special late South; muzzleloader; youth late; population surveys Aug 15–Oct 15; fawning May 15–Jul 15; rut Oct 15–Dec 31 (regional notes); antler shed/post-season census Feb–Mar; summer stress Jul–Aug; winter stress Jan–Feb.
- **Mule Deer (6):** archery Panhandle; archery Trans-Pecos; general Panhandle; general Trans-Pecos; rut Nov 15–Dec 31; herd composition surveys Aug–Sep.
- **Wild Turkey (14):** fall archery; fall North; fall South; fall four-county extended; spring South; spring North; spring one-turkey counties; spring East; spring youth South; spring youth North; current-season regulation changes; nesting Mar–Jun; winter roost counts Jan–Feb; hen:poult surveys Jun–Aug.
- **Quail (5):** season; spring call counts May–Jun; fall covey counts Oct; nesting/defer-mowing Apr–Aug; winter disking/half-cutting Jan–Feb.
- **Dove (9):** six zone/segment season events (N1, N2, C1, C2, S1, S2); plant fields Mar–Apr; prep fields/baiting check Aug; nesting Mar–Sep.
- **Waterfowl & Migratory Birds (14):** teal; early Canada goose East; duck HPMMU; duck North; duck South (youth/veteran weekends in details); geese West; geese East dark; geese East light; sandhill crane (Zone A as primary, B/C in details); rails/gallinules; snipe; woodcock; flood moist-soil units Aug 15–Oct 15; drawdowns Feb 15–Apr 30.
- **Other Game (9):** javelina North; javelina South; pronghorn; squirrel East Texas (spring season + youth weekend in details); pheasant; chachalaca; alligator core counties (other counties in details); feral hog control winter emphasis; rabbits no closed season (no start_date).
- **Habitat Management & Nongame (10):** dormant-season burns Dec–Feb; growing-season burns Aug–Sep; nesting restriction Mar 1–Aug 31 (GCW Mar 1–Jul 31 in details); brush management window Sep–Feb; cool-season plots Sep 15–Oct 31; warm-season plots Mar–Apr; nest boxes Jan–Feb; winter bird counts mid-Dec–mid-Feb; supplemental water May–Sep; monthly PWD 888 log (recurrence "monthly", no dates).
- **Seasonal & Astronomical (4):** "Start of Fall (Autumnal Equinox)"; "Start of Winter (Winter Solstice)"; "Start of Spring (Vernal Equinox)"; "Start of Summer (Summer Solstice)" — exact verified dates for the target cycle, in chronological order (Fall and Winter in the season start year; Spring and Summer in the following year). Use these exact name patterns so icon assignment and app display are stable.
If TPWD adds, removes, or restructures a season (e.g., a county closure, eliminated season, new zone), reflect it: drop events that no longer exist, add new season events within the existing groups/enums, and add a `type: "regulation"` event describing the change.
## Step 6 — Validation checklist (run before output)
1. Valid JSON; parses cleanly.
2. Every `group`, `category`, `species`, `type`, `recurrence`, and `icon` value is in the frozen enums; `species` omitted on general/habitat/seasonal groups.
3. All 10 groups present, in order; event counts meet or exceed the minimums above.
4. Every `type: "season"` date matches the official TPWD page fetched in Step 2 — spot-check at least: white-tailed general openers, spring turkey zones, dove Sep 1 openers, teal, quail Nov 1.
5. `end_date` ≥ `start_date` everywhere; dates use the correct calendar years (fall dates = season start year; spring dates = following year).
6. Leap-year check on the Feb "last day" deadlines.
7. Every event has both `icon` and `emoji`; each `emoji` matches its `icon` per the ICON→EMOJI table; re-run the Art assignment algorithm on a sample of 5 events across different types and confirm the output matches.
8. Every event has an `ecoregion` array containing only ECOREGION enum values; `"all"` is never combined with specific values; every entry in the fixed mapping table matches exactly; no hunting zone (North/South/Central) was misread as an ecoregion. `meta.ecoregions` contains all 10 enum values (excluding `all`) in enum order.
9. The four seasonal events carry verified (not assumed) equinox/solstice dates for the target years and follow the exact "Start of ..." name patterns.
10. `meta.sources` lists real fetched URLs; `meta.disclaimer` notes county/zone variation and instructs verification against the Outdoor Annual and the user's CAD.
11. Every `more_info_url` is a real https URL captured during research (no invented links) pointing to an authoritative domain — prefer tpwd.texas.gov. Spot-check at least 3 by confirming they appeared in your fetched/search results.
## Output
Deliver a single file named `tpwd_wildlife_management_calendar.json` containing only the JSON object. Also provide a short human-readable summary of what changed versus the prior season (date shifts, regulation changes, added/removed events).Rainfall
Historical Rainfall Data
Log rain-gauge readings as Rainfall entries in the Activity Log; the Census Trends page totals them by month and year. Importing regional history here fills in the years before you started logging, so your gauge readings have context — your own readings always take priority for any month you logged.
Loading...
AI Instructions — Generate Historical Rainfall
Copy these instructions into an AI assistant that has web access (so it can pull real station records for your area). It will produce a
rainfall_history.json file you can import above.View instructions
# AI Generation Instructions: Historical Rainfall JSON
## Purpose
You (the AI) are generating a JSON data file of historical monthly rainfall for a specific location. The file is imported into a ranch wildlife-management app, which charts it next to the owner's own rain-gauge readings and wildlife census trends. The schema below is fixed — never change field names or the format string.
## Step 1 — Ask for the location
If the user has not already told you, ask where the property is: the nearest town and county, plus the state (e.g., "near Llano, Llano County, Texas"). Do not proceed without a location.
## Step 2 — Research (mandatory, do not rely on memory)
You MUST pull monthly precipitation totals from real station records via web search/fetch — never output remembered or "typical" values.
Preferred sources, in order:
1. NOAA NCEI climate data (ncei.noaa.gov) — monthly summaries for the nearest long-term station
2. NWS climate pages (weather.gov) for the covering forecast office
3. The state climatologist's office (for Texas: climatexas.tamu.edu)
4. USDA / Texas A&M AgriLife records for the county
Coverage: the most recent 10 full calendar years, plus any completed months of the current year. Pick the station nearest the property with a complete record; name it in "region". If a month is missing from the station record, omit that month entirely — never interpolate or guess.
## Step 3 — Output
Produce ONE file named rainfall_history.json and nothing else (no commentary inside the file). Exact schema:
{
"format": "wildlife-rainfall-history",
"region": "Llano County, TX — Llano municipal airport station",
"source": "NOAA NCEI monthly summaries, station USW00003999",
"generated": "YYYY-MM-DD",
"monthly": [
{ "year": 2016, "month": 1, "inches": 1.42 },
{ "year": 2016, "month": 2, "inches": 0.88 }
]
}
Rules:
- "format" must be exactly "wildlife-rainfall-history" — the app rejects anything else.
- "year" and "month" (1–12) and "inches" are JSON numbers, never strings; inches uses up to two decimals; a dry month is 0, not omitted (omit only months genuinely missing from the record).
- One object per month, sorted by year then month, no duplicate year+month pairs.
- "generated" is today's date.
- Every value must come from the researched record — if you could not verify a period, leave it out and say so in "source".Preferences
Appearance
Dark mode dims the whole app for low-light use — photos and property maps keep their true colors. This is a per-device preference and is not included in backups or sync.
Data Management
🔒 Your data lives only in this browser. Nothing is sent to this site's server. If the browser's data is cleared or the device is lost and you have no backup, it's gone for good — so back it up regularly with one of the options below.
Back up your data
Saves everything — plan, reports, activity log, photos, property images, and routes — to a single file you keep somewhere safe (a cloud drive, USB stick, etc.).
Restore from a backup
Load a backup file created by this app. You'll choose whether to replace the current data or merge the backup in alongside it.
Sync across devices (optional)
Keep a copy in your own Google Drive and sync it automatically between devices, so you don't have to remember manual backups. Your data (including the personal details in your plan) leaves this browser and is stored in your Google account — leave this off if you prefer strictly local storage.
First-time setup
Sync needs a free Google OAuth Client ID so Google knows this app is yours. Paste it below — it's stored only in this browser.
How to get a Client ID
In Google Cloud Console: create a project → enable the Google Drive API → configure the OAuth consent screen (External, with just yourself as a test user is fine) → create an OAuth client ID of type Web application with this site's address as an authorized JavaScript origin.
Google Sync
Disconnecting stops syncing from this browser and revokes its access. The copy already in your Google Drive is not deleted — manage it under Google Drive → Settings → Manage apps.
Troubleshooting
Copies a diagnostic record of recent sync events to your clipboard. If sync gets stuck on “Sync paused,” paste this when reporting the problem — it contains no personal data or credentials.
Clear All Data
Permanently deletes the plan, all reports, the entire activity log, every photo, property image, and route. This cannot be recovered. Export an archive backup first.
App Info
App: Ranch Wildlife Management Tool (unofficial)
Version: —
Forms: PWD 885-W7000 (Wildlife Management Plan) · PWD 888-W7000 (Annual Report)
An independent tool for landowners in TPWD's 1-D-1 wildlife valuation programs. Not affiliated with or endorsed by the Texas Parks and Wildlife Department.
All app data is stored locally in this browser (IndexedDB) — nothing is ever uploaded to or stored on a server. Use Data Export & Restore to back up and move your data between devices.
Welcome tour
New to the app, or want a refresher? Replay the first-run welcome tour — the overview and getting-started walkthrough that appears the first time you open the Home page.
This tool is free and open-source. If it’s saved you time and you’d like to help cover hosting costs — or just say thanks — you can buy me a coffee ☕. Entirely optional, and always appreciated.