A puppy training and care companion for everyone who looks after the dog.
Toe Beans is a mobile-first, installable web app (PWA) for planning short, reward-based training sessions, recording how they went, and keeping puppy care (vaccinations, medication, vet visits) in one place. Caregivers in one household share it across their phones, and it supports several dogs from the start, each with its own history.
It aims to answer three questions: What should we do today? How is our puppy progressing? What should we work on next?
Status: early development. The foundations are in place (app shell, brand, CI, the container image, end-to-end tests on the target phones); the first features, starting with sign-in, are next. See the backlog for progress.
- Practice is not performance. Logging a session never requires claiming success, and "Not assessed" is the default outcome.
- Kind training. Content favours reward-based, gradual-exposure methods. Care milestones are reminders you configure, not medical advice.
- Reliable reminders. Web Push notifications arrive even when the app is closed.
- Your household's data stays in your household. Every read and write is checked against it.
- SvelteKit 3 full-stack app, with a framework-independent server
core (
packages/backend) and shared Zod contracts (packages/contracts) - MongoDB, Tailwind CSS 4 with shadcn-svelte, Hugeicons
- Vitest, Testcontainers and Playwright; one Docker image for the app
- Android + Chrome as the primary platform; other browsers are best effort
You need Node 24 or later, pnpm 10 and Docker.
pnpm install
cp .env.example .env # local settings; sample values only
pnpm compose up -d --wait mongo # MongoDB (replica set) in Docker
pnpm dev # http://localhost:7877Use pnpm dev --host to open the app from a phone on the same Wi-Fi.
| Command | What it does |
|---|---|
pnpm lint |
ESLint (including the architecture layer rules) and Prettier |
pnpm check |
Type-check every package |
pnpm test |
Unit tests |
pnpm test:integration |
Integration tests against MongoDB in Docker |
pnpm test:e2e |
Playwright on emulated Galaxy S23 FE and Redmi Note 12 Pro (needs pnpm --filter @toe-beans/web exec playwright install chromium once) |
pnpm build |
Production build (apps/web/build) |
pnpm compose --profile app up --build -d --wait |
The app image on http://localhost:3000, with MongoDB |
If port 27017 or 3000 is taken, set MONGO_PORT / APP_PORT (and the port in MONGODB_URI) in
.env.
| Path | Holds |
|---|---|
apps/web |
The SvelteKit app: pages, route handlers, UI components |
packages/backend |
Domain, use cases, persistence and HTTP handlers; no SvelteKit imports (layer rules) |
packages/contracts |
Request/response schemas and problem types shared with the browser |
docker |
Dockerfile and local compose |
docs |
Requirements, architecture, UI design, backlog |
spikes |
Throwaway de-risking experiments, each with its own README |
MIT © 2026 Veli Gebrev