尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Dharamshalstay website with vercel and supabse
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Full-Stack Travel Marketplace for Dharamshala, McLeod Ganj & Kangra Valley tourism.
Built with Next.js 14, TypeScript, Tailwind CSS, Supabase — deployable to Vercel.檢視完整 README ↗Full-Stack Travel Marketplace for Dharamshala, McLeod Ganj & Kangra Valley tourism.
Built with Next.js 14, TypeScript, Tailwind CSS, Supabase — deployable to Vercel.
Hoteliers can self-register and submit their property for review.
| Route | Purpose |
|---|---|
/partner/register | Create partner account (name, business, phone, email, password) |
/partner/login | Sign in |
/partner/dashboard | View all their properties with status badges (draft, pending, published, changes requested, rejected) |
/partner/properties/new | 6-step property submission form (see below) |
/partner/properties/[id]/edit | Edit draft or resubmit after admin requests changes |
Property Submission Form — 6 Steps (like MakeMyTrip):
Partners can save as draft at any step or submit for review from the final step.
Full admin control over the entire platform.
| Route | Purpose |
|---|---|
/admin/login | Admin-only login (role-checked against Supabase profile) |
/admin/dashboard | Stats overview (total properties, pending, published, inquiries) + quick action cards + pending submissions list + recent inquiries |
/admin/approvals | Filter by status (pending/changes requested/published/rejected/all). Click any property to review. |
/admin/approvals/[id] | Full property review page — view all submitted details, inline-edit any field, then: Approve & Publish / Request Changes (with note) / Reject (with reason). Edits save directly to DB. |
/admin/properties | All properties table — toggle featured, suspend/restore, filter by status |
/admin/taxis | CRUD for taxi routes — add/edit/delete routes (from, to, type, vehicle, price, distance, duration, status toggle). Taxi drivers can't self-register — admin enters everything. |
/admin/treks | CRUD for treks — add/edit/delete treks (name, destination, difficulty, duration, altitude, price, description, itinerary, status) |
/admin/guides | CRUD for guides — add/edit/delete guides (name, phone, email, photo, bio, experience, languages, specializations, certifications, price/day, status) |
/admin/inquiries | View all inquiries, filter by status (new/contacted/converted/closed), update status with one click |
Hotelier registers → Fills 6-step form → Submits for review
↓
Status: pending_review
↓
Admin reviews at /admin/approvals/[id]
Can inline-edit any field
↓ ↓ ↓
APPROVE REQUEST CHANGES REJECT
↓ ↓ ↓
Status: published Status: changes_requested Status: rejected
Property goes live Partner sees admin notes Partner sees reason
Partner edits & resubmits
dharamshala-stay/
├── app/
│ ├── layout.tsx, page.tsx, globals.css, loading.tsx, not-found.tsx
│ ├── robots.ts, sitemap.ts
│ ├── hotels/ (listing + [slug] detail)
│ ├── destinations/ (listing + [slug] detail)
│ ├── treks/ (listing + [slug] detail)
│ ├── taxi/ (routes + inquiry)
│ ├── blog/ (listing + [slug] detail)
│ ├── about/, contact/, privacy/, terms/, cancellation-policy/, disclaimer/
│ ├── sitemap-html/
│ ├── api/inquiries/ (POST endpoint)
│ ├── partner/
│ │ ├── register/, login/, dashboard/
│ │ └── properties/new/, properties/[id]/edit/
│ └── admin/
│ ├── login/, dashboard/
│ ├── approvals/, approvals/[id]/
│ ├── properties/, taxis/, treks/, guides/, inquiries/
├── components/
│ ├── layout/ (Header, Footer, WhatsAppButton)
│ ├── ui/ (Cards — HotelCard, DestinationCard, TrekCard, BlogCard, etc.)
│ ├── forms/ (InquiryForm)
│ └── seo/ (JsonLd)
├── data/ (hotels, destinations, treks, taxi, blog, testimonials)
├── lib/ (config, supabase, seo, utils)
├── types/ (comprehensive TypeScript types + constants)
├── supabase/ (schema.sql — 12 tables, RLS policies, triggers)
└── public/ (favicon)
cd dharamshala-stay
npm install
cp .env.example .env.local
# Fill in your Supabase credentials
npm run dev
supabase/schema.sql → Run.env.localCreate Admin Account:
-- After signing up via the partner register page:
UPDATE profiles SET role = 'admin' WHERE email = '[email protected]';
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYNEXT_PUBLIC_SITE_URL (your domain)NEXT_PUBLIC_WHATSAPP_NUMBERNEXT_PUBLIC_PHONENEXT_PUBLIC_EMAIL| Table | Purpose |
|---|---|
profiles | User accounts (partner/admin) — auto-created via trigger on signup |
properties | Hotels/homestays/hostels — full property data with status workflow |
property_images | Optional separate image storage |
destinations | Dharamshala, McLeod Ganj, etc. |
taxi_routes | Admin-managed taxi routes |
guides | Admin-managed trek guides |
treks | Admin-managed treks |
inquiries | Visitor inquiries from forms |
blog_posts | Blog content |
testimonials | Reviews |
activity_log | Admin audit trail |
All images use Unsplash URLs for Dharamshala/McLeod Ganj/mountain content. To replace:
data/hotels.ts, data/destinations.ts, data/treks.ts| Content | Method |
|---|---|
| Hotels | Partner registers → submits via 6-step form → Admin approves at /admin/approvals |
| Taxis | Admin adds/edits at /admin/taxis (drivers can't self-register) |
| Treks | Admin adds/edits at /admin/treks |
| Guides | Admin adds/edits at /admin/guides |
| Blog | Currently in data/blog.ts — future: admin CMS |
| Inquiries | Auto-collected via forms → managed at /admin/inquiries |
Phase 1 (Done): Public site + Partner Portal + Admin Portal + Approval workflow Phase 2: Email notifications on submission/approval, Supabase Storage image uploads, blog CMS in admin Phase 3: Razorpay integration, online booking, availability calendar Phase 4: User reviews, mobile app, multi-language (Hindi)