Petal is a web-based plant tamagotchi and musical sound toy. Users grow a tiny generated plant, care for it over time, and play its leaves like a living instrument.
The project is designed as a portfolio piece for senior full-stack engineering: polished React/TypeScript UI, playful audio interaction, persistent state, shareable plant identities, and a backend architecture that can grow into multi-user behavior.
- Raw ideas
- MVP and MoSCoW scope
- Agent-assisted build workflow
- Local development plan
- Deployment plan
- Backlog
Petal uses a pnpm workspace with the React/Vite app in apps/web.
Prerequisites:
- Node
24.15.0from.nvmrc - Corepack enabled
pnpmsupplied by the rootpackageManagerfield
Install and run:
nvm use
corepack enable
pnpm install
pnpm devThe web dev server binds to 0.0.0.0 for local network testing. After pnpm dev
starts, open the local Vite URL on this machine or the network URL on a phone on the
same Wi-Fi network.
Quality gates:
pnpm build
pnpm typecheck
pnpm lint
pnpm format:check
pnpm test
pnpm test:coverageHooks:
- Pre-commit runs
lint-stagedto format and lint staged files. - Pre-push runs the full local quality gate.
Agents can start local servers while working on a story, but a story is not done until Ian has had a chance to open the running app and review the product surface.
Preferred story loop:
- Agent implements the story slice and runs the quality gates.
- Agent starts
pnpm devwhen there is something visual or interactive to review. - Agent shares the local URL and network URL printed by Vite.
- Ian reviews the app on desktop and, when relevant, on a phone.
- Agent keeps the server running during review, makes requested changes, and reruns gates.
- Ian approves the behavior.
- Agent updates the story and backlog status to
Done.
Until human review happens, keep visual or interaction stories in In Progress, even if
automated checks pass.
The first proof of concept should run as a real deployed web app on mobile:
- Generate one seed-based plant
- Tap leaves to trigger sound
- Water the plant to affect health and tuning
- Persist the plant locally or through a small backend
- Share a plant link with another person
Petal is the current working title.