Fujimod
브라우저에서 카메라 펌웨어를 시험하고 Fujimod SD 부팅 파일을 만든다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A rental app for people who know the feel they want better than the filters. Describe a stay in one sentence ("quiet pet friendly cabin with a hot tub under $300 a night") and get ranked stays back. Ask booking and policy questions about a stay and get the exact text from Roam's own policies. Book with Stripe, or become a host and list your own stay.
Built with Expo (React Native), Expo Router, NativeWind, Clerk, Sanity, Neon Postgres, Stripe, DeepSeek and PostHog.
Roam is a demo. Payments run in Stripe test mode, so no real money moves, and the stays and photos are samples.
Landing page: roam.norbertoignaciojr.dev.
Android: download the APK (about 46 MB, arm64) and install it, allowing installs from your browser or file manager. It talks to the hosted API.
iOS: there is no iOS build to share yet (it needs an Apple Developer account). The screenshots below show the iOS app.
Sign in with the demo account, or create your own with an email:
[email protected] | |
| Password | RoamDemo-2026-Stay |
| New-device code | 424242 |
The demo account is shared, so saved stays and bookings made on it are visible to the next person.
Pay with the Stripe test card 4242 4242 4242 4242, any future expiry, any CVC.
Search and policy questions call a paid model, so there is a daily cap. If it is used up, search falls back to a simpler reading and Ask says to try tomorrow.
| Find | Stay | Book and manage |
|---|---|---|
More: add a stay, manage a stay, settings, personal info, onboarding, sign up, sign in.
The app and its API routes are one Expo project. API routes (src/app/api/*+api.ts) run on EAS Hosting (Cloudflare Workers). Every route verifies the Clerk session and counts the call before doing any work.
flowchart LR
App["Roam app<br/>Expo + Expo Router"] -->|"session token"| API["API routes<br/>EAS Hosting"]
App -->|"public reads"| CDN["Sanity CDN<br/>stays, hosts, policies"]
App -->|"PaymentSheet"| Stripe
App -.->|"events, no text"| PostHog
API --> Clerk["Clerk<br/>auth, saved stays"]
API --> Neon[("Neon Postgres<br/>bookings, holds,<br/>rate limits, daily budget")]
API --> Context["Sanity Context<br/>GROQ search + policy KB"]
API --> Embed["Sanity Dataset Embeddings<br/>soft-intent ranking"]
API --> DeepSeek["DeepSeek<br/>labels the sentence,<br/>picks policy entries"]
API --> Stripe["Stripe<br/>PaymentIntents"]
Stripe -->|"webhook"| API
API -->|"host writes"| Sanity["Sanity API<br/>property, host, policy"]
Repository layout:
| Path | What it is |
|---|---|
src/app/ | Screens (Expo Router) and API routes |
src/components/ | Shared design-system components, shown at /design-system |
src/lib/ | Hooks, search and booking logic, server helpers, database schema |
studio/ | Sanity Studio (the only content schema) and seed scripts |
landing/ | Astro marketing site, separate package.json |
drizzle/ | Postgres migrations |
prompts/ | Plan for each feature, as history |
AGENTS.md | Every decision that is still true |
The full list is in AGENTS.md. The ones that shape the app:
You need your own Clerk, Sanity, Neon, Stripe (test mode) and DeepSeek accounts. Copy the variable names from .env.example into .env (never commit it).
npm install
npx drizzle-kit migrate # create the database tables
npx expo start # press i for the iOS simulator
npx expo lint
npx tsc --noEmit
Native modules (Stripe, SVG) need a development build rather than Expo Go for custom builds: npx expo run:ios.
Content and seed data:
cd studio
npx sanity schema deploy && npx sanity deploy
npx sanity exec scripts/seed.ts --with-user-token
Landing page:
cd landing && npm install && npm run dev
Android APK for testers (EAS):
npx eas-cli@latest build --platform android --profile production-apk
BOOKINGS_LIVE=1.+clerk_test email with a fixed code.