Fujimod
브라우저에서 카메라 펌웨어를 시험하고 Fujimod SD 부팅 파일을 만든다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Hungry is a dish-first food discovery app for Singapore hawker centres and food courts. Built with Expo + React Native. Mock-first for local demos, with Supabase-backed integrations staged behind release gates.
| Need | Go to |
|---|---|
| Start here (agents) | AGENTS.md |
| Workflow rules | CLAUDE.md |
| Operating model | WORKFLOW.md |
| Low-token defaults | ops/low-token-cheatsheet.md |
| Active backlog | tasks/backlog.md |
| Verification evidence | tasks/verification.md |
| Session history | tasks/session-log.md |
| Tech stack + commands | tasks/environment.md |
| Design tokens + components | tasks/design-system.md |
| Screen inventory + navigation | tasks/screens.md |
| Domain types + mock data | tasks/data-contracts.md |
| Testing + feedback loops | tasks/test-harness.md |
| Accessibility source guide | docs/accessibility-style-guide.md |
| Product requirements (summarised) | tasks/product-context.md |
| Marketing launch kit | marketing/ |
| Historical roadmap + audit trail | tasks/todo.md |
| Past lessons | tasks/lessons.md |
| Product requirements | Research/01_Product_Requirements_Document_Hungry.docx |
| App flow spec | Research/02_App_Flow_Document_Hungry.docx |
| Frontend guidelines | Research/03_Frontend_Guidelines_Hungry.docx |
| UI prototypes | design/figma-v2/ and design/stitch/ |
| Key | Value |
|---|---|
| Product | Hungry — dish-first food discovery |
| Market | Singapore (hawker centres, food courts, restaurants) |
| Platform | iOS + Android (Expo SDK 55 / React Native 0.83.6) |
| Phase | Consumer mobile app, mock-first locally with Supabase-backed MVP integrations |
| Production posture | MVP production defaults keep DMs, comments, stories, collections, gamification, merchant centre, merchant claim CTA, prototype routes, and floorplans disabled until separate launch gates pass |
| Still production-disabled | OAuth providers, merchant centre, merchant claim CTA, direct messages, comments, stories, collections, gamification/passport, prototype routes, and indoor floorplans |
| Core idea | Find the dish you want, then see which stall serves it — not the other way around |
| Taste model | 6-axis vector: sweet · spicy · sour · salty · rich · aromatic |
| Layer | Choice |
|---|---|
| Framework | Expo SDK 55 + React Native 0.83.6 |
| Language | TypeScript (strict mode) |
| Navigation | React Navigation v7 |
| State | Zustand |
| Forms | React Hook Form |
| Animation | Reanimated 3 |
| Sheets | @gorhom/bottom-sheet |
| Map | @rnmapbox/maps (mock surface available) |
| Icons | lucide-react-native |
| Fonts | Nunito + DM Mono |
| Command | Purpose |
|---|---|
npm install | Install deps |
npm run typecheck | TypeScript check — primary gate |
npm run start | Expo dev server |
npm run ios | iOS simulator |
npm run android | Android emulator |
npx expo-doctor | Dependency health |
npm run test | TSX/Node test suite |
npm run data:supabase:stage:canonical | Generate staging-only SQL for the canonical Singapore food-business CSV |
npm run data:supabase:stage:canonical:split | Generate chunked staging SQL files for linked Supabase imports |
The application uses feature flags to toggle functionality for development and release branches. These are configured in src/constants/featureFlags.ts.
| Flag | Description | Default |
|---|---|---|
HUNGRY_DATA_SOURCE | Toggle between mock and supabase data layers. | mock |
FEATURE_FLAGS.directMessagesEnabled | Enable the Direct Messages tab and chat functionality. | true outside production, false in production |
FEATURE_FLAGS.prototypeRoutesEnabled | Register V2/prototype routes outside production release builds. | true in development/staging, false in production |
FEATURE_FLAGS.merchantCentreEnabled | Register merchant centre beta routes behind auth, role, and verification guards. | true outside production, false in production |
FEATURE_FLAGS.merchantClaimCtaEnabled | Enable the consumer stall claim CTA. | true outside production, false in production |
FEATURE_FLAGS.commentsEnabled | Enable community comments on posts and reviews. | true outside production, false in production |
FEATURE_FLAGS.oauthProvidersEnabled | Enable Google/Apple OAuth provider buttons. | true in development/staging, false in production |
FEATURE_FLAGS.floorplansEnabled | Register indoor floorplan routes and entry points. | false in all environments until launch gates pass |
FEATURE_FLAGS.gamificationEnabled | Enable Passport and Missions surfaces. | true outside production, false in production |
FEATURE_FLAGS.collectionsEnabled | Enable collection list/detail routes. | true outside production, false in production |
FEATURE_FLAGS.storiesEnabled | Enable story viewer and story creation surfaces. | true outside production, false in production |
FEATURE_FLAGS.craveEnabled |
To override these locally, you can use .env.development or modify the constants directly during prototyping.
Stitch screen iteration (23 October 2026): eight Search, Profile, Achievements,
Settings, Reviews, Saved Dishes, Stall, and Dish design exports are saved in
design/stitch/iterations-11940609752387078506/.
The corresponding React Native screens are updated on codex/stitch-eight-screens;
focused contracts pass 30/30. PR CI and native visual acceptance remain pending.
| Area | Status |
|---|---|
| Expo scaffold | Done |
| Domain types + stores | Done |
| Mock repositories | Done |
| Navigation shell | Done |
| Home, Discover, Maps, Search | Done |
| Auth, Onboarding | Done |
| Developer launcher (dev-only) | Done |
| Profile, Favourites, Review History | Done |
| Review flow | Done |
| Reads (feature-flagged) | Done |
| Offline + NotFound states | Done |
| Marketing launch kit | Done |
| Excel Ingestion & ETL Migration | Done — reconciled workbook and rights-safe runtime catalog published |
| Singapore F&B source refresh | In progress — 38,584-record public-access Excel; 294 catalogue-linked websites reviewed with 507 menu and 2,682 image URL candidates in separate review-only tabs. 11 operator snapshots contribute 246 exact outlet joins, 461 brand menu items, and 553 operator/exact-venue image candidates. OSM contributes 132 strict plus 694 labelled tier-2 joins. Fresh outlet-level menus, ratings, image rights, and closure verification remain incomplete. |
| Typecheck | Passing |
| Expo Doctor | Passing (18/18) |
| Agent harness docs | Done |
| Unit tests | Passing (npm test) |
| Playwright E2E | Passing when run with localhost access; Codex sandbox TCP bind needs elevated/local shell |
src/lib/services/mock/data.tssrc/theme/tokens.ts — never hardcode valuesFEATURE_FLAGS.prototypeRoutesEnabled is true; production builds keep unfinished prototype/design routes off the root navigatorMerchantTabs is registered only when FEATURE_FLAGS.merchantCentreEnabled is trueFEATURE_FLAGS.directMessagesEnabled is falseFEATURE_FLAGS.floorplansEnabled is trueFEATURE_FLAGS.mockMapboxEnabled = true for test environmentsEXPO_PUBLIC_MAPBOX_ACCESS_TOKEN locally to enable the live Mapbox surface; without it, the map falls back to a static coordinate preview so the repo screens stay inspectable.16% / 44% / 82%) and dynamic camera padding; the active pilot directory overlay is Koufu @ JEM (L2 + L3) with official floor-map image backplates, unit-aligned polygons, computed fit-to-viewport scaling, and explicit zoom controls.expo-image-picker (dev client/native build required).npm installnpm run startnpm run iosnpm run androidnpm run typechecknpm run data:enrichnpm run data:supabase:stage:canonicalnpm run data:supabase:stage:canonical:splitResearch/agent_interview_question_bank.md.data/ folder also contains the Singapore food-business workbook, a checked-in curated seed snapshot, and the refresh pipeline for rebuilding the database from public datasets plus supplementary hawker- and food-court-source discovery.marketing/ workspace now contains repo-grounded launch materials plus the Next.js marketing site in marketing/web/ with the homepage, for-merchants, about, and privacy routes.tasks/backlog.md.tasks/verification.md.tasks/todo.md remains the historical roadmap and audit trail, not the live status surface.See tasks/todo.md for the historical/full roadmap and tasks/backlog.md for the currently active work. Key future features include:
design/figma-v2/building-layout.html for mockups).| Enable the "Daily Crave" swiping discovery mode. |
true |
FEATURE_FLAGS.mockMapboxEnabled | Use a static fallback for the map in test environments. | false |
__DEV__, app now boots into the Developer Launcher to speed QA state setup (signed out / onboarding incomplete / onboarding complete presets).Maps tab, a real MapZoomedIn route, and polygon-based building directory layouts (including Wisma and JEM mall-style floor overlays with vertical level switching).docs/audit/. These serve as the authoritative implementation guide for Batch 1–8.main. Typecheck, lint, format, 650 source tests (2 credential-gated staging skips), local Playwright, Expo Doctor 18/18, dependency/security, asset, static Supabase, and Edge checks pass. This remains a release No-Go until Supabase capacity/provenance and live smokes are resolved, CI/Security run green on the final SHA, final iOS/Android artifacts receive device QA, and five tester journeys are recorded; see tasks/Roadmap/Release/release-0.1-week-1-2-completion-report.md.getCatalogRawService()). Supabase serves the authenticated, release-versioned raw-catalog RPCs; mock and Excel serve the same contract from their local repository (src/lib/services/mock/catalogMockService.ts). The legacy client-side search/browse path and its catalogReadV2 / EXPO_PUBLIC_CATALOG_READ_V2 flag are gone, so dev, preview and production all run one path.mapEnabled). Sign-in is required before any app route, so the map and raw-catalog RPCs are never reached as a guest.