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.
Search real homestays, 4x4 drivers, and local guides across Himachal Pradesh — verified locals, direct and with no agency markup. Or build a full multi-stop route with stays and transit in one place.
LifestyleTypeScript · CSSGitHub @pahariyatriOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
Connecting travellers with authentic local experiences across the Himalayas
Travel Platform by Pahari Yatri is a community-driven travel marketplace built by Pahari Yatri that bridges the gap between adventurous travellers and trusted local service providers across Himalayan regions. The platform enables locals to list services (guides, homestays, transport, experiences) while giving travellers a curated, verified directory with custom multi-day trip building, real-time booking, and escrow payment support.Read the full README ↗Connecting travellers with authentic local experiences across the Himalayas
Travel Platform by Pahari Yatri (https://app.pahariyatri.com) is a community-driven travel marketplace built by Pahari Yatri (https://www.pahariyatri.com) that bridges the gap between adventurous travellers and trusted local service providers across Himalayan regions. The platform enables locals to list services (guides, homestays, transport, experiences) while giving travellers a curated, verified directory with custom multi-day trip building, real-time booking, and escrow payment support.
🗂 This repo contains the Next.js frontend for
app.pahariyatri.com. The backend REST API lives in a separate repository.
hi) and English (en) out of the box| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router, standalone output) |
| Language | TypeScript 5 |
| Styling | Tailwind CSS 3 |
| State | Zustand 5 |
| i18n | next-intl + dictionary files |
| Payments | Razorpay |
| Push | Web Push / VAPID |
| Runtime | Node 22 (see .nvmrc) |
>=22 (use nvm use if you have nvm)>=10git clone [email protected]:pahariyatri/local-connect-app.git
cd local-connect-app
npm install --legacy-peer-deps
cp .env.example .env.local
# Open .env.local and fill in your values
Tip: The API client automatically appends
/api/v1toNEXT_PUBLIC_API_BASE_URL. Set only the bare host — e.g.http://localhost:4000, nothttp://localhost:4000/api/v1.
npm run dev
# → http://localhost:3000
| Command | Description |
|---|---|
npm run dev | Start local development server with hot-reload |
npm run build | Create optimised production build (standalone) |
npm run start | Serve the production build locally |
npm run lint | Run ESLint across the project |
Copy .env.example → .env.local and configure:
| Variable | Required | Description |
|---|---|---|
NEXT_PUBLIC_API_BASE_URL | ✅ | Base URL of the backend API (no /api/v1 suffix) |
NEXT_PUBLIC_RAZORPAY_KEY_ID | ✅ | Razorpay public key for checkout |
NEXT_PUBLIC_VAPID_PUBLIC_KEY | Optional | Web Push public key |
NEXT_PUBLIC_GTM_ID | Optional | Google Tag Manager container ID — loads GTM, which owns GA4/portal event tracking (lib/analytics.ts). Blank = tracking off, nothing loads. |
NEXT_PUBLIC_GA_ID | Optional | Legacy — not read by any code path today |
NEXT_PUBLIC_SENTRY_DSN | Optional | Sentry DSN for error monitoring |
NEXT_PUBLIC_ENABLE_CHAT | Optional | Feature flag — enable real-time chat (default: true) |
NEXT_PUBLIC_ENABLE_NOTIFICATIONS | Optional | Feature flag — enable push notifications (default: true) |
⚠️ All
NEXT_PUBLIC_*variables are baked in at build time. When building the Docker image, pass them as build args (see below).
# Build — inject the API URL at build time
docker build \
--build-arg NEXT_PUBLIC_API_BASE_URL=https://api.pahariyatri.com \
-t pahariyatri-local-connect .
# Run
docker run -p 3000:3000 pahariyatri-local-connect
⚠️ For Docker/Next.js standalone builds, all
NEXT_PUBLIC_*variables — includingNEXT_PUBLIC_GTM_ID— are baked into the client bundle at build time, not read at container runtime. SettingNEXT_PUBLIC_GTM_ID(or anyNEXT_PUBLIC_*var) only on the running container viadocker run -e ...or a platform's runtime-env panel is not enough — the bundle copied into the final image has already been compiled without it. To enable GTM tracking, pass it to the build itself:docker build \ --build-arg NEXT_PUBLIC_API_BASE_URL=https://api.pahariyatri.com \ --build-arg NEXT_PUBLIC_GTM_ID=GTM-XXXXXXX \ -t pahariyatri-local-connect .
NEXT_PUBLIC_API_BASE_URL=https://api.pahariyatri.com docker compose up --build
The Docker image uses Next.js standalone output for a minimal runtime footprint and runs as a non-root user with a healthcheck on /.
| Platform | How |
|---|---|
| Vercel | Import repo → set NEXT_PUBLIC_* env vars (including NEXT_PUBLIC_GTM_ID if using GTM) → deploy. No Dockerfile needed — Vercel handles the build-time inlining itself. |
| Fly.io / Render / ECS / K8s | Build the image with the correct NEXT_PUBLIC_API_BASE_URL and NEXT_PUBLIC_GTM_ID build args → deploy the container. A platform's runtime env-var panel is not sufficient for these — see the Docker section above. |
This is the beginning of the README. Read the rest at the original. Read the full README ↗