TripPin is a one-stop travel planning web application that enables user to explore, plan, and share trip itineraries.
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.
- 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
- Add checklists and items, set complete status to track your to-dos
- Share plans with friends, or make public for others to see and use.
- 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.
- 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.
- 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
- Framework: Vite + React, Tailwind CSS, shadcn-ui
- Text chat: Socket.io
- API: Google Maps Platform, Unsplash, OpenAI GPT 3.5 Turbo
- CI/CD: GitHub Actions
- Containerization: Docker
- Testing: Vitest, k6