Skip to content

Travel is a Hotel Booking platform implemented using Next.js, TypeScript, Tailwind CSS, Prisma, SQL, NextAuth, Hotels API, Stripe Payments Checkout, Webhooks, MapBox, and Framer Motion.

Notifications You must be signed in to change notification settings

javigong/travel-nextjs-typescript-tailwind-mapbox-calendar-date-picker

Repository files navigation

Travel Booking: Hotel Reservation Project

Travel Booking is a case study of a hotel reservation platform using Next.js and TypeScript on the front-end, with a SQL database and Prisma for the back-end.

  • Implemented OAuth for user authentication and Hotels API for retrieving hotel data.
  • Utilized Stripe Payments and Webhooks for handling payment transactions and keep a customer booking history.
  • Styled the application with Tailwind CSS and integrated MapBox for displaying hotel locations.
  • This project allowed me to gain experience with modern web development technologies and practices such as serverless architecture and third-party API integration.

smartmockups_lb4dtxsx

🔗 Open live Demo

Tech Stack

  • Next.js
  • React.js
  • TypeScript
  • Tailwind CSS
  • Prisma
  • CockroachDB (Uses PostgreSQL wire protocol 3.0)
  • NextAuth
  • Google OAuth
  • Hotels API
  • Stripe Checkout
  • Webhooks
  • MapBox

Features

  • Responsive UI with Tailwind CSS.
  • Hotels search via Hotels API
  • Hotel map location with MapBox.
  • Payment Checkout flow with Stripe
  • Customer Booking History
  • Data fetching and caching techniques using SSR (Server Side Rendering) with Next.js.
  • User Authentication with NextAuth and Google OAuth.
  • Robust code using TypeScript.

Screen Captures

Screenshots

Installation

First, clone the project and open it with Visual Studio Code:

git clone https://github.com/javigong/travel-nextjs-typescript-tailwind-mapbox-calendar-date-picker.git

cd travel-nextjs-typescript-tailwind-mapbox-calendar-date-picker

code .

Then, create a .env.local file in the root of the project and configure the following environment variables:

# Mapbox
NEXT_PUBLIC_MAPBOX_TOKEN=

# Rapidapi, Hotels API
NEXT_PUBLIC_RAPIDAPI_KEY=

# Firebase client
FIREBASE_CLIENT_API_KEY=
FIREBASE_CLIENT_AUTH_DOMAIN=
FIREBASE_CLIENT_PROJECT_ID=
FIREBASE_CLIENT_STORAGE_BUCKET=
FIREBASE_CLIENT_MESSAGING_SENDER_ID=
FIREBASE_CLIENT_APP_ID=

# Authentication
# Need to add Authorized redirect URIs to Google Cloud OAuth Service
# http://localhost:3000/api/auth/callback/google or https://your.deployment.url.com/api/auth/callback/google
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

# Next Auth
# You can generate the secret via 'openssl rand -base64 32' on Linux
# More info: https://next-auth.js.org/configuration/options#secret
NEXTAUTH_SECRET=
NEXTAUTH_URL=

# Stripe Payments
# More info: https://stripe.com/docs/payments/accept-a-payment
STRIPE_PUBLIC_KEY=
STRIPE_SECRET_KEY=

# Stripe Terminal/CLI
STRIPE_SIGNING_SECRET=

To send Stripe events to a local webhook install Stripe CLI, login into your Stripe account, and use the --forward-to flag pointing to the webhook endpoint, and create a trigger for successful customer payments :

brew install stripe/stripe-cli/stripe

stripe login

stripe listen --forward-to localhost:3000/api/webhook

stripe trigger checkout.session.completed

Finally, install the npm dependencies and run the application:

npm install

npm run dev

Now the application is running on http://localhost:3000 🚀

How to test Stripe Checkout

The current Stripe Checkout implementation simulates payments in test mode.

⛔️ Please, do not use real card details. Use the following test card details:

  • Use a card number, such as 4242 4242 4242 4242. Enter the card number in the Dashboard or in any payment form.
  • Use a valid future date, such as 12/34.
  • Use any three-digit CVC (four digits for American Express cards).
  • Use any value you like for other form fields.

Testing form with test card number 4242 4242 4242 4242

Deployment details

Travel Bookings deployed using Vercel:

Deployment Activity Log

About

Travel is a Hotel Booking platform implemented using Next.js, TypeScript, Tailwind CSS, Prisma, SQL, NextAuth, Hotels API, Stripe Payments Checkout, Webhooks, MapBox, and Framer Motion.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published