Documentation
Learn how to use every feature of SportingDogs
Getting Started
> New in 2.12.0: most of the site is now publicly browsable — share a link to a dog's brag sheet, an event, a club page, or a handler's résumé without making the recipient log in first. You only need an account to register for events, post to the feed, edit your dogs, or see contact info.
What you can do here
- Browse the field trial calendar — Sort and filter by date, state, region, association, participant type, and event type. Free-text search across event names, clubs, grounds.
- Save events to an itinerary — Plan your year of competitions in one place. Get reminder emails 7 days, 24 hours, and 2 hours before entries close.
- Register dogs and pay entry fees — Online registration with Stripe checkout for participating clubs. Eligibility checks built in.
- View brace assignments — See the running order once the club secretary has drawn braces. Multi-day scheduling supported.
- See post-event results — Per-event placements page with earned SRS Crown, Purina Retriever, and Purina Pointing-Dog points.
- Browse the season standings — Sortable leaderboards across every event for SRS Crown and all Purina award categories.
- Track your dogs' careers — Titles, health clearances, full results history table with year/sport filters.
- Browse host clubs — Public clubs directory at /clubs with upcoming events, contact info, and admin rosters.
Quick Start
- Sign in — SportingDogs.app is currently invite-only. Go to Sign In.
- Add your dogs — Click Add Dog to register breed, DOB, pedigree, registration org/number.
- Browse events — Click Events in the top nav to see upcoming SBHA-recognized field trials.
- Save & register — Tap the bookmark on any event to save it, or open the event and click "Register Dog" to enter stakes.
- Watch the standings — After each trial runs, /standings updates automatically with the new placements.
Field Trial Calendar
Browse Upcoming Events
The Events page lists every SBHA-recognized and partner-association field trial we have on file.Search
Above the filter drawer there's an always-visible search bar. Type any combination of words — it matches across event names, club names, grounds, city, and state in one query. The search persists in the URL (?q=...) so results are shareable.Filtering
Tap Filters at the top of the events page. You can combine any of:- Date range — From/To dates
- State — Filter by US state where the event is held
- Region — Northeast / Southeast / Midwest / Plains / West / Pacific (covers multiple states at once). Region overrides state — pick one or the other.
- Geo-radius — ZIP code or "Use my location" + radius (50–1000 mi). Distance shown on each result.
- Association — SBHA, NBHA, AFTCA, ABHA, USCSDA, NGSPA, NRSFTC, NVA
- Participant Type — Open / Amateur / Pro
- Event Type — Puppy, Derby, Shooting Dog (Walking, Horseback), Shooting Dog Derby, All Age, Cover Dog, Gun Dog, Youth
- Saved only — Show only events on your itinerary
Calendar vs List view
At the top of the page there's a List ↔ Calendar toggle. The calendar view shows a month grid with events as colored chips (yellow = on your itinerary). Click any tile to open the event detail.What each event card shows
- Association badges (SBHA, AFTCA, etc.)
- Purina Points / Eukanuba sponsor flags
- Date range and start time
- Host club, grounds location
- Number of stakes and entry-fee range
- Quick-save bookmark button
Where event data comes from
Club secretaries submit their events. Until your club is onboarded for direct submissions, events are populated from the American Field calendar and the SBHA upcoming events page.Saving Events / My Itinerary
Save events you're considering
On any event card or the event detail page, click the bookmark icon to save the event to your itinerary.My Itinerary
Open the user menu (top-right avatar) and click My Itinerary, or visit /events/saved. This page shows every event you've saved, sorted by date.Why save events?
- Plan your year of competitions in one view
- Get reminders as the entry-close date approaches (coming soon)
- Quick-access registration when you're ready to enter
Registering for an Event
How to register
- Open the event detail page from the calendar.
- Click Register Dog in the top-right of the Stakes section.
- For each stake you want to enter, pick which of your dogs should run. The picker only shows eligible dogs (correct age window for the stake).
- Review the entry fees at the bottom and click Pay & Register.
- You'll be taken to Stripe Checkout to complete payment by card.
- After payment, you're redirected back to the My Registrations page with confirmation.
Eligibility checks
The app validates each entry before payment:- Age window — Puppy stakes are 6–15 months at event start; Derby stakes are 6–24 months. Dogs outside the window are filtered from the picker.
- Ownership — You can only register dogs you own.
- Duplicates — A dog can't be entered in the same stake twice.
Free entries
Stakes with $0 entry fees (e.g. Youth Stakes) are confirmed instantly without going through Stripe.Manual / offline payment
For clubs not yet using Stripe, the registration is recorded with status "Pending" and the club secretary will contact you with payment instructions.My Registrations
Visit /registrations to see every entry you've submitted, grouped by event, with status badges:- Pending — Submitted but not yet paid
- Confirmed — Payment received, you're in
- Withdrawn — You or the club withdrew the entry
- Scratched — Entry scratched at the event
- Completed — Event ran, results recorded
Refunds & withdrawals
If you need to scratch or withdraw, contact the club secretary listed on the event detail page. Refunds are processed via Stripe per the club's policy.Printable Running Order
What it is
A print-friendly version of any event's brace draw at /events/[id]/braces/print. Public, server-rendered, optimized for letter paper.How to print
- Visit any event's running order at /events/[id]/braces
- Click Print in the top-right of the page header
- The print page strips the site nav and chrome, then click Print / Save as PDF (or Ctrl/Cmd+P)
What's on the print
- Event name, date range, grounds, city/state in the banner
- Summary: stake count, brace count, total entries
- One section per stake (sorted by stake run order)
- Per brace: brace #, day, scheduled time, course label (when set), Dog 1 / Handler 1, Dog 2 / Handler 2, BYE label when applicable
- Page-break-inside: avoid on each stake so the same stake doesn't split mid-table
Notes
- If the draw hasn't been run yet, the print page shows the same "check back after the official drawing" message as the regular running-order page
- The URL is bookmarkable and shareable — anyone can view, print, or save without signing in
Brace Draws & Running Order
What's a brace?
In bird dog field trials, dogs run in pairs — two dogs at a time on a course. The pairing is called a brace, and the order of braces is determined by a draw, typically performed by the club secretary after entries close.When the draw happens
Each event lists its draw time in the Drawing & Entry Info card. After that time, return to the event page and click View Running Order / Brace Draw to see the schedule.What the running order shows
For each stake:- Brace number (#1, #2, #3…)
- Day assignment
- Scheduled run time (when set)
- Both dogs in the brace, with handler names
- "Bye" badge for single-dog braces (when entry count is odd)
Bye-brace policy
Per AKC / American Field convention, a single unpaired dog runs as a "bye brace." The deck mentions a 3-bye limit per stake, which the system enforces.For club secretaries
The brace draw is run via the API. A pretty admin UI is coming in a future release. For now, secretaries can call `POST /api/events/[id]/draw` to trigger a randomized draw across all stakes in an event. Pass an optional `seed` for a reproducible draw.Registering a Dog
How to Register a Dog
Navigate to Dogs → Register Dog (or click the "Add Dog" button in the top navigation).
Required Fields
- Call Name — The name you use day-to-day (e.g., "Thunder")
- Breed — Select from all 32+ AKC Sporting Group breeds
- Sex — Male or Female
- Date of Birth — Used to calculate age
Optional Fields
- Registered Name — Full registered name with titles (e.g., "Riverbend's Rolling Thunder MH")
- Height & Weight — Physical measurements in inches and pounds
- Color — Coat color description
- Photo — Upload a profile photo (JPG or PNG, up to 5MB)
- Sire & Dam — Parent names for pedigree tracking
- Registration — Organization (AKC, UKC, CKC, NAVHDA, FDSB) and registration number
Breed Groups
Dogs are automatically categorized into groups based on breed:- Retrievers — Lab, Golden, Chesapeake, Flat-Coat, Curly-Coat, Toller
- Pointers/Versatile — GSP, GWP, Vizsla, Weimaraner, Brittany, Griffon, etc.
- Setters — English, Gordon, Irish, Irish Red & White
- Spaniels — Springer, Cocker, Boykin, Clumber, Field, etc.
Competition Results
Supported Competition Types
AKC Hunt Tests (Pass/Fail)
- Levels: Junior, Senior, Master
- Scoring: 0-10 per category, 7.0 average to qualify
- Categories: Marking, Style, Perseverance, Trainability, Blind Retrieve, Honoring
- Stakes: Open, Amateur, Derby, Qualifying, Gun Dog
- Points: 5 (1st), 3 (2nd), 1 (3rd), 0.5 (4th)
- Tests: Natural Ability (NA), Utility Preparatory (UPT), Utility (UT)
- Prizes: Prize I (highest), Prize II, Prize III
- Scoring: 0-4 per category with weighted multipliers
- Disciplines: Distance Jump, Air Retrieve, Speed Retrieve
- Divisions: Novice, Junior, Senior, Master, Elite
- Metrics: Distance (ft), Height (ft), Time (sec)
- Classes: Standard, JWW, FAST, Premier, T2B
- Scoring: Start at 100, deductions for faults, must retain 85+
- Championship points: 1 point per second under SCT in Master
How to Log a Result
From your dog's profile page, you can add competition results with:- Sport type, organization, event name and date
- Level/stake, placement/result, qualifying status
- Score, time, distance, points as applicable
- Per-category breakdowns for detailed scoring
Titles & Achievements
Title System
Titles are awards earned by meeting specific criteria in competition. They appear on your dog's profile.
Title Types by Organization
AKC Hunt Tests (suffix): JH, SH, MH, JHA, SHA, MHA AKC Field Trials (prefix): FC, AFC, NFC, NAFC AKC Agility (suffix): NA, NAJ, OA, OAJ, AX, AXJ, MX, MXJ, MACH, PACH AKC Rally (suffix): RN, RI, RA, RE, RAE, RM, RACH NAVHDA: NA Prize I/II/III, UPT Prize I/II/III, UT Prize I/II/III, VC NADD Dock Diving (suffix): DN, DJ, DS, DM, DE NAFA Flyball (suffix): FD, FDX, FDCh, FM, ONYX, FGDCh Barn Hunt (suffix): RATN, RATO, RATS, RATM, RATCH
Prefix vs Suffix
- Prefix titles appear before the name (e.g., FC AFC Thunder)
- Suffix titles appear after the name (e.g., Thunder MH)
- The app tracks both and displays them correctly on dog profiles
Adding & Removing Titles
- Visit your dog's profile (you must be signed in as the owner)
- In the Titles Earned section, click Add Title
- Pick a quick-preset chip (JH, SH, MH, NA Prize I, FC, AFC, MACH, etc.) or fill in a custom code
- Confirm the date earned and save
- To remove a title, click the small trash icon next to the title code (you'll be asked to confirm)
Health Clearances
Tracking Health Clearances
Health clearances are critical for breeding decisions and demonstrate responsible ownership.
Supported Health Tests
OFA Hip Evaluation
- Grades: Excellent, Good, Fair, Borderline, Mild/Moderate/Severe Dysplastic
- Minimum age: 24 months for final certification
- Distraction Index: 0.0 (tightest) to 1.0 (loosest)
- Can be performed as early as 16 weeks
- Grades: Normal, or Grade I/II/III Dysplasia
- Annual exam by board-certified veterinary ophthalmologist
- Valid for 12 months — app tracks expiration dates
- Auscultation or echocardiogram results
- EIC (Exercise-Induced Collapse)
- CNM (Centronuclear Myopathy)
- PRA-prcd (Progressive Retinal Atrophy)
- DM (Degenerative Myelopathy)
- Results: Clear/Normal, Carrier, Affected
OFA Certification Numbers
Each clearance can store the official OFA certification number for verification.Adding & Removing Health Clearances
- Open your dog's profile while signed in as the owner
- In the Health Clearances section, click Add Clearance
- Pick a clearance type (Hip, PennHIP, Elbow, Eye, Cardiac, Patella, Thyroid, or DNA panels)
- The result dropdown adapts to the chosen type (e.g. Hip → Excellent / Good / Fair, DNA → Clear / Carrier / Affected)
- Optionally add a certificate number and an expiration date (Eye CAER results expire annually)
- To remove a clearance, click the trash icon at the end of its row
Training Journal (Private)
What it is
A private log of training sessions per dog. Only you (the dog's owner) can see these entries — they don't appear on the public dog profile, on handler profiles, or anywhere else on the site.Why it's useful
Field trial training is a long game. The journal lets you:- Track what you've actually worked on across weeks and months
- Spot patterns ("we always struggle with the long blind on windy days")
- Remember conditions ("first time he ran at Roxboro Grounds — 38° and sleet")
- Be honest about a tough session without it being part of your dog's public record
Logging a session
- From your dog's profile, find the Training Journal section
- Click Log Session
- Pick the date (defaults to today; can't be in the future) and a session type (Yard, Marks, Blinds, Field Work, Conditioning, Bird Work, Obedience, Vet Visit, Other)
- Optionally fill in duration in minutes, weather, and a location
- Use the notes field for as much detail as you want — up to 4000 characters
- Save
Removing an entry
Click the trash icon at the top-right of any entry. You'll be asked to confirm.Privacy
The privacy pill next to the section title is a reminder: training journal entries are owner-only at the API + page level. Even other handlers visiting your dog's profile won't see this section at all.Following Dogs
Why follow a dog?
Maybe it's your puppy's sire, the standout performer at every event you attend, or the dog you keep seeing on the leaderboards. Follow a dog and you'll get a notification (in the bell-icon inbox) the moment they:- Earn a new title (e.g. "Scout earned a new title: MH")
- Place at a field trial (e.g. "Scout placed 1st at Spring Classic")
- Are named sire or dam on a new litter announcement (e.g. "Scout sired a new litter")
How
- Visit any dog profile
- Click Follow in the header (next to Brag Sheet)
- The button flips to Following with a filled gold star — you're done
Where to find your follows
- Click your avatar (top-right) → Dogs I Follow
- Or jump directly to /me/follows
- The page shows a grid of every dog you follow with photo, breed, owner, and quick title/results counts
Unfollowing
Click Following on the same button — it toggles off. Idempotent: clicking twice is safe.Privacy
Followers and follower counts are not shared with the followed dog's owner — there's no leaderboard or list of "who follows me." It's a personal bookmark with notifications attached.Litter Announcements
What it is
A public directory of litter announcements at /litters. Breeders post their upcoming, expected, born, available, and sold-out litters; everyone else gets a discoverable feed of who's breeding what.Announcing a litter
- Sign in and click Announce a Litter at the top of /litters (or navigate directly to /litters/new)
- Pick the sire and dam — autocomplete suggests dogs registered on the platform (sex-filtered: Male for sire, Female for dam). If a parent isn't on the platform, just type the name as plain text.
- Pick a status: Planned, Bred, Born, Available, or Sold Out
- Optionally fill in expected date, born date, male/female puppy counts, a description, a photo, and a contact note
- Save — you land on the detail page and the litter appears on /litters
What viewers see
- The /litters grid with photo, status pill, sire × dam, expected/born date, and breeder name
- A detail page with full description and breeder contact (email is hidden from guests — they see a 'Sign in to contact' link)
- A Litters section automatically appears on each parent dog's profile listing every announcement that references them
Editing
- Click Edit in the detail page header (breeder only) to update any field — status, dates, counts, description, photo, contact note, or even swap the linked parents
- Delete is also breeder-only (trash icon next to Edit)
- Status flow over the litter's life: Planned → Bred → Born → Available → Sold Out
Pedigree Linking
Linking parents to other dogs
When you fill in the Sire or Dam field on the dog form, the platform searches for matching dogs registered on the site as you type. If you pick a suggestion, that parent becomes a link — the dog profile will show it as a clickable name pointing to the parent's profile.If the parent isn't registered on the platform, just type their name as plain text — it still saves correctly, just without the link.
How filtering works
- The Sire field only suggests Male dogs
- The Dam field only suggests Female dogs
- The dog you're editing is excluded from its own suggestions (no self-parenting)
Unlinking
After picking a suggestion, the field shows a "linked" pill. Click the X icon to unlink and edit the field as plain text again.Offspring on the parent's profile
When you link a dog as a parent, the parent's profile automatically shows your dog under an Offspring section — sorted alphabetically, sex marker (♂/♀) included. This makes it easy to navigate up and down family trees.Multi-generation tree
On any dog profile, click View 4-Gen Tree in the Pedigree section to see a classic horse-style pedigree grid:- Column 1 — the dog (subject)
- Column 2 — parents
- Column 3 — grandparents
- Column 4 — great-grandparents
You can keep walking back: click any great-grandparent, then View 4-Gen Tree on their profile, and you've effectively scrolled the pedigree window 3 more generations into the past.
Achievement Badges
What they are
Color-coded chips that appear on dog profiles and brag sheets, awarded automatically based on the data you've already entered. There's nothing to claim or unlock manually — add a title, log a placement, or register an offspring and the relevant badges show up.Categories
- Title badges (amber) — Junior/Senior/Master Hunter, FC, AFC, NFC, VC, UT Prize I, Dual Champion (FC+AFC), 10× Titled
- Performance badges (slate / amber / red) — 100 Runs Club, 25+ Competitions, qualifying-run counter, Consistent Performer (80%+ qualify rate over 10+ runs), 50+ SRS Points, 25+/100+ Purina Points
- Health badges (emerald) — OFA Hip Excellent, 4+ Health Clearances
- Pedigree badges (violet for sires, blue for dams) — Champion Sire / Champion Dam (3+ titled offspring on the platform), Prolific Parent (5+ offspring registered)
Tips
- Hover any chip to see the criterion that earned it
- Badges appear automatically — no profile editing required
- The brag sheet has a dedicated Achievements section so they print cleanly
- Highest title in a ladder shows (e.g., MH hides JH)
Notifications Inbox
Bell icon
The bell in the top nav (left of your avatar) shows your unread count. Click it to jump to /me/notifications, your in-app inbox. The badge polls every 60 seconds while you're signed in.What lands in the inbox
- Registration confirmations — when you register for an event, a row is added immediately. If you paid via Stripe, a second 'Payment received' row appears once Stripe confirms.
- Saved-search hits — alongside the email digest, the bell icon lights up with a row listing the first three matching events and a '+N more' tally. Click through to rerun the search.
- Comment replies — when someone comments on your post in the feed, the bell icon shows a 'commented on your post' notification with a 120-char preview and a deep link.
- Followed-dog milestones — when a dog you follow earns a new title, places at an event, or is named sire/dam on a new litter, the bell icon shows a row with the details and a deep link.
- System notices — admin announcements and important platform updates.
Managing the inbox
- Click a row's link to jump to the relevant page (e.g., /registrations)
- Click the trash icon to dismiss a single row
- Click Mark all read at the top to clear the unread badge in one shot
- Up to 100 most recent notifications are shown
Site-wide Search
Where to find it
- Desktop: Search input in the top nav, between the Help dropdown and the Add Dog button
- Mobile: Open the hamburger menu — the search input is at the top
- Direct URL: `/search?q=your+query` is bookmarkable
What it searches
- Dogs — by call name and registered name
- Handlers — by name
- Clubs — by name and location
- Events — by event name, grounds, and city
Tips
- Type at least 2 characters
- Partial matches work — "key" finds "Keer", "rox" finds "Roxboro"
- Search is public — guests can use it without signing in
- Each section shows up to 12 results; click into the dog/handler/club/event for full details
Comparing Dogs Side-by-Side
Stacking dogs for comparison
Visit /dogs/compare (or click the Compare button on the dogs index or any dog profile) to put up to four dogs next to each other.What you can compare
- Photos and registered names
- Sex, breed, age, height, weight
- Owner (links to handler profile)
- Titles count + the three most recent titles as chips
- Health clearances count
- Total competition results
- Qualify rate
- SRS Crown total
- Purina High Point Retriever total
- Purina Pointing Dog total
Tips
- The comparison URL is bookmarkable and shareable — every selection is encoded as `?ids=a,b,c,d`
- Use the X in the corner of any dog card to drop it from the comparison
- Use the picker below the table to add more dogs (up to 4)
- The Compare button on a dog's profile starts the URL with that dog already loaded — handy for "stack my dog vs theirs"
Handler Career Résumé
What it is
A printable handler résumé at /handlers/[id]/brag, public and shareable. Click Career Résumé in the top-right of any handler profile.What's on it
- Avatar (or initials), name, location, contact info (or 'Sign in to contact' for guests), bio
- Career snapshot aggregating every dog the handler owns: dogs count, titles, competitions, qualify rate, combined SRS Crown points, combined Purina High Point, Purina Pointing
- Per-dog mini cards showing each dog's titles count, results count, SRS, and Purina totals
- Recent results table — the 15 most recent placements across all owned dogs, with dog name, event, stake, and computed point chip
Printable Brag Sheet
What it is
A one-page résumé for any dog at /dogs/[id]/brag, optimized for printing on letter paper or saving as a PDF. Click Brag Sheet in any dog profile header to open it.What's included
- Banner photo and full titled name (prefix titles + registered name + suffix titles)
- Vitals (sex, age, breed, color, height, weight) and registration info
- Owner name + location
- Career snapshot — Titles, Competitions, Qualify Rate, SRS Crown, Purina High Point, Purina Pointing
- Full titles table
- Full health clearances table
- Pedigree (sire, dam, offspring names)
- Most recent 8 competition results
How to print
- Open the brag sheet for your dog
- Click Print / Save as PDF in the upper-right (or use Ctrl/Cmd+P)
- In the browser print dialog, choose your printer or "Save as PDF"
- The site nav, header, and Print buttons are hidden automatically — only the paper prints
Tips
- Sections are marked `page-break-inside: avoid` so tables don't split awkwardly across pages
- The brag sheet URL is shareable and bookmarkable — anyone with a link (and a login) can view, print, or save it
- The footer includes the generation date and SportingDogs.app branding so judges and breeders know it's authoritative
Stats & Leaderboards
Statistics Dashboard
The Stats page provides community-wide analytics and leaderboards.
Available Stats
- Breed Distribution — Visual breakdown of registered breeds
- Results by Sport — Competition results with qualifying rates per sport
- Most Titled Dogs — Leaderboard ranked by total titles earned
- Dock Diving Leaderboard — Longest jumps across all events
- Agility Leaderboard — Top dogs by championship points
- Titles by Breed — Which breeds are earning the most titles
How Stats Are Calculated
- All stats are computed from real competition data logged by users
- Qualifying rates = (qualifying results / total results) per sport
- Leaderboards update automatically as new results are added
Calendar View
Month-grid calendar
Visit /events/calendar for a traditional month-at-a-glance view of every field trial on the platform.Navigation
- Use the prev / next buttons in the header to move between months
- The current month loads by default
- Each day cell shows the events scheduled to start that day
What the yellow highlight means
Events you've saved to your itinerary are highlighted in yellow so your planned year stands out at a glance against the rest of the calendar. Unsaved events show in the default style.Quick navigation
Click any event tile in the grid to open that event's detail page — register, view stakes, or see the running order.When to use it
- Compare overlapping weekends across multiple events
- Spot travel conflicts before you save or register
- Get a wall-calendar view of your saved itinerary
For Club Secretaries (Admin)
Accessing the admin area
Club secretaries access the admin dashboard at /admin. Two roles can sign in:- Super-admins see and manage all clubs on the platform
- Per-club secretaries (rows in the `club_admins` table) see and manage only their own club
The dashboard
The /admin landing page lists:- Each club you manage, linking to its per-club page
- Recent events across your clubs with registration counts at a glance
Per-club page
Click a club to open `/admin/clubs/[id]`. From here you'll see all of that club's events, summary stats, and the list of admins assigned to the club.Creating an event
- From the dashboard or club page, click New Event (route: `/admin/events/new`).
- Fill in event metadata — name, host club, grounds, date range, draw time, entry close, association badges, sponsor flags.
- Add stakes inline — each stake gets a name, type (Puppy / Derby / Shooting Dog / etc.), participant type, age window (min/max months), and entry fee.
- Upload an event ad PDF — drag a PDF (or JPG/PNG up to 10 MB) into the file uploader. The file is stored under `/uploads/...` and linked from the public event page.
- Save. The event is immediately visible in the public calendar.
Editing an event
Open `/admin/events/[id]` to edit any event — metadata, stakes, or the event ad. Changes take effect immediately.Viewing & exporting registrations
From the event editor, click Registrations (route: `/admin/events/[id]/registrations`).- Handlers are grouped per stake
- Status badges: Pending / Confirmed / Withdrawn / Scratched / Completed
- The page shows total revenue across confirmed entries
- Click Export CSV to download the full registration list for offline workflows or upload to other tools
Running brace draws
Two flavors are supported:- Event-wide draw — `POST /api/events/[id]/draw` randomizes braces for every stake in the event in one shot. Best when entries close at the same time across all stakes.
- Stake-level draw — `POST /api/stakes/[id]/draw` randomizes a single stake. Best when stakes close on different dates, or when you need to re-run a draw for one stake without disturbing the others.
Entry Reminder Emails
Never miss an entry deadline
The platform sends automated email reminders before an event's entry-close timestamp so the events you're planning on don't slip by.The three-tier system
Reminders fire at three points before entry-close:- 7 days out — early heads-up so you can finalize travel and finishing touches
- 24 hours out — the day-before nudge
- 2 hours out — final-call reminder
Who gets reminders?
Reminders only fire for events that meet both conditions:- You've saved the event to your itinerary, and
- You have not yet registered any dogs for it
How it works under the hood
- An hourly systemd timer hits `POST /api/cron/reminders` (authenticated via the `x-cron-token` header)
- Each tier is tracked in the `sent_reminders` table, so retries and overlapping cron runs are idempotent — you'll never get the same tier twice
- Emails are delivered via AWS SES, the same channel as registration confirmations
Turning them off
If you no longer want reminders for a given event, simply unsave it from your itinerary.Installing the App
Progressive Web App (PWA)
SportingDogs is a Progressive Web App — you can install it on your phone or computer for a native app experience.
Install on iPhone/iPad
- Open the app in Safari
- Tap the Share button (square with arrow)
- Scroll down and tap "Add to Home Screen"
- Tap "Add"
Install on Android
- Open the app in Chrome
- Tap the menu (three dots)
- Tap "Add to Home Screen" or "Install App"
- Tap "Install"
Install on Desktop (Chrome)
- Look for the install icon in the address bar
- Click "Install"
Benefits of Installing
- Full-screen app experience (no browser chrome)
- Quick access from home screen
- Works offline for basic browsing
- Faster load times
Post-event Results & Points
Per-event results page
Once an event runs and the secretary records placements, the Results link on the event detail page goes live. Each stake shows its placement table:- 1st through 4th, plus JAM (Judge's Award of Merit) and RJ (Reserve JAM)
- Each row: dog (linked to profile), handler name, breed
- Earned points displayed as colored badges:
Unplaced entries show "—" but stay listed so handlers can confirm their dog was entered.
How point engines feed standings
The same competition_results row that drives the per-event results page also feeds the season-long Standings leaderboards and each dog's career totals. Add a placement once, it shows everywhere.For club secretaries — recording placements
On the results page, you'll see a Record button next to each registration. Click it, pick the placement, optionally enter "dogs drawn" (drives Purina pointing-dog math) and notes, save. The system auto-creates the competition_results row and flips the registration status to Completed.You can also record placements via the API at `POST /api/registrations/[id]/result` — useful for batch imports.
Season Standings
What's at /standings
A season-long aggregation of every placement entered across every event. Three sections, all sortable, all linked to dog profiles:- SRS Crown Championship — top 25 dogs by total Crown points across all retriever field trial placements. Full-width feature card.
- Purina High Point Retriever Awards — three leaderboards in a row: Top Open / Top Amateur / Top Derby. Top 10 each.
- Purina Pointing Dog Awards — six leaderboards: All-Age, Amateur All-Age, Shooting Dog, Amateur Shooting Dog, Derby, Amateur Derby.
Year navigator
Use the prev/next arrows next to the year header to view past or future seasons. Default is the current calendar year.Empty states
A category that has no qualifying placements yet shows "No qualifying placements yet this season" — leaderboards populate automatically as secretaries record placements after each trial.Browsing Clubs
Public clubs index at /clubs
Every host club currently on SportingDogs.app is listed here. Each card shows:- Club name + city/state
- Association badges (SBHA, NBHA, AFTCA, etc.)
- Number of upcoming events
- Next upcoming event date and name
- Link to the club's external website if set
Search & filter
- Search by club name, city, or state
- Filter by association — useful for finding all SBHA-recognized clubs
Club detail page
Click any club card to see its full page:- Bio + contact (email, phone, website)
- Association badges
- Upcoming Events — full event list with stake counts and entry-fee ranges
- Past Events — last 10, each linking directly to its results page
- Club Administrators — public roster (names + roles) so handlers know who to contact
Dog Results History
Full history table at /dogs/[id]/results
Each dog's profile page shows recent results inline. For the full history, click the Full History button next to the Competition Results heading.The history page shows:
- Career totals — total results, titles, total SRS Crown points, combined Purina total
- Filter chips for year (every year that has results), sport, and a "qualifying only" toggle
- Chronological table — date / event / sport-stake / placement / earned points (SRS Crown, Purina Retriever, Purina Pointing-Dog as colored badges)
Why this matters
This is the page handlers reference when asked "what's your dog's record?" — every result with full context. It also helps when a dog crosses a Purina or SRS threshold and you want to see exactly which placements got them there.Multi-day Brace Scheduling (admins)
Editing brace times after the draw
On the running-order page (/events/[id]/braces), club admins see an Edit widget next to each brace row. Click it to inline-edit:- Day number (1–14) — useful when a stake spans multiple days
- Scheduled time — free text like "8:00 AM" or "10:30 AM"
- Course label — for events with multiple courses (e.g. "North", "South")
API access
For batch updates, secretaries can use `PUT /api/braces/[id]` with `{ dayNumber, scheduledTime, courseLabel, notes, braceNumber }`. Validation enforces 1–14 day range and reasonable string lengths.Inviting Club Admins (admins)
Why invite co-admins
A field trial club typically has more than one person handling secretary duties. Phase 6 adds a self-serve invite flow so super-admins (and existing club admins) can grant access to additional users without needing SQL access.How to invite
On the /admin/clubs/[id] page, scroll to the Club Administrators section. Underneath the existing roster you'll see a small form:- Type the email address of an existing SportingDogs.app user
- Pick a role: Secretary, Chairman, or Trustee
- Click Add
Required: target user must already have an account
You can only invite people who've already signed in at least once. If they don't have an account, ask them to sign up first (currently invite-only — contact a super-admin), then add them.Removing an admin
Each admin row has a small trash icon. Click it, confirm, and that user loses access. The system blocks removing the last admin (unless you're a super-admin) so a club can't accidentally lock itself out.Uploading Files (event ads, dog photos)
Event ad PDFs
On the /admin/events/[id] page, the Event Ad / Flier section accepts:- PDF, JPG, or PNG up to 10 MB
- Drag-and-drop or click-to-choose
Dog photos
Use the Add Dog form to upload a profile photo (JPG / PNG / WebP up to 5 MB). Photos display on the dog profile, in event lists, on the standings dashboard, and anywhere else the dog appears.Where files live
Uploads are stored on the SportingDogs.app server at `/var/lib/sportingdogs/uploads/` and served behind nginx at `/uploads/...`. Each file gets a 16-byte random UUID name so the URL isn't guessable. They're cached by browsers for 30 days.Saved Searches
Why save a search
The events page has lots of filters — state, region, association, participant type, stake category, geo-radius, free-text search. If you keep coming back to the same combo (say "Southeast region, Open Shooting Dog stakes") save it once and never re-build it.How to save
- On /events, apply whatever filters you want.
- Click the Save Search button (next to the List/Calendar toggle).
- Give it a name — the system suggests one based on your filters — pick how often you want emails, click Save.
Notification frequency
- As they're posted (within an hour) — instant alert when a new matching event is published
- Daily digest — once a day if there's anything new
- Weekly digest — Monday-morning summary
- Don't email — save the filters without emails (you can still re-run any time)
Manage subscriptions
Open the avatar menu → Saved Searches (or /me/saved-searches). Each card shows the name, filter summary, last-notified date, frequency selector, a Run button, and Delete with confirmation. You can have up to 25 saved searches per account.Entry-Closing Reminder Emails
How they work
If you save an event to your itinerary but don't register before entries close, the system emails you a reminder.You'll get up to three nudges per event:
- 7 days before entries close
- 24 hours before
- 2 hours before
Social Feed
Community Feed
The social feed lets you share photos, videos, and updates with the sporting dog community. The feed is publicly readable — share a link to a great photo without forcing the recipient to sign in. You only need an account to post, like, or comment.
Posting
The composer is at the top of the /feed page. It's collapsed by default — click 'Share an update…' to expand:Interacting
Tips for Great Posts