Bygga
제품명을 박스에 입력하면 Bygga가 3D로 모든 조립 단계와 부품·스크류·도구를 보여주고 음성으로 안내합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An AI-powered kitchen companion built around reducing food waste.
Scan a food item with your camera → a vision model reads its name, category and
expiry date → it lands in a pantry inventory sorted by what expires first → an LLM
turns that inventory into recipe suggestions, a 7-day meal plan, and a
shopping list of only what you're missing.
Everything is personalised: allergies, cooking skill, spice tolerance, diet, cuisine,
household size and cooking style all feed into the prompts.README 전문 보기 ↗An AI-powered kitchen companion built around reducing food waste.
Scan a food item with your camera → a vision model reads its name, category and expiry date → it lands in a pantry inventory sorted by what expires first → an LLM turns that inventory into recipe suggestions, a 7-day meal plan, and a shopping list of only what you're missing.
Everything is personalised: allergies, cooking skill, spice tolerance, diet, cuisine, household size and cooking style all feed into the prompts.
| Layer | Choice |
|---|---|
| Frontend | React 19 + TypeScript, Vite, React Router (HashRouter) |
| Styling | Tailwind (CDN) with a hand-written animation layer in index.html |
| Backend | Express 5 + TypeScript |
| Database | SQLite via Drizzle ORM (local.db) |
| AI | OpenAI gpt-4o-mini (text + vision) |
| Auth | Google Identity Services + SQLite-backed sessions |
App data (pantry, shopping list, meal plan, profile, favourites) lives in the browser's
localStorage. The database holds users and sessions only — so data is per-browser and
does not sync across devices.
Prerequisites: Node.js 20+
npm install
Create a .env in the project root:
OPENAI_API_KEY=sk-... # required — https://platform.openai.com/api-keys
SESSION_SECRET=any-long-random-string
DATABASE_URL=./local.db
GOOGLE_CLIENT_ID= # optional — see "Google sign-in" below
SKIP_AUTH=true # dev bypass: auto sign-in, skips the login screen
Run the API and the client in two terminals:
npm run dev # Express API on http://localhost:5000
npm run dev:client # Vite client on http://localhost:5173
Open http://localhost:5173. The client proxies /api to port 5000.
For a production-style run, npm run build then npm start serves everything from
port 5000 on its own.
.envis read once at startup — restart the server after editing it.
Optional. With GOOGLE_CLIENT_ID unset the login screen says so and guest mode still works.
http://localhost:5173 and http://localhost:5000.env as GOOGLE_CLIENT_ID, set SKIP_AUTH=false, restartThe browser receives a Google ID token and posts it to /api/auth/google, which verifies
it was issued for this client ID, is unexpired, and has a verified email — then creates a
session. No client secret is involved.
The Express server serves the built frontend itself, so the whole app is one service
on one origin — which keeps session cookies working with no CORS and no cross-site
cookie rules. render.yaml describes it as a Render Blueprint.
Serverless hosts (Vercel/Netlify functions) are a poor fit here:
better-sqlite3needs a real writable disk, and recipe generation takes 12–25s, which is at or past typical function time limits. A static-only deploy gives you the UI with every/api/*call returning 404.
Deploy on Render
render.yaml (Node, npm install && npm run build, npm start, 1 GB disk at /data).OPENAI_API_KEYGOOGLE_CLIENT_ID
SESSION_SECRET is generated for you; DATABASE_URL points at /data/local.db on the
persistent disk so users and sessions survive restarts and deploys.https://smart-pantry.onrender.com).The free plan sleeps after inactivity, so the first request after idle takes ~30s to wake.
| Command | Does |
|---|---|
npm run dev | API server (tsx, port 5000) |
npm run dev:client | Vite dev server (port 5173) |
npm run build | Build the client into dist/ |
npm start | Serve the built app from the API server |
npm run db:push | Push the Drizzle schema to SQLite |
npm run db:studio | Drizzle Studio |
npx tsc --noEmit | Typecheck |
pages/ screens (Dashboard, Scanner, Pantry, Chef, Planner, Settings, …)
components/ reusable UI (NavBar, VideoPlayer, CookingTimer, LockScreen, …)
contexts/ React context providers (allergies, favourites, theme, walkthrough, …)
services/ browser-side services (storage, AI client, notifications, PIN, …)
hooks/ shared hooks
server/ Express API, auth, AI routes, SQLite session store
shared/ Drizzle schema shared by client and server