Bygga
제품명을 박스에 입력하면 Bygga가 3D로 모든 조립 단계와 부품·스크류·도구를 보여주고 음성으로 안내합니다
BuckeyeBites가 오늘 Scott 메뉴의 Traditions 중 알레르기·식단·목표에 맞는 요리를 골라줍니다
BuckeyeBites picks a plate from today's Traditions at Scott menu that fits your allergies, diet and goals, then walks you to it.
라이프스타일TypeScript · PLpgSQLGitHub @kylafallis온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Live site: https://buckeyebites.vercel.app
BuckeyeBites helps Ohio State students eat well at Traditions at Scott. Tell it your allergies, diets and goals once, and it only ever shows you food that is safe for you. Tap Feed me for a ready-made plate from today's menu, with the stations to visit and how much of each item to take.
Built at HackOHI/O 2026 by team Dominatrices: Kyla (tech lead), Hanna (data), Victoria (testing and AI), Maddie (design).
Every list of food in the app goes through one filter on the server (filterSafe in lib/menu.server.ts) before you see it:
Feed me, the menu, swipes, the meal plan and the recipe dupe all use this same filter. The AI in the recipe dupe only ever sees foods that already passed it, so it can't suggest something unsafe. The data scripts also check the tags, scripts/allergen-audit.sql confirms that no logged or planned plate contains a user's allergen, and the demo data script refuses to write anything if its own audit finds a problem.
BuckeyeBites is a helper, not a medical guarantee. Students with severe allergies should still confirm with dining staff.
Only in the recipe dupe. Gemini (gemini-flash-lite) matches the ingredients in a pasted recipe to foods on Scott's menu. If Gemini is slow or unavailable, a rule-based matcher (lib/dupe.ts) takes over. Feed me uses no AI: the team wrote the plates and the code picks between them.
| Real | Estimated | Simulated |
|---|---|---|
| Scott's menu, stations, nutrition and allergen labels for Oct 24–31, 2026 | Iron, vitamin D and calcium badges, which are tagged from food names. Nutrition for the Salad Bar, Grains and Greens and Mongolian Grill, which are typical values. Sample foods for the coming-soon locations. | Demand on the Insights page, from 150 simulated students marked is_simulated |
@google/genai, for the recipe dupe onlymain deploysnpx tsx scripts/sync-sheet.ts copies it into menu_items, mapping the sheet's tags to allergens and diets.npx tsx scripts/import-recipes.ts loads the ready-made plates from data/recipes.csv.scripts/sample-locations.sql adds sample foods for the coming-soon locations.npx tsx scripts/demo.ts creates the demo personas and simulated students. Use --dry-run to check without writing.npm install
cp .env.example .env.local # then fill in the values below
npm run dev # http://localhost:3000
.env.local needs:
| Variable | Used for |
|---|---|
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY | the app |
SUPABASE_SERVICE_ROLE_KEY | scripts only, never browser code |
GEMINI_API_KEY | the recipe dupe (optional; without it, the rule-based matcher is used) |
MENU_SHEET_ID | scripts/sync-sheet.ts |
Run the files in supabase/migrations/ in order in the Supabase SQL Editor before the first sync.