Svelte Commerce
A standalone open-source storefront built with SvelteKit, headless across 26 commerce backends. MIT licensed.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A Vercel-ready Next.js foundation for BikeHub: an open, location-led service, routes and rider-knowledge platform for India’s premium motorcycle community.
The rider-facing website is public. Visitors do not need to register or sign in to search service centres, read profiles, explore routes or read community content. Authentication is reserved for service-centre partners and administrators.
npm install..env.example to .env.local.sb_publishable_...). Older projects may use the legacy anon key as a fallback.npm run dev and open http://localhost:3000.The public pages render with a safe local fallback when Supabase is unavailable. With Supabase configured, service-centre discovery reads live rows and centre enquiries are inserted into the database.
After deploying with the Supabase environment variables, open /api/health/supabase. A successful connection returns JSON containing "connected": true and the number of service-centre rows visible through RLS.
Create a new Supabase project, open SQL Editor and run these files in order:
supabase/migrations/001_schema.sqlsupabase/migrations/002_rls_policies.sqlsupabase/migrations/003_seed.sqlsupabase/migrations/004_launch_content.sqlsupabase/migrations/005_api_grants.sqlsupabase/migrations/006_listings_live.sqlService centres, repair shops and riding-gear shops are imported from OpenStreetMap for 18 cities (Delhi NCR, Mumbai, Pune, Bengaluru, Hyderabad, Chennai, Kolkata, Ahmedabad, Jaipur, Chandigarh, Lucknow, Kochi, Indore, Dehradun). It needs NEXT_PUBLIC_SUPABASE_URL and SUPABASE_SECRET_KEY in .env.local.
npm run import:osm # all cities
npm run import:osm -- pune # one city
npm run import:osm -- --dry # fetch and classify without writing
Re-running updates existing rows in place (matched on the OSM id) and never overwrites listings a partner has claimed. OSM data must be credited, and the listing pages already do this. OSM covers far fewer shops than Google Maps. service_centres.google_place_id is reserved for a later Google Places API enrichment. Google's terms only allow storing the place id, so other Google fields should be fetched live or cached for no more than 30 days.
Create users in Supabase → Authentication. To link a partner to their listing, set service_centres.owner_id to the user's id. To make someone an administrator, set profiles.role = 'admin'. Partners can then edit their listing and manage enquiries at /partner/dashboard. Admins can verify or hide listings and read enquiries and contact messages at /admin.
Set partner and administrator roles by updating public.profiles.role from a secure administrator process. Never expose the service-role key in browser code.
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, and NEXT_PUBLIC_SITE_URL in Project Settings → Environment Variables. Add SUPABASE_SECRET_KEY only after a server-only feature genuinely requires it; never expose it with a NEXT_PUBLIC_ prefix.npm run build as the build command.For continued development, connecting a Git repository to Vercel is more reliable than repeatedly uploading folders.
/partner/dashboard and /admin with server-side role checks before production use.Images in public/images were created for the BikeHub concept and optimized for this project. Each primary visible card uses a distinct image. Alt text and stable image containers are included to prevent layout shift.