Skip to content
@TourismTogether

Tourism Together

Organization Of SE Project Team

Tourism Together

A full-stack platform to discover destinations, plan trips, and share journeys—with multilingual semantic search, personalized recommendations, and LLM-assisted itinerary and content tools.

Next.js Node.js Python PostgreSQL

Live app · GitHub org


Overview

Tourism Together is a full-stack monorepo: a Next.js web app talks to a Node.js (Express + TypeScript) API for core product data, and to a Python FastAPI “AI service” for vector search and recommendations over PostgreSQL + pgvector (via Supabase). Optional LLM flows (itinerary, diary, forum drafts) are integrated through the backend.

The goal is to go beyond keyword search: users can describe trips in natural language (including Vietnamese) and get relevant destinations, trips, and routes, plus personalized suggestions based on behavior and reviews.


Architecture

graph TB
  WEB[Next.js frontend]
  BE[Express API TypeScript]
  AI[FastAPI AI service Python]
  PG[(PostgreSQL + pgvector / Supabase RPC)]
  WEB -->|REST CRUD auth| BE
  WEB -->|semantic search recommend| AI
  BE --> PG
  AI --> PG
Loading
Layer Responsibility
Frontend UI: dashboard, destinations, trips, maps, diaries, forum; calls backend + AI service
Backend Users, destinations, trips, routes, auth, uploads; AI helpers (e.g. diary / forum / itinerary endpoints)
AI service Embeddings (Sentence Transformers), top‑K similarity, user-context recommendations
Database Relational data + vector columns and Supabase RPC for similarity search

Repository layout

Path Stack Description
frontend/ Next.js 16, React 19, TypeScript, Tailwind, Leaflet Web client
backend/ Express5, TypeScript, PostgreSQL (pg) REST API
ai-service/ FastAPI, sentence-transformers, Supabase Semantic search & recommendations

Each package can be developed and deployed independently. See ai-service/README.md for retrieval benchmarks, screenshots, and ML-focused documentation.


Key features

  • Destinations & trips — Browse, filter, and plan multi-day trips with map-based routes
  • Semantic search — Natural-language queries for destinations, trips, and routes (AI service + pgvector)
  • Personalized recommendations — Suggestions from encoded user context (ratings, trip history)
  • Community — Forum posts and travel diaries
  • AI assists — Itinerary generation, diary/forum drafting (backend + external LLM providers where configured)

Tech stack (summary)

Area Technologies
Frontend Next.js, React, TypeScript, Tailwind CSS, Leaflet, Framer Motion
Backend Node.js, Express, TypeScript, PostgreSQL, bcrypt, JWT-related flows
AI / ML FastAPI, Uvicorn, Sentence Transformers (paraphrase-multilingual-mpnet-base-v2), Supabase client, pgvector
Platform Supabase-compatible Postgres, Vercel-friendly frontends

Getting started

Prerequisites

  • Node.js 18+ (20+ recommended for Next.js 16)
  • Python 3.10+
  • PostgreSQL (or managed DB compatible with the backend schema)
  • Supabase project with pgvector + RPC functions for the AI service (ai-service/migrations/)

1. Clone

git clone https://github.com/TourismTogether/Tourism.git
cd Tourism

2. Backend

cd backend
npm install
# Configure .env (database URL, secrets, etc.) — see backend/README.md
npm run dev

Default API URL used by the frontend is often http://localhost:8081 (override with NEXT_PUBLIC_API_URL).

3. AI service

cd ai-service
python -m venv .venv
# Windows: .venv\Scripts\activate |  macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
# Set SUPABASE_URL, SUPABASE_KEY in ai-service/.env
uvicorn app.main:app --reload --host 0.0.0.0 --port 8080

Optional: python scripts/build_embeddings.py to backfill vectors.
Optional: python scripts/benchmark_retrieval.py for latency / speedup metrics.

4. Frontend

cd frontend
npm install

Create .env.local as needed, for example:

NEXT_PUBLIC_API_URL=http://localhost:8081
NEXT_PUBLIC_AI_SERVICE_URL=http://127.0.0.1:8080
npm run dev

Environment variables (cheat sheet)

Variable Where Purpose
NEXT_PUBLIC_API_URL Frontend Express backend base URL
NEXT_PUBLIC_AI_SERVICE_URL Frontend FastAPI AI service base URL
SUPABASE_URL, SUPABASE_KEY ai-service Supabase / pgvector RPC access
DB + secrets backend See backend/README.md and local .env

Team

Name Role
Trần Hải Đức Leader & project management
Bùi Nam Việt AI engineer
Nguyễn Đình Duy Phú Frontend, database & security
Trương Hoàng Lâm Backend, network & performance
Bùi Quang Sơn QA / testing

Contributing

Work is split across idea, UI/UX, features, and testing. Open issues or PRs against the relevant package (frontend, backend, or ai-service).


Traveling together makes memories last longer.

Popular repositories Loading

  1. ai-service ai-service Public

    Tourism Together is the retrieval layer of an AI-powered travel platform. It turns natural-language queries into dense vectors and runs top‑K similarity search inside PostgreSQL (pgvector)—so users…

    Python 1

  2. frontend frontend Public

    Tourism Together Deploy Web

    TypeScript

  3. backend backend Public

    Server Backend Of Web Tourism Together

    TypeScript

  4. .github .github Public

    Tourism Together is an application that connects travelers to explore destinations and plan trips together.

  5. admin-dashboard-fe admin-dashboard-fe Public

    TypeScript

  6. admin-dashboard-be admin-dashboard-be Public

    TypeScript

Repositories

Showing 6 of 6 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…