CatSafe Plants helps cat owners quickly verify whether common houseplants are safe for cats, view source-backed evidence, and discover safer alternatives.
- Project brief and technical constraints:
docs/PROJECT.md - Atomic launch backlog:
docs/TASKS.md - Product requirements:
docs/PRD.md
- Required Node version:
24.x - Runtime is pinned in:
package.json(engines.node).nvmrc
- Install Node
24.x. - Install dependencies:
npm install
- Create
.env.localwith:NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY
- Start the app:
npm run dev
- Open:
http://localhost:3000
npm run dev-> start local dev servernpm run build-> create production buildnpm run start-> run built appnpm run lint-> run ESLintnpm run audit:citations-> verify citation completeness + URL healthnpm run smoke:deploy -- --base-url=<url>-> browser smoke check for deploy URLs
- Connect repository to Netlify.
- Verify build settings in the Netlify dashboard:
- Build command:
npm run build - Publish directory:
.next
- Build command:
- Confirm plugin:
@netlify/plugin-nextjs
- Confirm branch strategy:
main-> Production- Pull requests -> Deploy Preview
- As of
2026-02-22, the product owner confirmed:- Repository is linked to Netlify.
- At least one Netlify deployment completed successfully.
- Production URL:
https://catsafe.robertluo.dev/
| Context | NEXT_PUBLIC_SUPABASE_URL |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY |
|---|---|---|
| Production | Production Supabase URL | Production Supabase publishable key |
| Deploy Preview | Preview Supabase URL | Preview Supabase publishable key |
Optional:
CITATION_AUDIT_TIMEOUT_MS(defaults to10000)
Run this sequence before production publish:
npm run audit:citationsnpm run lintnpm run buildnpm run smoke:deploy -- --base-url=<netlify-preview-url>- Open the Netlify deploy preview URL and spot-check:
- Home search happy path + empty state
- Detail evidence + alternatives
- Directory filters + pagination
After production deploy:
npm run smoke:deploy -- --base-url=https://catsafe.robertluo.dev/- Spot-check the same critical path on production:
- Home search happy path + empty state
- Detail evidence + alternatives
- Directory filters + pagination
If production smoke fails:
- Roll back to the last known-good Netlify deploy from the Netlify dashboard.
- Re-run smoke checks on the rolled-back deploy URL.
- Validate Production env variables were not changed unintentionally.
- Open a follow-up task in
docs/TASKS.mdwith exact failure details.