Animal Hub: Dictionary on Protected Animals
A directory of species: what we've lost, what we're losing, and what we still have time to protect.
01
How it started
Brief
A personal project built to make conservation data accessible to anyone curious about it. No client, no team. Built solo using Next.js and the iNaturalist API in under a week from first commit to MVP.
What it's supposed to do
Let users look up any species and see its conservation status, last known sighting, images, description, and taxonomy in one clean page. The goal is to make the weight of extinction feel personal, not just statistical.
Why it was hard
This is a vibecoded project, which means shipping fast while keeping the product actually usable. Every small friction point got caught and fixed in the next commit. The product is treated as always in progress: small tweaks ship as soon as something feels off.
02
Product’s Journey
v1 → MVP
The core flow: search an animal and understand its extinction status.
Core Functions
Discovery: Search any animal by name and browse results as visual cards with status badge and photo
Filtering: Filter results by animal type (Mammal, Bird, Reptile, etc) and conservation status
Species Detail: Full detail page per species (hero image, conservation status, last known sighting date and location, description, and taxonomy)
Storytelling component: Status-aware narrative copy on every detail page, color-coded by risk tier with semantic icon
v2 → Current Version
Making the data feel humane.
Shipped
[✅] Replaced scientific database (GBIF) with community-sourced data (iNaturalist) for accessibility
[✅] Status messages remapped with individual colour and message
[✅] Smart ranking in search function
[✅] Browse by conservation status
[✅] … and many more!
Backlog
[⏳] Language based on location
[] Population trend → is this species declining, stable, or recovering?
[] Threats list → what is actually killing it
[] … and many more!
🤺 Bug Slashed
[✅] Slow search performance fixed
[✅] Back button broken on detail page fixed
[✅] Extinct species (ex: Dodo) not appearing in search results
[⏳] … and more to come
03
Continuous Iterations
May 10, 2026
Announcement
Apr 27, 2026
> Adding and fixing filtering logic
mapINatStatusToConservation
Apr 22, 2026
Fixing categorization logic
Apr 20, 2026
Adding more info on animal's last seen
lastObservation clickable with modal popup
Apr 11, 2026
Making date format readable
Mar 31, 2026
> Adding 'Browse by Status' for more exploration options
> Fixing ranking in filter results
/taxa
rank=species to API call
Mar 25, 2026
Visual polish
Mar 18, 2026
Converting raw histogramData into a timeline
Mar 9, 2026
> Improving search functions
> Implementing smart ranking
Mar 8, 2026
Mapping raw data (ObservationsCount) into a narrative story
ObservationsCount
Mar 3, 2026
> Remapping narration of "Not-evaluated" statuses
> Final search function improvement
sessionStorage
observations_count to taxon type for NE status logic
Mar 2, 2026
> Search function tuning
> Visual polish
Mar 1, 2026
Swapped API from GBIF for iNaturalist → better data, richer taxonomy
Feb 27, 2026
Initial setup and MVP
