Customer Engagement Platform for Email, Push Notifications, & SMS
The world's leader for mobile push notifications, web push, SMS, email and in-app messaging. Trusted by 2 million+ businesses to send 12 billion+ messages per…
An AI agent assigned to your business — outbound, ads, website, follow-up, chat, reviews, operations. A human expert checks everything it does. Try it free on a sample business.
Translation pending
MarketingTypeScript · PLpgSQLGitHub @2romanroyce8OnlineOwner 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
Loading the full README. The saved excerpt is shown below.
AI Presence Optimization for local and service businesses. $200/year, no monthly subscription.
• Framework: Next.js 14 (App Router, TypeScript)
• Styling: Tailwind CSS
• Database / Auth: Supabase (Postgres + Row Level Security + Supabase Auth)
• Payments: Manual proof-of-payment — Cash App, PayPal, or Zelle, confirmed by an admin
• Email: Resend (wired for future transactional email; not yet called anywhere)
How payments actually work (read this first)Read the full README ↗AI Presence Optimization for local and service businesses. $200/year, no monthly subscription.
Cash App and Zelle have no merchant API or webhook for one-off payments like this — there is no programmatic way to know money arrived. PayPal does have a real merchant API, but to keep all three payment methods consistent, this app treats all three the same way:
/pay.SFB-7K2Q9X) and shows
payment instructions (your Cash App tag / PayPal.me / Zelle contact from
env vars)./admin/payments as pending. You check the actual
Cash App / PayPal / Zelle account for a matching payment + reference
code, then click Confirm (or Reject with a reason)./onboarding unlocks for that customer — the intake
wizard is gated on payments.status = 'confirmed' for their account.There is deliberately no way to "guess" this into automation — false confirmation would mean giving away the service for free.
app/page.tsx) — full marketing site matching the approved
preview: hero, search-vs-AI comparison, top-5 shortlist simulator, signal
diagram, myth-busting cards, animated AI Presence Score, 14-day process,
audit scope grid, platform band (with required non-affiliation
disclaimer), $200/year pricing card, FAQ, final CTA, footer disclaimer.
The pricing CTA links to /pay.app/pay/page.tsx + app/api/payments/**) — account
creation, method selection, reference code generation, and proof
submission. See above.app/onboarding/page.tsx + app/api/onboarding/route.ts)
— 5-step intake (Business → Location → Services → Presence →
Competition). Server-side gate redirects to /pay unless the signed-in
user has a confirmed payment; the API route re-checks this before
creating anything.app/dashboard/**) — Overview (status tracker,
score, renewal date), AI Presence Score, Findings, Recommendations,
Presence Report, Billing, Support. All server-rendered from Supabase with
RLS enforcing that customers only see their own data.app/admin/**) — customer list, per-project detail page
with controls to change project status, record scores, add findings, add
recommendations, publish the final report, and leave internal notes;
plus /admin/payments to confirm or reject pending submissions.
Gated by public.users.role = 'admin' in middleware and again in every
/api/admin/** route handler.supabase/schema.sql) — every table from the spec's
database_models list (with payments reshaped for the manual-review
flow — see schema comments), with RLS policies scoping customer access
to their own data and admin access to everything.Supabase
supabase/schema.sql in the SQL editor.update public.users set role = 'admin' where email = '[email protected]';
(the row is created automatically the first time that user signs up — insert it manually first if you need admin access before that).Payment contacts
Environment variables
.env.example to .env.local and fill in every value.Install & run
npm install
npm run dev
Deploy to Cloudflare Pages/Workers
This project is set up for OpenNext's Cloudflare adapter
(@opennextjs/cloudflare + wrangler), which runs full Next.js SSR —
including the Node-dependent bits (Supabase service-role calls,
cookie-based middleware) — on Cloudflare's Workers runtime via the
nodejs_compat flag already set in wrangler.jsonc.
npm install
# Log in to Cloudflare once (opens a browser to authorize wrangler)
npx wrangler login
# Secrets — do NOT put these in wrangler.jsonc, since that file can end
# up committed to git:
npx wrangler secret put SUPABASE_SERVICE_ROLE_KEY
npx wrangler secret put RESEND_API_KEY
# NEXT_PUBLIC_* values (including the payment contact strings) are
# already set as plain "vars" in wrangler.jsonc — edit them there, or
# override per-environment in the Cloudflare dashboard under Settings >
# Variables.
# Build with OpenNext, then deploy
npm run cf:deploy
sfb-connect.<your-subdomain>.workers.dev URL.sfbconnect.com. Since the domain's DNS already lives on Cloudflare,
this provisions the CNAME/proxy record for you automatically — no
manual DNS edits needed.NEXT_PUBLIC_APP_URL to https://sfbconnect.com once the
custom domain is live./pay to see it), and notifying you when a new payment needs review./pay's proof form for actual file uploads.npm run cf:previewAlternative: this is also a completely standard Next.js app, so it
deploys to Vercel with zero changes if you'd rather not use the Workers
runtime — just don't run the cf:* scripts or add the OpenNext/wrangler
files in that case.