AkashPigeons — Racing Pigeon Registry, Auction & Results Platform
Pedigrees, race results and live auctions for a racing-pigeon loft — with bidding rules built to match how the sport's real auction houses work.
Racing pigeon fanciers deal in three things that don't fit ordinary software. Pedigree: a bird's value lives in four generations of ancestry, so a registry has to walk that tree, not just store a parent name. Results: a placing is meaningless without context — 12th out of 2,000 birds is a better flight than 3rd out of 200, and each loft flies its own distance from the release point, so the distance that decides a placing is the loft's, not the race's nominal figure. Comparing birds that never competed in the same age category, or ranking on raw position, produces league tables that the people who fly these birds can see are wrong. And auctions: a naïve auction closes at a fixed time, which rewards sniping in the last five seconds and makes serious bidders stop participating. The established houses in this sport solved these problems a particular way, and any platform that solves them differently is simply wrong in the eyes of its users.
A Django platform covering registry, results, auctions and content for a Bangladeshi loft. The registry walks parent references to build four-generation pedigree charts. Race results are stored per category with each loft's own distance, and rankings are computed from the results table rather than stored, so correcting a result corrects every ranking that depends on it — measured by coefficient, placement as a percentage of the field, which is what makes flights of wildly different sizes comparable. Championships sum each bird's best N coefficients and deliberately exclude anyone with fewer than N results. The auction subsystem is the most demanding part, and it was built to match PIPA's rules deliberately. Soft close: a bid inside the closing window extends that lot, measured from the lot's current close rather than the moment of the bid, so at least one full extension always remains and repeated late bids step the deadline out instead of resetting it. Proxy bidding: a hidden maximum, with a settlement function that sorts every bidder's ceiling and prices the lot just over the runner-up — giving the correct tie behaviour, where a standing order beats an equal manual bid and the earlier of two equal maximums wins. A maximum can be raised or removed but never lowered, and raising one re-dates it so an early low order can't be topped up later to steal a tie. Every bid path runs inside a transaction holding a row lock and re-checks the minimum inside it, verified with five concurrent bidders posting the same amount — one accepted, one extension applied, four told the new minimum. Outbid emails fire only on the actual transition out of the lead, which means a proxy that successfully defends a lot mails nobody and no dedupe table is needed. Countdowns run against the server's clock with the offset measured at page load, because a viewer abroad or with a wrong clock would otherwise see the wrong closing time entirely.
Outcome
Live at akashpigeons.com, serving a working loft as registry, results archive and auction house at once. Pedigrees resolve four generations deep from ring numbers alone; race results are held per category with each loft's own distance, and championship tables are computed from them rather than stored, so correcting one result corrects every ranking that depends on it. The auction subsystem runs anti-snipe soft close, hidden-maximum proxy bidding with PIPA-matching tie rules, and row-locked bid placement verified under five concurrent bidders — one accepted, one extension applied, the rest told the new minimum. Fully translated into Bangla, deployed on cPanel under Passenger, and documented with an unusually deep project-memory set recording not just what was built but the traps found while building it: the timezone conversion returning NULL because MySQL's timezone tables aren't loaded, the annotated queryset inflating facet counts through its join, the reCAPTCHA v3 integration that was decorative because the view checked success without enforcing the score.
Key features
- Pigeon registry with unique ring numbers, bloodlines, and four-generation computed pedigree charts
- Race results stored per age category, with each loft's own distance driving the placing
- Computed rankings by coefficient, so a flight of 2,000 birds compares fairly with one of 200
- Best-of-N championship tables with a minimum-results requirement, plus separate loft rankings and best single performances
- CSV bulk race-result upload that accepts extended columns and still loads legacy three-column sheets
- Timed auction events with catalogue lot numbers, uniquely constrained per auction
- Anti-snipe soft close measured from the lot's own closing time, with configurable window and extension
- Proxy bidding with hidden maximums and PIPA-matching tie resolution
- Row-locked bid placement re-checking the minimum inside the transaction, verified under concurrency
- Server-side bid increment ladder, never duplicated into JavaScript
- Per-lot watchlist with open/closed split and lead, outbid and won states
- Event-driven outbid emails that fire only on a genuine loss of the lead
- Scheduled sweep for won and lost notifications, idempotent by claiming its notification row before sending
- Optional PPQC-style pigeon characteristic sheets where a half-filled assessment shows only its filled half, and a blank save removes it
- Bidder approval gate applied to both manual bids and buying orders, with grandfathering for existing bidders
- reCAPTCHA v3 with the score enforced server-side, failing closed on outage and rejecting v2 keys outright
- Password reset that answers identically for registered and unregistered addresses, with per-address cooldown and per-action token binding
- Server-clock countdowns with browser offset measured at load, formatted explicitly in the loft's timezone
- Blog split into five verticals — articles, pigeons, results, bloodlines and references — from one model
- Fancier and club profiles linked to their pigeons and articles
- Member messaging threads, news ticker, and homepage banners
- Full Bangla translation with a layout that adapts to longer text
- Progressive enhancement throughout — the watchlist star and bid form work with JavaScript disabled
Tech stack
Build something similar?
Tell us about your project. We'll share how we'd approach it.
Start a projectMore Web Application projects
VisionBancharampur — Member Investment Society Management Platform
Members, monthly dues, projects and profit shares in one le…
ThreeBie Order Engine — Multi-Retailer Grocery Basket Optimiser (MVP)
One basket, priced across every shop that delivers to your …
IDRN — Research Data Collection & Dairy Analytics Platform
Researchers design their own survey instruments, field team…