KeeperLog is a full-stack SaaS platform built specifically for reptile keepers. I got tired of managing feeding schedules in random notes, tracking shedding cycles in my head, and losing vet records. So I built something better.
The Problem
Reptile care is different. You feed your snake every 10 days, but which day exactly? When was the last shed? Is this weight normal for his age? Most keepers use notes scattered across phones, notebooks, or Excel sheets that get outdated.
When you sell or rehome an animal, you hand over some vague info on a piece of paper. The buyer has no real history. With KeeperLog, breeders can generate a digital animal passport as a QR code or link. Complete care history, weight trends, vet records. Everything the new owner needs.
Technical Deep Dive
- 2,029 automated tests. 934 backend unit tests, 593 frontend unit tests, 502 Playwright E2E tests. Every feature ships with its test suite. Production stability isn't optional.
- Monorepo architecture. Shared Zod schemas between frontend and backend. When you change a schema, both sides throw compile errors if they don't match. No API drift, no runtime surprises.
- Shedding cycle predictions. The system analyzes past sheds and calculates average intervals. If a shed is 30% overdue, it warns you. No machine learning needed, just clean domain logic.
- Real-time terrarium monitoring. WebSocket integration for live sensor data from DHT22 or BME280 sensors. Alert rules trigger notifications via email, Telegram, or Discord when temperature or humidity goes critical.
- Encrypted photo storage. Photos are AES-encrypted at rest. EXIF data gets extracted before encryption. Serving happens through token-authenticated endpoints. Built GDPR-compliant from day one.
- Role-based feature flags. Flexible freemium model with per-role limits like max enclosures or max pets. User-level overrides allow custom plans without touching code.
Tech Stack
Frontend is Nuxt 4 with Vue 3.5 in SPA mode, Tailwind CSS 4, TanStack Vue Query for data fetching, Pinia for state, Chart.js for analytics, and nuxt-typed-router for type-safe routing. Full i18n support in German and English.
Backend runs Fastify 5 with TypeScript in strict mode, Prisma ORM as the data layer, Zod for input validation, Pino for logging, and auto-generated Swagger/OpenAPI docs.
Infrastructure uses PostgreSQL 16 as the database, Redis with BullMQ for background jobs, Docker multi-stage builds, GitHub Actions for CI/CD. Auth is JWT-based with access and refresh tokens. Passwords use PBKDF2 with SHA-512.
Core Features
- Care journal. Log feedings with a feed item library, track sheds, weights, vet visits. Every animal gets a complete timeline with filterable events.
- Smart analytics. Weight trend charts with growth rate calculations. Shedding cycle predictions with anomaly warnings. Compare animals across your collection.
- Public animal profiles. Shareable pages with QR codes, embeddable widgets, selective visibility controls, view counters, and proper Open Graph tags for social sharing.
- Weekly care planner. Calendar view of upcoming feedings, vet appointments, and maintenance tasks. Sunday evening digest emails so you never miss a feeding.
- Vet management. Add vets as reusable entities. Track visit histories, cost summaries, attach documents, manage follow-ups.
Why It Works
KeeperLog isn't trying to be a generic pet app. It's built for reptiles, period. Features like shedding cycles, substrate changes, and terrarium monitoring only make sense in this context. That focus lets me go deep instead of broad.
I'm a keeper myself. I needed this tool, so I built it. The result is structured care documentation that actually helps animals live healthier lives and gives buyers real transparency when they adopt.