Ecommerce Template
Modern ecommerce template built with Next.js 16, React 19, Drizzle, Better Auth, Supabase, and Stripe.
Ten2Ten — передача аренды напрямую между жильцами, без риелторов и комиссии. Снять квартиру, комнату или студию в Москве и Санкт‑Петербурге от прежних жильцов.
Translation pending
CommerceTypeScript · PLpgSQLGitHub @txtBillyOnlineOwner 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.
Tenant-to-tenant apartment marketplace. NYC. No brokers, no fees — just $100 to connect with the person leaving the place you want.
Market: US / NYC · Languages: English, Spanish · Stack: Next.js 14, Supabase, Stripe, Twilio, Resend.Read the full README ↗Tenant-to-tenant apartment marketplace. NYC. No brokers, no fees — just $100 to connect with the person leaving the place you want.
Market: US / NYC · Languages: English, Spanish · Stack: Next.js 14, Supabase, Stripe, Twilio, Resend.
Instead of opening an empty browse page, the homepage is an intake form: seekers describe what they want, we match the first members by hand, and notify them by SMS. This avoids the "empty playground" problem. The intake also works over inbound SMS (Twilio webhook).
ten2ten/
├── src/
│ ├── middleware.ts # locale routing (must live in src/ with the app dir)
│ ├── app/
│ │ ├── layout.tsx # root metadata
│ │ ├── globals.css
│ │ ├── [locale]/
│ │ │ ├── layout.tsx # sets <html lang>
│ │ │ ├── page.tsx # cold-start homepage + intake
│ │ │ ├── browse/ # placeholder (Session 3)
│ │ │ ├── list/ # placeholder (Session 3)
│ │ │ └── account/ # placeholder (Session 2)
│ │ └── api/
│ │ ├── intake/ # POST intake submissions
│ │ ├── stripe/webhook/ # grants credits on payment
│ │ └── twilio/sms/ # inbound SMS intake
│ ├── components/IntakeForm.tsx
│ ├── lib/
│ │ ├── supabase/{client,server}.ts
│ │ ├── credits.ts # the credit ledger logic
│ │ ├── stripe.ts
│ │ ├── twilio.ts # SMS + email (Resend)
│ │ └── cn.ts
│ └── i18n/{config.ts,en.json,es.json}
└── supabase/
├── schema.sql # run first
└── rls-policies.sql # run second
npm install
In your Supabase project (SQL Editor), run in order:
supabase/schema.sqlsupabase/rls-policies.sqlEnable the postgis extension if the schema step doesn't (Database → Extensions → postgis).
Copy .env.example to .env.local and fill it in.
Supabase keys (Settings → API Keys in the dashboard):
sb_publishable_…) into NEXT_PUBLIC_SUPABASE_ANON_KEY, and the Secret key (sb_secret_…) into SUPABASE_SERVICE_ROLE_KEY.anon and service_role from the Legacy API Keys tab.Both work with this code — the new keys are drop-in replacements for the old ones.
npm run dev # http://localhost:3000 (redirects to /en)
npm run build # production build
npm run typecheck
/ → /en redirect./api/intake → saves to intake_requests → sends Twilio confirmation SMS./api/twilio/sms).Run npm run dev as usual. After deleting or renaming a route file (an
app/[locale]/**/page.tsx, layout.tsx, etc.) while the dev server is still
running, Next's .next cache can keep serving stale chunk manifests for the
old route tree — this shows up as layout.css/main-app.js 404s and pages
that hang on their first load instead of rendering or erroring. If you hit
that, stop the server and run:
npm run dev:clean # rm -rf .next && next dev
instead of a plain npm run dev. Do this any time a build step in these
session specs deletes a route (e.g. removing onboarding/ in the signup
merge).
txtBilly/ten2ten GitHub repo to a new Vercel project (auto-detects Next.js)..env.example variables under Settings → Environment Variables.ten2ten.app under Settings → Domains, then update DNS.https://ten2ten.app/api/stripe/webhook and the Twilio SMS webhook to https://ten2ten.app/api/twilio/sms.Note:
[email protected]is pinned. ThesupabaseCLI is not a project dependency — usenpx supabaseif you need it locally.