尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗AI product photography for real products. One engine, three ways in:
| Surface | Where | Code |
|---|---|---|
| Web app + marketing site + admin | https://your-domain.com | apps/web (Next.js 15) |
| Shopify embedded app | Shopify admin → Apps | apps/web/src/app/shopify + shopify.app.toml |
| iOS and Android app | App Store / Google Play | apps/mobile (Expo SDK 58) |
| Shared rules (presets, prompts, credit maths, GST) | packages/core | |
| Database, ledger, queue | Supabase Postgres | supabase/migrations |
pass / review are delivered; fail is retried, then released with no charge.credit_ledger) with SQL functions so it is atomic and idempotent.Providers sit behind one adapter (apps/web/src/lib/providers). Default order is Gemini → OpenAI → fal. Model IDs, order and per-image cost are editable in Admin → Settings → providers without a deploy. With no keys at all, a clearly labelled sandbox makes placeholder images so the whole flow can be tested.
npm install # web + core (workspaces)
cd apps/mobile && npm install
cp .env.example apps/web/.env.local # fill in
ap-south-1 recommended).supabase/migrations/*.sql in order (or supabase db push).https://your-domain.com/auth/callback.{{ .Token }} so the mobile app can use the 6-digit code.supabase/cron.template.sql with your URL and CRON_SECRET (queue worker every minute + daily checks).apps/web. Add the variables from .env.example.maxDuration), which needs Vercel Fluid compute (default on new projects).PLATFORM_ADMIN_EMAILS, sign in, open /admin.seller: legal name, GSTIN, address, state code, SAC code (confirm with your CA), invoice prefix.RAZORPAY_KEY_ID, RAZORPAY_KEY_SECRET.https://your-domain.com/api/webhooks/razorpay, events: payment.captured, order.paid, payment.failed, refund.processed, payment.dispute.lost. Secret → RAZORPAY_WEBHOOK_SECRET.shopify.app.toml, replace REPLACE_WITH_DOMAIN, then shopify app deploy (sets scopes, URLs and webhooks including the three privacy webhooks).SHOPIFY_API_KEY, NEXT_PUBLIC_SHOPIFY_API_KEY (same value), SHOPIFY_API_SECRET, ENCRYPTION_KEY.shopify_billing.test is true by default; set false in Admin → Settings at launch.apps/mobile/app.json → extra (API URL, Supabase URL/anon key, RevenueCat keys) and the iOS bundleIdentifier / Android package.pocketshoot.credits.5 etc. for iOS, pocketshoot_credits_5 etc. for Android, matching Admin → Pricing), add a webhook to https://your-domain.com/api/webhooks/revenuecat with an Authorization header value of Bearer <REVENUECAT_WEBHOOK_AUTH>.npx eas-cli@latest build --platform all, submit with eas submit. In-app purchases need a development or production build (not Expo Go).npm test # 19 core tests + 18 web tests (ledger SQL in PGlite, image pipeline)
cd apps/web && npx next build
cd apps/mobile && npx tsc --noEmit
| Question | Decision | Change it in |
|---|---|---|
| Charging rule | Reserve on submit, charge only delivered images, 1 free remake per image within 7 days | Admin → Settings → credit_policy |
| Trial | 2 credits per verified email, max 3 per network per 30 days, watermark, 1024px | credit_policy |
| Credit expiry | Paid 12 months, free/bonus 60 days | credit_policy |
| Output resolution | 2048px long edge (website hero 2560px) | packages/core/src/presets.ts |
| Retention | Failed outputs deleted after 30 days | retention |
| Payment gateway | Razorpay (web), Shopify Billing (Shopify), Apple/Google via RevenueCat (mobile) | |
| Pricing | Spec's launch hypotheses (web INR, Shopify USD) | Admin → Pricing |