Ecommerce Template
Modern ecommerce template built with Next.js 16, React 19, Drizzle, Better Auth, Supabase, and Stripe.
Screenshot a product page and get a plain Buy, Wait or Skip answer built from grouped analysis of real written buyer reviews, with an honest confidence level. Free to start.
CommerceTypeScript · JavaScriptGitHub @silverangel2OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Professional AI review intelligence SaaS for buyers, online sellers, and owner/admin operations.
ReviewIntel is platform-neutral. It works with manually pasted review text, TXT review batches, and quick screenshot uploads from Amazon, Walmart, Etsy, eBay, Shopify stores, AliExpress, Best Buy, TikTok Shop, Google Reviews, and future app-review sources. It does not scrape websites.
OPENAI_API_KEY is configuredOpen:
http://localhost:3000/analyze
Use:
Quick Scan Beta: upload JPG/PNG screenshots for a fast mobile-style check.Deep Analysis: paste review batches or upload TXT/CSV for stronger confidence.Compare: open /compare to compare 2-5 products.Product URLs are accepted as reference metadata only. ReviewIntel does not fetch or scrape the URL in this version.
Main pages:
app/page.tsx: homepage and first impression heroapp/analyze/page.tsx: analyzer page shellapp/results/page.tsx: latest result page shellapp/compare/page.tsx: product comparison pageapp/pricing/page.tsx: pricing pageapp/admin-access/page.tsx: hidden admin unlock routeapp/admin/page.tsx: admin/developer control centerMain components:
components/Header.tsx: top navigationcomponents/AnalyzerForm.tsx: paste reviews, TXT/CSV upload, screenshot upload, scan animation, quota UIcomponents/ResultsDashboard.tsx: separated Buyer and Seller result dashboardscomponents/ResultsClient.tsx: reads latest session result and demo result loaderscomponents/SellerIntelligenceTabs.tsx: interactive Seller Pro signal tabs for clusters, keywords, and riskscomponents/SellerReportActions.tsx: functional Seller report export and local save actionscomponents/SellerProCommandPanel.tsx: interactive Seller dashboard command boardcomponents/CompareForm.tsx: Buyer/Seller comparison workflowcomponents/DeveloperControlCenter.tsx: admin system controls and plan simulationcomponents/DeveloperQACenter.tsx: QA checklist and diagnosticscomponents/SponsoredResources.tsx: future sponsored/affiliate resource cardsCore logic:
app/api/analyze/route.ts: protected analysis API, OpenAI call, quota/rate limits, local fallbacklib/prompts.ts: AI prompt architecturelib/reviewSchema.ts: structured JSON schema expected from AIlib/reviewIngestion.ts: paste/TXT/CSV normalization and valid review countinglib/localAnalyzer.ts: local analysis fallback when OpenAI is not configuredlib/supabaseServer.ts: Supabase persistence, quota, profiles, analysis historylib/stripe.ts: Stripe checkout and billing portal helperslib/account.ts and lib/clientAccount.ts: roles, plans, local account state, quota labelsdb/schema.sql: Supabase/PostgreSQL schemanpm install
cp .env.example .env.local
npm run dev
Open http://localhost:3000.
OPENAI_API_KEY=
OPENAI_MODEL=gpt-5.2
STRICT_OPENAI_ERRORS=true
DATABASE_URL=
NEXT_PUBLIC_APP_URL=http://localhost:3000
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
STRIPE_BUYER_PRO_PRICE_ID=
STRIPE_SELLER_STARTER_PRICE_ID=
STRIPE_SELLER_PRO_PRICE_ID=
NEXT_PUBLIC_SPONSORS_ENABLED=true
REVIEWINTEL_ADMIN_CODE=
REVIEWINTEL_ADMIN_CODE_HASH=
REVIEWINTEL_ADMIN_SESSION_SECRET=
[email protected]
The app can render without Supabase or Stripe in local demo mode, but public paid launch needs Supabase and Stripe configured. If OPENAI_API_KEY is set and OpenAI returns a quota, billing, model, or network error, ReviewIntel returns that error instead of a placeholder result. In local development only, /admin-access accepts reviewintel-dev-admin when no admin code environment variable is set.
/ landing page/analyze deep paste/TXT analyzer plus quick screenshot analyzer/results latest analysis dashboard/compare Buyer/Seller product comparison for 2-5 products/login, /signup, /auth/reset-password, /auth/verify-email/dashboard, /dashboard/customer (Buyer dashboard), /dashboard/seller/account, /pricing/admin-access private admin unlock route/admin System Control Center and Developer ModePOST /api/analyze
{
"productName": "Optional product or business name",
"productUrl": "Optional reference URL. The API does not fetch it yet.",
"platform": "shopify",
"audience": "both",
"reviewSections": [
{
"id": "batch-1",
"title": "Recent negative reviews",
"text": "Pasted review text...",
"source": "paste"
}
],
"ingestionMode": "deep_paste",
"imageAggregation": "individual",
"images": [
{
"name": "reviews.png",
"type": "image/png",
"dataUrl": "data:image/png;base64,...",
"size": 120000
}
]
}
Returns structured JSON including:
overall_summarypositive_pointsnegative_pointscommon_complaintspraised_featuressentiment_scoreconfidence_scorebuyer_recommendationseller_insightsimprovement_suggestionsfeature_requestsquality_concernspackaging_issuesdurability_issuessupport_issueskeyword_analysisdb/schema.sql in the SQL editor.review-screenshots./dashboard and /auth/verify-email.SUPABASE_SERVICE_ROLE_KEY is present only in server-side environments. It powers persistent quota, profile creation, saved analysis history, and Stripe webhook updates.Deep Analysis = Paste Reviews: primary path for long review batches, TXT uploads, multiple pasted sections, buyer decisions, and seller analytics.Quick Scan Beta = Screenshot Upload: lightweight path for mobile users and fast checks from a few visible reviews.Mixed Evidence: combines pasted review batches with quick screenshots.Product URL Import: reserved architecture only; no fetching or scraping is implemented yet.Ecommerce Connectors: future approved APIs, seller-owned store integrations, CSV feeds, and partner connectors.Large pasted batches are accepted up to the configured server cap, then chunked before model analysis for stability. Admin accounts bypass quota/rate limits for testing, while public users remain protected by request size, file size, and daily usage gates.
STRIPE_BUYER_PRO_PRICE_ID, STRIPE_SELLER_STARTER_PRICE_ID, STRIPE_SELLER_PRO_PRICE_ID, and STRIPE_SECRET_KEY./api/stripe/webhook.STRIPE_WEBHOOK_SECRET.subscriptions and billing_history.Admin accounts do not use public signup/login. Open /admin-access, enter the private admin code, then use /admin for the System Control Center. Admin sessions are server-validated, hidden from search indexing, rate-limited on access attempts, and auto-expire.
npm run lint
npm run typecheck
npm run build
Before selling access, run one real /analyze request with a funded OpenAI project. A 429 insufficient_quota response means the app is correctly calling OpenAI, but the OpenAI billing/quota setup is not ready yet.
Sponsored placements are intentionally designed as a small resource library, not banner ads. The current build uses lib/sponsors.ts placeholders and can be disabled with:
NEXT_PUBLIC_SPONSORS_ENABLED=false
The Supabase schema includes sponsors and sponsor_events tables for future admin add/edit/remove controls, affiliate URLs, active windows, placements, impressions, and clicks.
/robots.txt, /sitemap.xml, /api/analyze, and Stripe webhook routes.Cache-Control: no-store.usage_tracking.