Web App
The Tripinger web app is the main public traveler-facing client for the platform.
The Tripinger web app is the main public traveler-facing client for the platform. It is the first major product surface in the roadmap and is designed to help users discover destinations, search hotels and vehicles, plan trips, manage budgets, complete bookings, and participate in the platform’s social travel experience.
Purpose
This app serves tourists and local Sri Lankan travelers through a single browser-based experience. It connects the platform’s core modules into one journey: discovery, planning, booking, payment, trip management, and post-trip engagement.
Product scope
The startup blueprint defines the platform as an all-in-one travel and mobility system covering:
- hotel booking,
- vehicle rentals,
- food arrangements,
- itinerary planning,
- budget management,
- activities and experiences,
- reviews,
- social/community features,
- AI travel assistance,
- trust and safety flows.
The public web app is where most of those user journeys begin and where the MVP is expected to launch first. The roadmap prioritizes the web app before the mobile app and includes responsive design as a Phase 1 requirement.
Technology alignment
The blueprint recommends the following frontend choices for the public app:
| Layer | Planned technology | Why it matters |
|---|---|---|
| App framework | React + Vite + TypeScript | Fast development, reusable components, typed frontend architecture |
| Styling | Tailwind CSS | Consistent and rapid UI development |
| Motion | Framer Motion | Smooth transitions and better traveler UX |
| Maps | Mapbox GL JS | Location-based search, route context, destination discovery |
| API integration | NestJS backend APIs | Search, booking, auth, payments, planner, and profile flows |
MVP priorities
The roadmap lists the early build order for the platform. The public web app should support these Phase 1 priorities first:
- User authentication with Google or email.
- Hotel listing search.
- Hotel booking and payment.
- Tuk-tuk rental listing discovery.
- Vehicle booking flow.
- Basic itinerary builder.
- Budget calculator.
- Mobile-responsive layouts across core flows.
This means the web app should be built around actual conversion and trip-planning journeys, not just a marketing landing page.
Suggested traveler journeys
The app should support end-to-end traveler flows like these:
- Discover Sri Lanka destinations and categories.
- Search hotels by city, dates, budget, and amenities.
- Search vehicles by type, location, dates, and availability.
- View listing details with pricing, photos, features, and reviews.
- Build a trip draft with itinerary and budget estimates.
- Checkout using supported payment methods.
- Access bookings, saved trips, and account preferences.
- Leave reviews after verified stays or completed bookings.
- Participate in travel journals, posts, or destination community features as those modules launch.
Suggested folder structure
The exact code layout may evolve, but the app should be organized by product domains and reusable UI boundaries.
apps/web/
├─ src/
│ ├─ main.tsx
│ ├─ App.tsx
│ ├─ assets/
│ ├─ app/
│ │ ├─ providers/
│ │ ├─ router/
│ │ ├─ layouts/
│ │ └─ store/
│ ├─ components/
│ │ ├─ ui/
│ │ ├─ forms/
│ │ ├─ cards/
│ │ ├─ maps/
│ │ ├─ search/
│ │ ├─ booking/
│ │ ├─ planner/
│ │ ├─ budget/
│ │ ├─ social/
│ │ └─ feedback/
│ ├─ features/
│ │ ├─ auth/
│ │ ├─ home/
│ │ ├─ destinations/
│ │ ├─ hotels/
│ │ ├─ vehicles/
│ │ ├─ food/
│ │ ├─ activities/
│ │ ├─ planner/
│ │ ├─ budgets/
│ │ ├─ bookings/
│ │ ├─ payments/
│ │ ├─ reviews/
│ │ ├─ social/
│ │ ├─ profile/
│ │ └─ trips/
│ ├─ lib/
│ │ ├─ api/
│ │ ├─ auth/
│ │ ├─ config/
│ │ ├─ currency/
│ │ ├─ dates/
│ │ ├─ maps/
│ │ └─ utils/
│ ├─ hooks/
│ ├─ styles/
│ ├─ types/
│ └─ tests/
├─ public/
├─ index.html
└─ README.mdMain pages
Public routes
The MVP and near-term web app should expect pages or route groups like these:
/— homepage and discovery entry point/search/hotels/search/vehicles/search/food/search/activities/hotels/:slug/vehicles/:slug/restaurants/:slug/activities/:slug/planner/budget/checkout/bookings/trips/profile/reviews/community/login/register
The exact URLs can change, but the information architecture should stay aligned with the product modules defined in the blueprint.
Homepage responsibilities
The homepage should do more than market the brand. It should act as a conversion surface that quickly routes users into high-intent actions such as hotel search, vehicle search, and trip planning. That matches the blueprint’s roadmap, which prioritizes transactional features very early in the build order.
Recommended homepage sections:
- hero with destination search entry,
- quick links for hotels, tuk-tuks, cars, bikes, and planners,
- featured destinations,
- featured hotels or rentals,
- trust signals,
- recent reviews or community content,
- app value proposition for both tourists and locals,
- CTA into plan-a-trip or book-now flows.
Search and listing experience
Search is central to the Tripinger concept because the platform combines multiple travel domains inside a single experience. The web app should present a consistent discovery pattern across hotels, vehicles, food, and later activities.
Shared search concerns:
- date selection,
- destination selection,
- availability filters,
- price range filters,
- category-specific filters,
- sorting,
- pagination or infinite scroll,
- saved searches,
- location context via maps,
- mobile-friendly filtering UX.
Domain-specific examples from the blueprint include hotel filters such as stars, eco-certified status, WiFi, pool, and beach, along with vehicle-type filters for tuk-tuks, bikes, scooters, cars, and driver preferences.
Booking flows
The public web app is expected to support real booking conversion early in the roadmap, especially for hotels and vehicle rentals. The booking experience should therefore be treated as a core product system, not as an afterthought.
Key booking steps:
- Search and compare listings.
- Review listing details and availability.
- Choose dates, configuration, and add-ons.
- Sign in or create an account if required.
- Confirm price breakdown.
- Pay using the supported checkout flow.
- Receive booking confirmation and trip linkage.
The product blueprint ties booking activity into budgets, itineraries, reviews, and partner operations, so the web app should keep those transitions visible and intuitive.
Planner and budget modules
Trip planning and budget management are core differentiators in the blueprint, not side features. The public web app should let users draft itineraries, estimate trip costs, and connect those planning flows directly to search and booking actions.
Expected planner capabilities include:
- day-by-day itinerary drafting,
- route-aware trip structure,
- collaborative planning support,
- prebuilt travel circuits,
- booking-aware trip organization,
- AI-assisted itinerary generation in later phases.
Expected budget capabilities include:
- total budget input,
- category allocation,
- accommodation cost estimates,
- vehicle and food cost estimates,
- per-day budgeting,
- multi-currency presentation,
- export or share options in later phases.
Reviews and community
The blueprint positions reviews and user-generated content as a growth loop and trust engine for the platform. The web app should therefore be prepared to surface verified reviews, trip stories, destination content, and social engagement interfaces as the roadmap expands beyond MVP.
Community-oriented UI areas may include:
- traveler reviews,
- trip journals,
- destination feed,
- local tips,
- saved posts,
- traveler profile activity,
- follow and engagement surfaces,
- content moderation states.
Auth and account flows
The blueprint calls for JWT and OAuth 2.0 support, including Google, Facebook, and Apple login options, which means the web app should support both password-based and social onboarding paths.
Common account flows:
- register,
- login,
- social sign-in,
- email verification,
- forgot password,
- reset password,
- profile update,
- traveler preferences,
- saved items,
- bookings and trip history.
Environment variables
This app should read only public-safe Vite variables in the browser. Typical variables include:
VITE_APP_NAMEVITE_APP_ENVVITE_API_BASE_URLVITE_WEB_BASE_URLVITE_MAPBOX_ACCESS_TOKENVITE_STRIPE_PUBLISHABLE_KEYVITE_PAYHERE_MERCHANT_IDVITE_FEATURE_AI_PLANNERVITE_FEATURE_BUDGET_MANAGERVITE_FEATURE_SOCIAL_FEEDVITE_FEATURE_FOOD_MODULE
Use the root .env.example as the canonical variable reference.
Local development
Prerequisites
Install:
- Node.js LTS
- pnpm
- access to the root
.envfile - the Tripinger API running locally
- Docker if supporting services are started through containers
Typical setup
pnpm install
cp .env.example .env
pnpm docker:up
pnpm --filter web devIf the monorepo uses root-level commands for workspace orchestration, prefer those.
Expected local URLs
Web app: http://localhost:3000
API: http://localhost:4000/api/v1
API docs: http://localhost:4000/docsStyling guidance
The blueprint recommends Tailwind CSS for rapid, consistent UI development and Framer Motion for smooth user experience transitions. The public web app should use those tools to create a clean, mobile-friendly booking interface rather than a purely decorative marketing site.
UI priorities should include:
- clear search forms,
- trustworthy pricing and booking summaries,
- readable mobile cards,
- fast-loading listing grids,
- accessible forms,
- responsive sticky booking panels where useful,
- smooth but restrained animation,
- multilingual readiness for future Sinhala and Tamil rollout.
Maps and location UX
Mapbox is part of the planned stack, so the web app should use location-aware experiences where they add genuine value. Strong candidates include:
- hotel and vehicle map views,
- destination browsing,
- route previews for planners,
- pickup and drop-off context,
- city or region discovery,
- later support for safety or itinerary geography features.
State and data fetching
The exact data layer is not yet locked, but the app should treat API data as domain-specific, cacheable, and query-driven. A structured client layer is recommended for:
- auth session state,
- search query state,
- listing detail fetching,
- booking mutation flows,
- planner drafts,
- budget calculations,
- profile data,
- notifications and saved content.
Recommended principles:
- keep server state separate from local UI state,
- co-locate queries with features where practical,
- normalize date and currency handling,
- centralize API error formatting,
- handle loading, empty, and failure states intentionally.
Testing expectations
At minimum, the web app should support:
- component tests,
- route-level integration tests,
- form validation tests,
- booking-flow tests,
- auth-flow tests,
- responsive UI checks on key pages.
Highest-priority test flows for Phase 1:
- Homepage search entry.
- Hotel search and filter flow.
- Hotel detail to checkout path.
- Vehicle search to booking request path.
- Planner draft creation.
- Budget calculator interaction.
- Login and registration flow.
Deployment direction
The blueprint positions the web frontend on Vercel early and later within a broader AWS-backed architecture as the platform scales. The web app should therefore remain easy to deploy as a standalone frontend, with environment-based configuration and API-driven behavior.
Recommended deployment properties:
- static asset optimization,
- route fallback handling,
- environment-specific API base URLs,
- error tracking hooks,
- analytics hooks when enabled,
- image performance awareness,
- SEO-ready metadata for destination and listing pages.
Contribution guidance
When adding a new traveler-facing feature:
- Place it under
src/features/<domain>. - Keep reusable presentation components inside
src/components. - Add or update route definitions in the router layer.
- Keep API calls in shared client helpers or feature-specific services.
- Add loading, empty, and error states.
- Ensure the experience works on mobile widths.
- Document any new public env variables in the root
.env.example. - Update this README if the feature changes app-level structure.
Current status
This README captures the intended operating model for the Tripinger public web app based on the startup blueprint and approved Phase 1 architecture work. Exact commands, package choices, and route implementations should be aligned with the actual repository once scaffolding is in place.