← Aquarium Architect
About

How Aquarium Architect works.

A compatibility checker for freshwater, brackish, and saltwater aquariums — including reef tanks with corals, anemones, and clams. Curated, hand-tuned, and source-credible.

Section

What this does

You build a hypothetical tank — pick the water type, set the volume, add fish and corals. The engine checks the stocking against 252+ species and 59+ corals worth of rules, then tells you what will work and what won't. Every warning explains why: temperature mismatch, predation, fin-nipping, schooling minimums, tank size, water chemistry, reef-safe behaviour, coral conflicts, anemone stings, light/flow requirements, growth horizons.

It's free, anonymous-by-default, and works on mobile. Optional sign-in syncs your tanks across devices via Supabase.

Section

The compatibility engine

The engine lives in src/lib/compatibility.ts. It's a pure function — input a tank, output a list of severity-tagged issues (critical, warn, good, info) plus stats. No I/O, no side effects, all rules are data-driven.

Active rules include:

  • Schooling minimums per species — if the schooler needs 6 and you have 2, it flags.
  • Water-type matching on a three-tier ladder (fresh → brackish → salt). Adjacent mismatches warn; skip-tier mismatches fire critical.
  • Reef-safe enforcement — coral-nipping fish in a reef tank fire critical with named species.
  • Light + flow capability matchingfor corals against the tank's declared lighting and flow.
  • Hard-pair lookups — curated [fish, fish, reason]or [coral, coral, reason] tuples for known killer combos. Hard-pair messages dedupe generic rules (when a hard pair fires, the temp/pH/aggression rules skip for that pair so the report stays clean).
  • Predation by adult size, fin-nipper × long-finned, aggressive × peaceful bullying, predatory anemones, multiple male bettas, goldfish bioload.
  • Tank size + growth horizon — undersized tank → critical, with juvenile-to-adult time clauses for fish that have growth data.
  • Stocking density — freshwater 1″/gal, salt FOWLR/reef 0.75″/gal, SPS-heavy 0.5″/gal. Heavy planting + oversized filtration loosen the freshwater threshold.
  • Tank shape — optional length × width × height. Active swimmers (8″+) flag when length is below 4× their adult size.
Section

Where the species data comes from

The fish database lives in src/data/fish.json and the coral database in src/data/corals.json — version-controlled, hand-curated JSON. Each entry was researched against a combination of:

  • Reputable hobbyist and academic references: FishBase (fishbase.se), SeriouslyFish (seriouslyfish.com), Reef Builders, Reef2Reef community articles
  • Long-standing reefer + aquarist consensus on documented species like Bob Fenner's "The Conscientious Marine Aquarist" for marines and Diana Walstad's "Ecology of the Planted Aquarium" for freshwater planted tanks
  • Documented behavioural notes from public-aquarium husbandry teams (Steinhart, Monterey Bay Aquarium, Shedd) where available
  • Author's own keeping experience and verified community reports

Photos are sourced from Wikimedia Commons under Creative Commons licenses (CC-BY, CC-BY-SA, CC0). Every photo is credited on the per-species page and on the master credits page.

We do not claim peer-reviewed accuracy. We claim "curated by people who keep fish, cross-checked against the references above, and corrected when wrong." If you find an error, please tell us (next section).

Section

How to suggest corrections

Use the feedback page. Pick a type — correction, suggestion, bug, or other — write what's wrong or what you'd like to see, and submit. Submissions go straight to the maintainer, who reviews them in batches (usually within a week). Leave an optional contact email if you want a reply.

For corrections, be specific: name the species, say what's wrong (the pH range, the schooling minimum, the temperament, the photo), and cite a source if you have one (FishBase, SeriouslyFish, your own long-term keeping experience). The more concrete the report, the faster the fix.

Section

Privacy + data handling

Anonymous use stores everything in your browser's localStorage — nothing leaves your device. If you sign in, your tank data syncs via Supabase, scoped per-user with row-level security. Email is required for sign-in; password recovery is handled by Supabase.

Vercel Analytics is enabled for aggregate pageview + custom-event data (tank created, preset loaded, share-link copied). No personally identifiable information is collected. No third-party tracking.

Section

What this isn’t

Aquarium Architect is heuristic guidance, not a substitute for the careful personal judgement of an experienced fishkeeper. Individual fish have individual personalities. Real-world tank parameters drift. A rule that says "X works" means the population-level data supports it, not that every X will work in every tank.

When in doubt, verify with a long-time reefer, a planted-tank veteran, or your local fish store with a track record. We're building this tool to make the homework easier — not to replace it.