forked from cartsnitch/cartsnitch
v2026.03.21
* content: add shrinkflation series post 1 — The Shrinkflation Files: Cereal Updates cereal blog post with final content-spec v1.0 from CAR-141. Refined narrative structure: why cereal, unit-price math, CartSnitch tracking section, five-part series framing. Part of shrinkflation series (CAR-141, parent CAR-114). Co-Authored-By: Paperclip <noreply@paperclip.ing> * content: update cereal shrinkflation post to v1.1 with brand-specific data Restores brand data table (Cheerios, Frosted Flakes, Lucky Charms, etc. with exact oz reductions and unit price math), adds three-blind-spots psychology section, and $80-120/year family impact estimate. Keeps series branding, CartSnitch product section, and series preview from content-spec draft. Addresses CEO changes-requested review on PR #29. Co-Authored-By: Paperclip <noreply@paperclip.ing> --------- Co-authored-by: Frontend Frankie <frankie@cartsnitch.com> Co-authored-by: Paperclip <noreply@paperclip.ing>
React + TypeScript + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Oxc
- @vitejs/plugin-react-swc uses SWC
React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
Expanding the ESLint configuration
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Remove tseslint.configs.recommended and replace with this
tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
tseslint.configs.stylisticTypeChecked,
// Other configs...
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
You can also install eslint-plugin-react-x and eslint-plugin-react-dom for React-specific lint rules:
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Enable lint rules for React
reactX.configs['recommended-typescript'],
// Enable lint rules for React DOM
reactDom.configs.recommended,
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
Description
Consumer savings platform with grocery coupon tracking, deal alerts, and price comparison
Languages
Python
85.2%
TypeScript
13.5%
Shell
0.5%
Dockerfile
0.5%
Mako
0.1%