Credits
Zoo Guide is a full-stack TypeScript web app: rendered on the server, installable on a phone, usable offline, translated into 25 languages and able to send push notifications. It is built on the work of the people, sources and tools below.
People
My parents, grandparents, siblings, wife, in-laws and children have all helped shape the course of my life and given it context, significance and happiness. I am very grateful for their guidance and generosity over the years and for their encouragement as I developed this application.
Content
animalia.bio
Zoo Guide utilizes data which animalia.bio offers freely and has organized exceptionally well; a fantastic resource for anyone interested in animals or zoology.
Freepik & Flaticon
Most of the beautiful animal icons on our site were designed by Freepik and downloaded with permission from flaticon.com.
brgfx
The parallax scroll vector art was created by modifying this free vector image by brgfx.
Built with
Thank you to everyone behind the open-source projects and the services Zoo Guide runs on. Here is what each one is and how Zoo Guide uses it.
Interface
- React
A library for building user interfaces out of reusable components. Zoo Guide uses React to render every page on the server and provide interactivity in the browser.
- TanStack
Headless, type-safe, composable tools for building modern web applications that work naturally for developers and reliably for agents.
- Material UI
A comprehensive suite of React components, hooks and utilities that implements Google's Material Design. Zoo Guide's user interface is built with Material UI.
- i18next
An internationalization framework written in and for JavaScript. Zoo Guide uses i18next to detect each visitor's language and make every page available in 25 locales.
- Workbox
Production-ready service worker libraries and tooling from the Google Chrome team. Zoo Guide uses Workbox to store the app's code on the device, so it keeps working when the connection drops.
Server & API
- Node.js
A cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
- Fastify
A fast, low-overhead web framework for Node.js, built around a powerful plugin architecture and a great developer experience.
- @fastify/cookie
Adds support for reading and setting cookies on requests and responses.
- @fastify/helmet
Sets security headers on every response, such as a content security policy, to protect against common web attacks.
- @fastify/mongodb
Shares one MongoDB connection pool across every part of the server, and closes it when the server shuts down.
- @fastify/oauth2
Performs login using the OAuth2 protocol, with providers such as Google.
- @fastify/otel
Official OpenTelemetry instrumentation that traces each request through the server.
- @fastify/rate-limit
A rate limiter that caps how many requests a client can make to a route in a given time.
- @fastify/redis
Shares one Redis connection across every part of the server, and closes it when the server shuts down.
- @fastify/type-provider-json-schema-to-ts
A type provider for json-schema-to-ts.
- @fastify/under-pressure
Process load measuring, with automatic handling of 'Service Unavailable'.
- @fastify/cookie
- tRPC
A library for building end-to-end type-safe APIs without schemas or code generation. Zoo Guide uses tRPC for almost every call between the browser and the server.
- Zod
A TypeScript-first schema validation library with static type inference. Zoo Guide uses Zod to check the data crossing every boundary: API requests and responses, database documents, forms, URLs and server configuration.
Data
- MongoDB
A database that stores data as flexible, JSON-like documents. Zoo Guide uses MongoDB's cloud service, Atlas, as its system of record for zoos, animals, accounts and orders.
- Redis
An in-memory data store used as a database, cache and message broker. Zoo Guide uses Redis to cache data from slower services, enforce rate limits and pass order updates between the server's workers.
Commerce
- Stripe
A financial infrastructure platform for businesses. Zoo Guide uses Stripe to take payment for shop orders and digital visitor passes.
- Printify
A print-on-demand platform for creating and selling custom products. Zoo Guide uses Printify to supply the shop's products and shipping costs, and to print and ship each order once it is paid.
Maps & AI
- Google Maps Platform
A set of APIs and SDKs for maps, routes and places. Zoo Guide uses Google Maps Platform to draw its maps, show photos and opening hours, plan walking routes, and forecast the weather at each zoo.
- OpenAI
An AI research and deployment company. Zoo Guide uses OpenAI's models to recognize animals in photos, answer questions about them and talk with you via the Realtime API.
Observability
- OpenTelemetry
A vendor-neutral observability framework for generating, collecting and exporting traces, metrics and logs. Zoo Guide uses OpenTelemetry to follow each request through the server and the services it calls, and to send what it records to PostHog.
- PostHog
An all-in-one platform for building successful products. Zoo Guide uses PostHog for product analytics, session replay, feature flags and error tracking, and as the home of the server's logs, traces and metrics.
Testing & quality
- Vitest
A next generation testing framework powered by Vite. Zoo Guide uses Vitest to run its unit and component tests, and fails any change that lowers test coverage.
- Playwright
A framework for reliable end-to-end testing of modern web apps. Zoo Guide uses Playwright to test the app in Chromium, Firefox and WebKit, at desktop and phone sizes.
- Lighthouse CI
A suite of tools for continuously running, saving and comparing Lighthouse audits of a site's performance, accessibility, best practices and SEO. Zoo Guide uses Lighthouse CI to score its key pages on every change and compare them with the last version.
Infrastructure
- Docker
A platform for developing, shipping and running applications in containers. Zoo Guide uses Docker to build the app into an image and run it, along with Redis, nginx and its telemetry collector, on one server.
- NGINX
An HTTP web server, reverse proxy, content cache and load balancer. Zoo Guide uses nginx to handle HTTPS, serve the app's static files compressed and pass every other request to the server.
- PM2
A production process manager for Node.js applications with a built-in load balancer. Zoo Guide uses PM2 to run its server as several workers that share the traffic, restarting any that fail.
- GitHub Actions
A continuous integration and delivery platform for automating build, test and deployment pipelines. Zoo Guide uses GitHub Actions to lint, type-check, test and measure the performance of every change before it is merged.
Development
- TypeScript
A strongly typed programming language that builds on JavaScript. Zoo Guide is written entirely in TypeScript, so the browser and the server are type-checked as one codebase.
- Vite
A build tool that provides a faster, leaner development experience for modern web projects. Zoo Guide uses Vite to bundle the app for the browser and the server, and for hot module replacement in development.
- Claude Code
An agentic coding tool that reads your codebase, edits files, runs commands, and integrates with your development tools. Since mid-2026, Zoo Guide has primarily been developed by a loop of Claude Code agents that plan, write and review changes for me to approve. They've hardened the infrastructure, improved the translations, built tests and CI checks that let me merge each change with confidence, and turned ideas that once would have taken weeks to implement into features that ship in days, sometimes hours.
Thank you for visiting, and enjoy your next trip to the zoo!
Casey