Important
The Website is Deployed on Netlify https://giotours.netlify.app
Note
Pages to Visit:
- Home
- New York Tour (e.g)
- About us and Reviews
- Sign up
- Log in
- Profile of Giorgi Gogsadze (e.g)
- edit your account (Protected Route, you can access it if you're logged in)
- Admin
- Does not exist
The project was created for personal portfolio of Giorgi Gogsadze in Summer 2024. The information contained in it is completely fictitious.
The project utilizes the React JavaScript library powered by Vite. For seamless routing React Router is used, while Tanstack React Query handles API interactions. Additionally, the project makes use of wide range of React's build-in features, including lazy loading, Context API, Memoization, Custom hooks and Higher-Order Components.
The project’s backend relies on Supabase — an open-source database infrastructure built on PostgreSQL. Therefore primary focus was on database design rather than REST API development. Complex relationships between bookings, tours and accounts table, Indexes, custom functions (such as calculating the remaining time until a tour starts) and Triggers (e.g. for updating booking numbers that is stored generated column in accounts and tours tables) were implemented to make database consistent and highly performant.
Notably, Supabase serves as the storage for all images and plays a crucial role in user authentication and authorization.
The project is designed for a travel company providing a dynamic web application that enables users to search tours, book them and manage booked ones. Additionally, the platform empowers the company to seamlessly add, edit, or remove tours.
The website displays a set of tours offered by the travel company allowing users to explore and then obtain detailed information about each of them. During the selection process, users can search by keywords, sort by price, popularity, start or end dates, and filter by preferred travel seasons. Each tour card contains important information, including location, time remaining in hours and price.
The detailed tour page provides comprehensive information, including its plan, starting point, visit places, and duration. On this page, users can also track the dynamically updated countdown to the tour start time.
In order to book a tour, one needs to have an account.
Note
There are 3 options for login:
- Register on this site, and then log in using the username
- Login using Google.
- Login using Facebook. (It works only for developers, publishing needs business verification which in this case couldn't be done)
The website uses WebSocket technology (specifically Supabase Realtime) to instantly reflect bookings across all devices where the user is logged in.
On the ‘About Us’ page, users find a customer reviews section. Those who have booked at least one tour can share their opinions about the company and rate it on a scale of up to 5 points. The average rating is also displayed in this section.
Additionally, users can explore profiles of reviewers, and view their booked tours (if access is not private). And from their own profile, they can hide or reveal their bookings, edit personal information, change profile picture and update the password.
https://giotours.netlify.app/admin
Note
The Protection of Route is disabled, so you can visit and see the page without admin account, but due to database policies, your changes won't be saved. if you're intrested in checking functionality, send me email at gogsadzegeorge42@gmail.com
On the admin page, all tours are conveniently listed, allowed to edit or delete them, and in the case of an already completed tour, replace them with a new one. Company can also easily add new tours through this interface. Additionally, Dark and light modes are accessible on the admin page