How johnihb/nepal-horizon works
Nepal Horizon is a tourism platform for discovering and booking Nepal adventure packages, with an admin field-office console for managing journeys, images, reservations, and analytics. The traveller flow runs from package browsing and detail to booking and viewing personal reservations; administrators manage packages and bookings, upload imagery directly to Cloudinary, and inspect reporting. The graph combines README-documented capabilities with sampled controller and page behavior. Several route, auth, and analytics implementations were not sampled, so their internal connections are omitted where evidence is unavailable.
Main entry points: user.controller.ts Traveller endpoints · server.ts Express API · admin.controller.ts Admin endpoints · auth-client.ts Auth client
Components 21
Traveller journeys
- Package catalogue
frontend/app/(tour packages)/packages/home.tsx - Package detail
frontend/app/(tour packages)/package/[id]/package.tsx - Booking form
frontend/app/(tour packages)/package/booking/[id]/booking.tsx - My bookings
frontend/app/(user)/bookings/bookings.tsx - Package comparison
frontend/app/(tour packages)/compare/compare.tsx
Identity and access
- Auth screens
frontend/app/(auth)/login/login.tsx - Auth client
frontend/lib/auth-client.ts - Session and roles
frontend/hooks/session.ts
Field office
- Package admin
frontend/app/(admin)/admin/admin.tsx - Booking queue
frontend/app/(admin)/admin/bookings/bookings.tsx - Analytics dashboard
frontend/app/(admin)/dashboard/page.tsx - Image upload UI
frontend/app/(admin)/upload/page.tsx
Backend services
- Express API
backend/server.ts - Traveller endpoints
backend/controllers/user.controller.ts - Admin endpoints
backend/controllers/admin.controller.ts - Image endpoints
backend/controllers/image.controller.ts - Analytics endpoints
backend/controllers/bookingAnalytics.controller.ts
External services
- PostgreSQL data
backend/lib/prisma.ts - Cloudinary
- Better Auth
backend/lib/auth.ts
Other components
- Traveller
Connections 28
- Traveller → Package catalogue: browses
README.md - Package catalogue → Traveller endpoints: requests listings
README.md - Traveller endpoints → PostgreSQL data: reads packages
backend/controllers/user.controller.ts - Traveller → Package detail: opens journey
README.md - Package detail → Traveller endpoints: requests details
- Traveller → Booking form: books journey
README.md - Booking form → Traveller endpoints: submits booking
README.md - Traveller endpoints → PostgreSQL data: creates booking
backend/controllers/user.controller.ts - Traveller → My bookings: views reservations
README.md - My bookings → Traveller endpoints: requests reservations
README.md - Traveller → Package comparison: compares packages
README.md - Traveller → Auth screens: signs in
README.md - Auth screens → Auth client: uses client
frontend/lib/auth-client.ts - Auth client → Better Auth: authenticates
README.md - Session and roles → Auth client: reads session
frontend/hooks/session.ts - Package admin → Admin endpoints: manages packages
README.md - Admin endpoints → PostgreSQL data: reads and writes
backend/controllers/admin.controller.ts - Admin endpoints → Cloudinary: validates and deletes assets
backend/controllers/admin.controller.ts - Booking queue → Admin endpoints: manages bookings
README.md - Analytics dashboard → Analytics endpoints: requests reports
README.md - Analytics dashboard → Booking queue: loads popularity data
frontend/app/(admin)/dashboard/page.tsx - Image upload UI → Image endpoints: requests signature
README.md - Image endpoints → Cloudinary: signs and deletes
backend/controllers/image.controller.ts - Express API → Better Auth: mounts auth
backend/server.ts - Express API → Admin endpoints: mounts admin routes
backend/server.ts - Express API → Traveller endpoints: mounts user routes
backend/server.ts - Express API → Image endpoints: mounts image routes
backend/server.ts - Express API → Analytics endpoints: mounts analytics routes
backend/server.ts