Thank you for your interest in contributing to CartKey! This project is open-source and community-driven.
git clone https://github.com/blackatlas/cartkey.git
cd cartkey
npm install
npm run devThe dev server runs at http://localhost:8080.
- TypeScript strict mode — no
anytypes without justification - Functional React components with hooks
- Tailwind CSS for all styling — no inline style objects unless dynamic values are required
- Named exports for components, default export only for
App.tsx
Use conventional commits: feat:, fix:, docs:, refactor:, test:, chore:
- Fork the repo and create a feature branch from
main - Make your changes with clear, focused commits
- Ensure
npx tsc --noEmitpasses with zero errors - Ensure
npm run buildsucceeds - Open a PR against
mainwith a clear description
- Write tests for new business logic (Vitest)
- Test critical UI flows (React Testing Library)
- E2E tests for checkout and card management flows (Playwright)
- Minimum 80% coverage on new code
Edit src/data/stores.ts — add an entry with the store's name, brand color, emoji icon, and approximate coordinates for a well-known location.
See functions/api/coupons.ts for the data schema. Adapters should normalize external data into CartKey's unified coupon format.
Contribute aisle-to-category mappings for your local store to help with shopping list sorting.
CartKey uses i18next. Translation files are in src/i18n/. Add a new locale JSON file and submit a PR.
Be respectful, constructive, and welcoming. We follow the Contributor Covenant.