HamroYatra
A travel platform that connects travellers with verified agencies, guides and hotels in Nepal.
Travellers in Nepal struggle to tell a licensed agency or guide from an unregistered one. HamroYatra puts verification first: agencies prove who they are before they can list, and guide licences are checked automatically.

The problem
Trekking agencies, travel agencies, hotels and homestays in Nepal sell through social media and word of mouth. A traveller has no easy way to check that a company is registered or that its guides hold valid licences.
What I built
HamroYatra has three kinds of users. Travellers explore trekking packages, tours and hotel stays, book them, message agents and track their trips. Agents run their business from a dashboard with bookings, listings, customers, reviews and their team. A super admin verifies agencies and oversees the platform.
I led the team of five. My part was the home page, server setup, the database connection, the backend API routes, dashboard integration, the AI trip planner and the explore page. Teammates built the agent and traveller dashboard fronts, authentication and verification pages, and the database models.

What it does
For travellers
- Explore trekking packages, travel packages and hotel stays
- Personal recommendations based on what they view and book
- An AI trip planner grounded in real listings
- Bookings, messages, reviews and a trip-progress tracker
For agents
- Dashboard with overview, calendar, bookings, listings, messages, team, customers, reviews and history
- Sub-agents and guides managed as a team
- Room types and prices split by AC, non-AC, family and couple
Trust
- A 3-step verification with PAN, citizenship and company details
- Guide licences checked every 24 hours, with alerts 30 days before expiry
- Verified badges removed when a licence expires
Platform
- Super admin for stats, agents, travellers and verification
- Sign-in by email with a one-time code or with Google
- Per-route meta tags, a sitemap and robots file

How it's built
| Front end | React 18, Vite, Tailwind CSS, Framer Motion, Chart.js, React Router |
|---|---|
| Back end | Node, Express, 67 route handlers in 6 groups |
| Data | PostgreSQL with Prisma 7: 12 models and 5 enums |
| Auth | JWT in an HttpOnly cookie, bcrypt (cost 12), Google OAuth 2.0, email one-time codes |
| AI | Google Gemini 2.5 Flash |
| Files and email | Cloudinary uploads, Resend for one-time codes |
| Deploy | Vercel (front end), Render (back end) |
The React front end talks to an Express API split into auth, dashboard, public, agent and planning route groups. PostgreSQL holds agents, travellers, listings, bookings, reviews, guides, messages, notifications, activity logs, followers, listing views and user preferences.
A background job runs at start-up and then every 24 hours to check guide licences, so compliance does not depend on anyone remembering to look.
Engineering highlights
Recommendations you can explain
Each listing starts at a base score and moves up or down with the season, the traveller's past interest in its type, location and difficulty, its price compared with what they usually view, its rating, its review count and whether the agent is verified. The scoring is plain arithmetic, so every recommendation can be explained to a traveller or an agent.
An AI planner that does not make things up
Before the planner answers, it searches the platform's active listings and passes the closest matches to Gemini. Its suggestions are grounded in trips that can actually be booked. Each user can send 20 planner messages a day and 5 a minute.
Compliance that runs itself
The licence watcher warns an agent 30 days before a guide's certificate expires, at most once a week per guide, and removes the verified badge when a licence lapses.
SEO & performance
Every public route sets its own title and description with react-helmet-async, and the site ships a sitemap of 16 URLs and a robots file. Category pages such as trekking agencies, travel agencies and hotels in Nepal each target their own search.
Screens

Where it stands
HamroYatra was built as our second-year project for the BSc (Hons) in Computing. The front end is live at hamroyatra.ujjwalrupakheti.com.np. The backend is paused on its free hosting plan, so listings and sign-in do not load at the moment.
Leading the team taught me as much as the code did: splitting the work, owning the API that everyone else depended on, and integrating five people's work into one product.
Planning a product like HamroYatra? I design, build and launch web apps for businesses in Nepal and abroad.