Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
Local guide to Dharamshala, McLeod Ganj & Kangra Valley: verified hotels and homestays, Triund treks, Bir Billing paragliding, airport taxis and free trip planning.
Translation pending
LifestyleTypeScript · PLpgSQLGitHub @sharikwaniOnlineOwner 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
Dharamshalstay website with vercel and supabse
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Full-Stack Travel Marketplace for Dharamshala, McLeod Ganj & Kangra Valley tourism.
Built with Next.js 14, TypeScript, Tailwind CSS, Supabase — deployable to Vercel.Read the full 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)