Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
Plan dinners, shop at real prices, and stay under your weekly grocery budget.
LifestyleTypeScript · HTMLGitHub @tmoody1973OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Mise keeps a family's weekly grocery spending under budget. You set a weekly budget, plan dinners in a chat with a "kitchen crew" (Claude), and every ingredient is priced at your own Kroger-family store (Pick 'n Save or Metro Market) before you commit.
Taken from the repository README
Loading the full README.
Read the full README ↗Mise keeps a family's weekly grocery spending under budget. You set a weekly budget, plan dinners in a chat with a "kitchen crew" (Claude), and every ingredient is priced at your own Kroger-family store (Pick 'n Save or Metro Market) before you commit. The plan becomes a week board and a shopping list, and a live tally tracks what you actually pay as you shop.
Live: https://mise-weld.vercel.app (sign-in required past the landing page; the demo login is under Try it below).
Built for the Devpost Build With AI: Basics hackathon with the Devpost Learn Skill Pack. The planning documents are in devpost/.
Live app: https://mise-weld.vercel.app
Demo login (a shared sample household): [email protected] / SampleWeek-e67d!
If it asks for a verification code, enter 424242.
Or sign up with your own email to start your own household from scratch.
Prices are Kroger's live estimates, so they may differ from the video.
lib/tally.ts; the AI picks dinners and products but never adds up the bill.Next.js 15 (App Router), React 19, Tailwind CSS 4, Convex (database and server functions), Clerk (sign-in), Vercel AI SDK with Claude (Sonnet for the crew, Haiku for product picks and tags), Kroger Public API, YouTube Data API v3, TinyFish (fallback page reader), Instacart Developer Platform, barcode-detector (ZXing in WebAssembly). Tests: Vitest.
You need Node.js 20+ and accounts for the services below (all have free developer tiers).
| Service | What for | Where to get keys |
|---|---|---|
| Convex | database and server functions | https://convex.dev (created by npx convex dev) |
| Clerk | sign-in | https://clerk.com: create an application and a JWT template named convex |
| Anthropic | the crew, recipe reading, tags | https://console.anthropic.com |
| Kroger | store list and prices; "Send to my cart" | https://developer.kroger.com: a client with the product.compact and cart.basic:write scopes, and redirect URI <your-site>/api/kroger/callback |
| YouTube Data API v3 | recipe videos and playlist sync | Google Cloud console |
| TinyFish (optional) | reading recipe sites that block plain fetching | https://tinyfish.ai |
| Instacart (optional) | "Send to Instacart" | Instacart Developer Platform (a development key opens Instacart's sandbox store) |
npm installcp .env.example .env.local
KROGER_ZIP is the ZIP code whose nearby Pick 'n Save / Metro Market stores appear in the store picker.YOUTUBE_PLAYLIST_ID is the list= part of the playlist link that "Sync my playlist" reads.INSTACART_API_BASE is optional; it defaults to Instacart's development server. Set it to https://connect.instacart.com with a production key.npx convex env set CLERK_JWT_ISSUER_DOMAIN https://<your-app>.clerk.accounts.devnpm run dev, then open http://localhost:3000.Never commit .env.local; it is git-ignored.
Pushing to main deploys the website on Vercel automatically. Convex functions don't deploy with it: when a change touches convex/, run npx convex dev --once first (the live app uses the Convex dev deployment), then push.
npm run typecheck # TypeScript
npm test # Vitest unit tests (tally, plan pricing, quantities, barcodes, recipe parsing, grouping, …)
npm run build # production build
app/ — pages (Plan, Week, List, Pantry, Recipes, Budget, the landing page at /) and server routes in app/api/convex/ — database schema and functions (weeks, list items, dinners, recipes, pantry, chats)lib/ — plain logic: the tally (tally.ts), plan pricing (meal-plan.ts), Kroger client (kroger.ts), barcodes (barcode.ts), Instacart (instacart.ts), recipe import (recipes/)components/ — screens' building blocks and the chat's cardsdevpost/ — scope, PRD, spec, build checklist, and app-map.html (a guide to the code)docs/decisions/ — decision records written during the buildDESIGN.md — the visual system ("Market Stall")Judges sign in to a demo account with a labelled sample week (the login is under Try it above). To put it back to its saved state after people have used it: ./scripts/demo-reset.sh (needs Convex admin access and the local, git-ignored snapshot; convex/demo.ts holds the internal snapshot/restore functions, which the app cannot call).
The live app's Terms of Service and Privacy Policy (app/terms, app/privacy) say what Mise stores, which services receive data and why, and how to ask for deletion.
KROGER_ZIP; other stores can be named, with prices typed in by hand.lib/recipes/parseJsonLdRecipe.ts, parseMicrodataRecipe.ts, recipeTypes.ts), the YouTube URL parser and transcript approach (lib/recipes/youtubeUrlParser.ts, youtube.ts), the Instacart unit-mapping approach (lib/instacart.ts), and the recipe list/view layout. Each file notes its origin.