Skip to content
/ TripPin Public

A one-stop travel planning website containning searching, planning and sharing for trip itineraries.

Notifications You must be signed in to change notification settings

nauish/TripPin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


TripPin 旅圖:旅遊規劃、社交網站

TripPin is a one-stop travel planning web application that enables user to explore, plan, and share trip itineraries.

Table of Contents

Why use TripPin?

Planning a trip can be difficult, especially when you have to search for information from different sources like Google or Blog posts, all while discussing with friends and families and jot them all down on a notebook.

What if you could see your itinerary on a map, and adjust the time and order of each activity? What if you could discuss with your friends and figure out your travel plans together?

TripPin aims to make the process of planning a trip easier and more enjoyable. You can start by creating a simple plan, then share your plans with your friends, or make them public for other travelers to use. You can also browse other people’s plans, and make a copy to suit your needs.

Main Features

  • Create trips with basic criteria, such as:
    • Budget
    • Country
    • Travel type (e.g. sightseeing, food, culture, etc.)
    • Travel duration
  • See your plans on a map, and arrange the trip by dragging and dropping. 動畫
  • Edit location details
  • Ask for optimized route 動畫1
  • Add checklists and items, set complete status to track your to-dos 動畫2
  • Share plans with friends, or make public for others to see and use. 動畫3
  • Chat with an AI assistant who can help them with planning, and answer questions.
  • Add comments on other's trip and share ratings.
  • Collaborate with travel mates in real-time.
  • Sending locations, markers directly to other editors.
  • Upload photos of your trip, and join travel plans.
  • Text with friends and discuss upon trip locations.

Technical Features

  • Leveraged Express, React, PostgreSQL and AWS to design, develop and deploy a dynamic full-stack SPA that enables users to plan, collaborate and share trips with others by simply dragging and dropping within a Scrum adhered 5-week timeframe.
  • Integrated Google Maps Platform API for geocoding, routing, and for the user, with OpenAI API providing tailored trip planning advice.
  • Enabled real-time collaborative editing, marker sending, and group chat via Socket.IO.
  • Utilized Redis for mutex locking during collaboration, thereby preventing editing conflicts among users, with additional expiry time and heartbeat mechanism, ensuring seamless collaboration without disruptions.
  • Established 35+ thoroughly planned out RESTful API endpoints with various JWT authentication and Role-Based Access Control authorization levels that define trip creator, editor, and viewer permissions among public and private trips.
  • Implemented a variant of nearest-neighbor algorithm for calculating coordinates stored using PostGIS geological data type, providing route optimization.
  • Automated and streamlined a consistent CI/CD process using GitHub Actions to compile TypeScript server files, build and run Docker image on EC2, build client-side static files, upload to S3, and distribute to Cloudfront CDN.
  • Devised and conducted automated testing for potential edge cases using Vitest.

Tech Stacks

Server

image image image image image image image image image image image

  • Server: Express in TypeSctipt
  • Database: PostgreSQL with PostGIS extension on Amazon RDS
  • Static storage: S3, Cloudfront
  • Mutex Lock and rate-limiter: Redis on ElastiCache
  • Real-time transmission: Socket.io

Client

image image image image image image image

  • Framework: Vite + React, Tailwind CSS, shadcn-ui
  • Text chat: Socket.io
  • API: Google Maps Platform, Unsplash, OpenAI GPT 3.5 Turbo

Deployment:

image image image image

  • CI/CD: GitHub Actions
  • Containerization: Docker
  • Testing: Vitest, k6

System Design

tpi drawio (1)

Database Schema

drawSQL-trippin-export-2023-12-30

About

A one-stop travel planning website containning searching, planning and sharing for trip itineraries.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published