Skip to content
← 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.

What this does

Building a hypothetical tank starts with picking the water type, setting the volume, and adding fish and corals. The engine checks the stocking against 251+ species and 59+ corals worth of rules, then reports 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.

The compatibility engine

The engine lives in src/lib/compatibility.ts. It's a pure function that takes a tank as input and returns 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. A schooler that needs 6 individuals will flag when only 2 are present.
  • 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 tanks fire 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 and oversized filtration loosen the freshwater threshold.
  • Tank shape: optional length × width × height. Active swimmers (8″+) flag when length is below 4× their adult size.

Where the species data comes from

The fish database lives in src/data/fish.json and the coral database in src/data/corals.json. Both are 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).

How to suggest corrections

Use the feedback page. Pick a type (correction, suggestion, bug, or other), describe 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.

Privacy + data handling

Anonymous use stores everything in the browser's localStorage; nothing leaves the device. Signing in syncs tank data 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.

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 a local fish store with a track record. This tool is built to make the homework easier; it isn't meant to replace it.

Heuristic guidance only · Individual fish vary · Verify before stocking