liminfo

Building a Reservation System with AI (No Coding Experience)

A step-by-step practical guide for non-developer small business owners to build their own online reservation system using Claude AI. Optimized for small shops such as hair salons, cafes, clinics, and nail shops, covering reservation calendars, booking forms, and notification integrations.

AI reservation systemsmall business booking siteonline booking alternativeClaude AI developmentno-code web developmentsalon reservation systemSupabase bookingfree booking site builderbooking notificationsmall shop reservation management

Problem

You run a hair salon, and using third-party booking platforms means paying per-booking fees ($0.50-1.00 each) that accumulate every month, while the platform owns your customer data. If you take reservations via messaging apps or phone calls, it becomes difficult to manage double bookings, no-shows, and track availability by time slot. You want your own reservation system, but you have zero development experience, and outsourcing costs $2,000-5,000. Can you build a system with a reservation calendar, booking form, and notification features using only AI assistance, with no coding knowledge? What you need before starting (all free): - An email account (for Google or GitHub signup) - A computer with internet (Windows, Mac, or Linux all work) - Your shop information (business hours, menu, prices, etc. - we'll organize this in Step 2) Estimated costs: - Claude Pro: $20/month - only needed during development, can cancel after - Supabase: Free (sufficient for small shops, 50,000 API calls/month) - Vercel hosting: Free (100GB bandwidth/month) - Domain: ~$10-15/year (optional) - Email notifications (Resend): Free (3,000 emails/month) - Total maintenance: $0-5/month (massive savings compared to platform booking fees)

Required Tools

Claude Pro ($20/month)

An AI assistant that generates code for you. Just type requests like "build a reservation system" in plain English and it automatically generates code. The "Artifacts" feature lets you preview results in real time. No coding knowledge required.

Claude Code (free, included with Claude Pro)

Claude's dedicated coding tool. It runs in your computer's "terminal" (the black screen) and directly creates and modifies files in your project folder. Don't worry if you're unfamiliar with terminals - this guide walks you through each step.

Supabase (Free Plan)

An "online storage" for your reservation data. Think of it like a spreadsheet on the internet. When customers book, it's automatically recorded here, and you can check bookings from anywhere. The free plan is sufficient for small shops.

Vercel (Free Plan)

A free service that puts your finished reservation system on the internet. With just a few clicks, you get a URL that customers can access.

GitHub (Free)

A cloud service for storing code. Just like Google Drive stores documents, GitHub stores code. A free account is all you need.

Solution Steps

1

Step 1: Sign Up for Accounts and Install Programs

Let's prepare the accounts and programs needed to build the reservation system. Everything is free, and it takes about 15 minutes total. [Sign Up for Claude - 3 minutes] 1. Go to claude.ai in your web browser 2. Click "Sign Up" -> Sign up with your Google account (easiest method) 3. After signing up, click "Upgrade to Pro" -> Subscribe to the $20/month plan 4. If you see a "Pro" badge at the bottom left, you're all set. If payment doesn't go through: Use a credit or debit card that supports international payments (Visa/Mastercard). [Install Node.js - 3 minutes] "Node.js" is a program your computer needs for the reservation system to work. Just install it - you won't need to use it directly. 1. Go to nodejs.org in your web browser 2. Click the green "LTS" button -> Download the installer 3. Run the downloaded file -> Click "Next" for all options with defaults -> Installation complete You'll know it worked: The installation completion screen shows "Node.js has been successfully installed." [Sign Up for GitHub - 2 minutes] 1. Go to github.com -> Click "Sign up" 2. Enter email, password, username -> Registration complete [Sign Up for Supabase - 2 minutes] 1. Go to supabase.com -> Click "Start your project" 2. Log in with your GitHub account (the one you just created) 3. If you see the dashboard screen, you're all set (we'll create the project in Step 6). [Install Claude Code - 5 minutes] 1. Open the "terminal" on your computer. - Mac: Open Spotlight (Cmd+Space) and search for "Terminal" -> Run - Windows: Search for "PowerShell" in the Start menu -> Run 2. When the black screen opens, copy and paste the command below and press Enter. 3. The installation will proceed, and the "claude" program will be installed on your computer. 4. After installation, type claude and press Enter -> Follow the instructions to connect your Claude account. If you get a "npm: command not found" error: Node.js isn't installed. Complete the Node.js installation above first.

# Claude Code installation command (paste in terminal):
npm install -g @anthropic-ai/claude-code

# Verify installation (also enter this in terminal):
claude --version
# -> If a version number appears, it worked (e.g., 1.x.x)

# Run Claude Code:
claude
# -> If "Welcome to Claude Code!" appears, success!
# -> Follow the instructions to connect your Claude account.
2

Step 2: Organize Your Shop's Booking Rules

Before asking AI to build the reservation system, you need to clearly organize your shop's booking rules. The more specific this information is, the more accurate the AI's output will be. [Items to organize - jot these down in a notepad] 1. Basic Shop Information - Shop name: (e.g., Bloom Hair Salon) - Phone number: (e.g., 555-123-4567) - Address: (e.g., 123 Main Street, Suite 4) 2. Business Hours - Operating hours: Start~End (e.g., 10:00 AM - 8:00 PM) - Lunch break: (e.g., 1:00 PM - 2:00 PM, no bookings) - Days off: (e.g., Sunday, Monday) 3. Service Menu (Name, Duration, Price) - e.g., Haircut 30 min $15 - e.g., Perm 120 min $80 - e.g., Coloring 90 min $60 - e.g., Treatment 60 min $40 4. Booking Rules - Concurrent appointments: (number of stations, e.g., 3) - Booking intervals: 30 min / 1 hour - Minimum advance booking: (e.g., at least 2 hours ahead) - Cancellation policy: (e.g., no same-day cancellations) 5. Information to Collect at Booking - Required: Name, phone number - Optional: Special requests/notes Once you've organized everything above, Step 2 is complete. Now you'll pass this information to Claude. Below is an example prompt to send to Claude. Replace the shop info with your own.

# === Prompt to Send to Claude (paste in the claude.ai chat) ===
# Modify only the shop information below to match your own.

"Based on the following shop information, organize a design for an online reservation system.
I'll use this design to build the actual website later.

Shop Information:
- Shop Name: Bloom Hair Salon
- Phone: 555-123-4567
- Address: 123 Main Street, Suite 4

Business Hours:
- Tue-Sat 10:00 AM - 8:00 PM
- Lunch break: 1:00 PM - 2:00 PM (no bookings)
- Closed: Sunday, Monday

Service Menu:
- Haircut: 30 min, $15
- Perm: 120 min, $80
- Coloring: 90 min, $60
- Treatment: 60 min, $40

Booking Rules:
- 3 stations (up to 3 concurrent appointments)
- 30-minute booking intervals
- Minimum 2 hours advance booking
- No same-day cancellations

Information Collected at Booking:
- Required: Name, phone number
- Optional: Special requests

Organize this information and show it as a configuration file."

# Claude will neatly organize your shop info.
# Keep this handy - you'll use it in the next steps.
3

Step 3: Preview the Booking Calendar Design in Claude

Now let's preview the booking calendar design in claude.ai. Using Claude's "Artifacts" feature, you can see real-time results as the code is being generated. What are "Artifacts"? When Claude generates code, the actual web page appears on the right side of the screen in real time. It's like seeing a design mockup instantly. [Requesting the Booking Calendar Design] 1. Log in to claude.ai. 2. Start a new conversation and paste the prompt below. 3. Claude will generate code while a booking calendar preview appears on the right. 4. You can test it by clicking dates on the calendar and selecting time slots. You'll know it worked: - A monthly calendar is visible on the right side - There are buttons to select services (Haircut, Perm, etc.) - Clicking a date shows available time slots - Days off (Sun, Mon) can't be clicked [Requesting Design Changes] If you don't like the design, ask Claude to modify it right away: - "Change the color from blue to pink" - "Make the buttons bigger" - "Make the text larger" - "Show available times in green and unavailable times in gray" Keep requesting changes until you're satisfied with the design. You don't need to look at the code at all during this process - just tell Claude what you want in plain English.

# === Prompt to Send to Claude (paste in the claude.ai chat) ===

"Build a hair salon online booking calendar using Artifacts and show it to me.
Build it with React.

Shop Info:
- Shop Name: Bloom Hair Salon
- Business Hours: Tue-Sat 10:00 AM - 8:00 PM
- Lunch Break: 1:00 PM - 2:00 PM (no bookings)
- Days Off: Sunday, Monday
- Stations: 3

Service Menu:
- Haircut: 30 min, $15
- Perm: 120 min, $80
- Coloring: 90 min, $60
- Treatment: 60 min, $40

Feature Requirements:
1. Service selection buttons at the top (4 menu items)
2. Monthly calendar (previous/next month navigation)
3. Show available time slots when a date is clicked
4. Past dates are not selectable (grayed out)
5. Days off (Sun, Mon) not selectable (grayed out)
6. Show booking form after time slot selection (name, phone, special requests)
7. Booking summary popup on confirmation

Design:
- Clean and modern design
- Responsive for mobile devices
- Available times in blue, unavailable in gray
- Selected service highlighted with blue border
- Prices displayed in dollar format"

# [Example modification requests]
#
# "Also show date, time, service name, and price summary on the booking form"
# "Make the confirm booking button bigger and more noticeable"
# "Increase the overall font size a bit"
# "Add a 'Lunch Break' label for the 1:00-2:00 PM time slots"
4

Step 4: Create the Actual Project with Claude Code

Once you've confirmed the design in Artifacts, it's time to build the actual reservation system. Claude Code will automatically handle file creation, code writing, and package installation. [Create Project Folder] 1. Create a folder on your computer to store the reservation system files. - Windows: Right-click on Desktop -> "New" -> "Folder" -> Name it "my-reservation" - Mac: Create a "my-reservation" folder in your desired location in Finder [Run Claude Code] 1. Open the terminal. - Mac: Open Spotlight (Cmd+Space) and search for "Terminal" -> Run - Windows: Search for "PowerShell" in the Start menu -> Run 2. Navigate to the folder you just created (copy-paste the command below). 3. Type claude and press Enter. 4. If you see the "Welcome to Claude Code!" screen, you're all set. Now ask Claude Code to build the reservation system. Paste the prompt below into the Claude Code chat. Claude Code will automatically perform the following: - Create a Next.js project - Install required packages - Write booking calendar page code - Write booking form code - Create configuration files If a confirmation message like "Should I run this command?" appears -> Type y and press Enter. Trust Claude Code and let it work. It may take 3-5 minutes to complete. If text keeps appearing in the terminal, it's still in progress. If an error occurs mid-way: Just ask Claude Code "An error occurred. Please check and fix it."

# Navigate to project folder (paste in terminal):
# Windows:
cd Desktop\my-reservation

# Mac:
cd ~/Desktop/my-reservation

# Run Claude Code:
claude

# === Prompt to Send to Claude Code (paste after claude is running) ===

"Build a hair salon online reservation system from scratch with Next.js in this folder.

[Project Setup]
- Next.js + TypeScript + Tailwind CSS + App Router
- Project name: my-reservation

[Shop Info - Create as a config file]
- Shop Name: Bloom Hair Salon
- Phone: 555-123-4567
- Business Hours: Tue-Sat 10:00 AM - 8:00 PM
- Lunch Break: 1:00 PM - 2:00 PM
- Days Off: Sunday (0), Monday (1)
- Stations: 3
- Services: Haircut (30min/$15), Perm (120min/$80), Coloring (90min/$60), Treatment (60min/$40)
- Minimum 2 hours advance booking, no same-day cancellations

[Pages to Build]
1. Main page (/) - Booking Calendar
   - Service selection -> Date selection -> Time selection -> Booking form
   - Days off and past dates not selectable
   - Lunch time slots show 'Lunch Break' label
   - Already booked times grayed out
   - Automatic consecutive time slot check based on service duration

2. Confirmation page (/confirmation)
   - Booking summary (date, time, service, price)
   - Booking number display

3. Admin page (/admin)
   - Password protected (default: admin1234)
   - Today/this week's booking list
   - Booking status changes (confirmed/cancelled/completed/no-show)
   - Date-based booking overview calendar

[Design]
- Clean and modern design
- Mobile optimized (most customers use smartphones)
- Touch-friendly buttons (minimum 44x44px)
- Input font size 16px+ (prevents iOS auto-zoom)

[Data Storage]
- Use localStorage for now (for testing)
- Separate data access functions so we can switch to Supabase later

Create all files and install required packages.
Make it so I can run it with npm run dev when done."
5

Step 5: Preview and Test Features

Once Claude Code has created the project, let's check how it actually looks. [Preview the Reservation System] 1. Ask Claude Code "Please run npm run dev." 2. Wait a moment until you see "Ready" or "http://localhost:3000." 3. Open your web browser (Chrome, Edge, etc.) and type localhost:3000 in the address bar. 4. If the booking calendar appears on screen, it's a success! If the screen doesn't load or shows an error: -> Don't panic. Ask Claude Code "An error occurred. Please check and fix it." [Feature Test Checklist - Check each one] 1. Service selection: Click "Haircut", "Perm", etc. buttons -> Selected button highlights = success 2. Date selection: Click a business day (Tue-Sat) on the calendar -> Time slot list appears = success 3. Days off check: Click Sunday or Monday -> Can't be clicked = success 4. Time selection: Click a morning time slot -> Selected and color changes = success 5. Lunch break: 1:00-2:00 PM time slots are disabled or show "Lunch Break" = success 6. Booking form: Enter name, phone -> Click confirm booking button -> Confirmation message appears = success 7. Admin page: Type localhost:3000/admin in browser -> Booking list visible = success [Check on Mobile] Most customers will book from their smartphones. Be sure to check how it looks on mobile. 1. Press F12 in the browser (developer tools open) 2. Click the smartphone+tablet icon at the top left 3. The screen changes to smartphone size 4. If buttons are too small or text is hard to read, ask Claude Code to fix it [If Design Changes Are Needed] Make specific requests to Claude Code:

# === Design Modification Prompt Examples (enter in Claude Code) ===

# Change colors
"Change the overall color scheme to pink (#E91E8C).
Make buttons, selected indicators, and headers all match."

# Adjust font sizes
"The text is too small on mobile. Increase body text to 16px,
headings to 20px, and button text to 18px."

# Improve booking form
"Add automatic phone number formatting to the booking form.
Make hyphens auto-insert in 555-123-4567 format."

# Improve confirmation screen
"Show booking details in a nice card format on the confirmation screen.
Include date, time, service, price, and customer name."

# Improve admin page
"Show today's bookings in chronological order on the admin page.
Allow changing each booking's status to 'confirmed/completed/cancelled/no-show'."

# Update shop info (replace with your actual shop info)
"Change the shop name in the config file to 'Beauty Hair',
business hours to 09:00 AM - 7:00 PM,
and update the service menu to:
- Women's Cut: 40 min, $25
- Men's Cut: 20 min, $15
- Digital Perm: 150 min, $120"
6

Step 6: Connect the Supabase Database

So far, booking data is only stored in the browser (localStorage). In this state, you can't see booking status from other devices, and clearing browser data erases all bookings. Connecting Supabase means booking data is safely stored in the internet cloud. Think of it like saving an Excel file to Google Drive. [Create Supabase Project - 5 minutes] 1. Log in to supabase.com (account from Step 1) 2. Click "New project" button 3. Enter project name: my-reservation 4. Enter Database Password: Choose a secure password and be sure to write it down! 5. Select Region closest to you -> Click "Create new project" 6. Wait 2-3 minutes for the project to be created. You'll know it worked: The dashboard shows your project name with "Active" status. [Create Reservations Table - 3 minutes] You need to create a "table" (like a sheet in Excel) in Supabase to store booking data. Ask Claude to generate the SQL (database command) for you. 1. Go to claude.ai and send the prompt below. 2. Claude will generate SQL code. 3. In the Supabase dashboard, click "SQL Editor" in the left menu. 4. Copy and paste all the SQL code Claude generated. 5. Click "Run." 6. If "Success" appears, you're done. If you get an error: Copy the error message and ask Claude "Please fix this error." [Check API Keys - 1 minute] 1. Supabase dashboard -> Left menu "Settings" -> Click "API" 2. Copy "Project URL" and "anon public" key and save them in a notepad. 3. You'll connect these two values to the project in the next step. Important: Never share the "service_role" key! Only use the "anon public" key. [Connect Supabase to the Project] Once you have the API keys, ask Claude Code to connect Supabase. Replace the URL and key in the prompt below with your own.

# === 1. Ask Claude to Generate SQL (paste in claude.ai) ===

"Create SQL for a hair salon reservations table in Supabase.

Table name: reservations

Columns:
- id: UUID (auto-generated)
- customer_name: text (required)
- customer_phone: text (required)
- service_id: text (required)
- service_name: text (required)
- date: date (required)
- time: time (required)
- duration: integer (duration in minutes)
- price: integer (price)
- status: text (default 'confirmed', one of confirmed/cancelled/completed/noshow)
- memo: text (optional)
- created_at: timestamp (auto)

Additional settings:
- Add index for fast date+time lookups
- Enable Row Level Security (RLS)
- Allow anyone to create reservations (INSERT)
- Allow anyone to view reservations (SELECT) (for calendar availability display)"

# Paste Claude's generated SQL into Supabase SQL Editor and click Run!

# === 2. Ask Claude Code to Connect Supabase ===
# (Enter this prompt while Claude Code is running)

"Connect Supabase to this project.

Supabase info:
- Project URL: https://xxxxxxxx.supabase.co
- Anon Key: eyJxxxxxxxxxx...

Tasks to complete:
1. Install @supabase/supabase-js package
2. Store environment variables in .env.local file
3. Create Supabase client configuration file
4. Replace existing localStorage data storage with Supabase
5. Add duplicate booking check logic on reservation creation
   (no more than station count bookings at same date/time)
6. Update admin page to query data from Supabase

Add .env.local to .gitignore so it
doesn't get uploaded to GitHub."

# Claude Code will automatically modify all files.
# After completion, open localhost:3000 in the browser
# and try making a booking.
# In Supabase dashboard > Table Editor > reservations,
# if you see the booking you just made, the connection is successful!
7

Step 7: Set Up Notifications (Optional)

It's convenient when the shop owner gets a notification whenever a booking is made. Here are 3 methods ranked by cost and difficulty. Start with method 1 (email), and add others later if needed. [Method 1: Email Notifications - Free, Easiest] Using a service called Resend, you can send up to 3,000 emails per month for free. 1. Go to resend.com -> Sign up with GitHub account 2. On the dashboard, go to "API Keys" -> Click "Create API Key" 3. Copy the generated API key and save it in a notepad 4. Ask Claude Code to integrate email notifications (see prompt below) How it works: Customer books -> Owner receives email "New booking: John Doe, Haircut, March 5 at 2:00 PM" [Method 2: SMS Notifications - per message, Professional] You can automatically send booking confirmation texts to customers via SMS services like Twilio. This requires some preparation: 1. Sign up at twilio.com 2. Get a phone number 3. Set up messaging templates 4. Get API key SMS setup is a bit involved, so it's recommended to add this after your business is stable. Ask Claude "Show me step by step how to integrate Twilio SMS notifications." [Method 3: Free Alternative - Supabase Webhook + Slack/Discord] If you use Slack or Discord, you can automatically receive messages when bookings come in. Ask Claude "Show me how to send booking notifications to Slack using Supabase Webhooks."

# === Email Notification Integration Prompt (enter in Claude Code) ===

"Add a feature to send an email notification to the shop owner when a booking is created.

Email service: Resend
API Key: re_xxxxxxxxxxxxx (replace with your key)
Owner email: owner@example.com (replace with your email)

Email content:
- Subject: [New Booking] John Doe - Haircut (March 5)
- Body should include:
  - Customer name
  - Phone number
  - Service name and duration
  - Booking date and time
  - Price
  - Special requests (if any)

Store the Resend API Key in .env.local.
Implement email sending after successful Supabase INSERT
in the reservation creation function."

# === Testing Email Notifications ===
# 1. Try making a booking in the browser
# 2. Check the owner's email inbox
# 3. If a "New Booking" email arrives, success!
#
# If the email doesn't arrive:
# -> Ask Claude Code "The email isn't sending. Check the logs and fix it"
# -> Check send history on the Resend dashboard (resend.com > Emails)
# -> Verify the API Key is correct
8

Step 8: Deploy to the Internet

Once the reservation system is complete, let's put it on the internet so customers can access it. [Overall Flow - Here's how it goes] 1. Ask Claude Code to do a pre-deployment check 2. Upload code to GitHub 3. Connect GitHub to Vercel 4. Done! A URL that customers can access is created [Pre-deployment Check - Ask Claude Code] Send the prompt below to Claude Code, and it will check for build errors and fix them automatically. [Upload Code to GitHub] 1. Log in to github.com -> Click the "+" button in the top right -> "New repository" 2. Enter "my-reservation" as the Repository name 3. Click "Create repository" 4. Ask Claude Code to upload to GitHub (see prompt below) If a GitHub login popup appears: Log in with your GitHub account. [Deploy on Vercel] 1. Go to vercel.com -> Log in with GitHub account 2. Click "Add New Project" 3. Select "my-reservation" from the GitHub repository list 4. Add Supabase keys in the "Environment Variables" section: - Name: NEXT_PUBLIC_SUPABASE_URL -> Value: (your Supabase Project URL) - Name: NEXT_PUBLIC_SUPABASE_ANON_KEY -> Value: (your Supabase Anon Key) - (If you set up email notifications) Name: RESEND_API_KEY -> Value: (your Resend API Key) 5. Click "Deploy" -> Wait 1-2 minutes for deployment to complete! 6. The URL shown on screen (e.g., my-reservation-xxxxx.vercel.app) is your reservation system address. You'll know it worked: The Vercel dashboard shows "Ready" status with a URL. [Connect Custom Domain (Optional)] If you want to use your own address like "bloom-hair.com" instead of "my-reservation.vercel.app": 1. Purchase a domain from a registrar like Namecheap or Cloudflare (~$10-15/year) 2. Vercel dashboard -> Settings -> Domains -> Enter your purchased domain 3. Follow Vercel's DNS setup instructions at your domain registrar 4. HTTPS (security) is set up automatically by Vercel [Share the Booking Link] After deployment, share the URL on social media, your Google Business profile, email signatures, etc. and customers can access it right away.

# === Claude Code Prompt 1: Pre-deployment Check ===

"Check this project before deployment:
- Run npm run build to check for build errors
- Fix any errors
- Verify .env.local is included in .gitignore
- Add Open Graph meta tags for nice previews when sharing on social media:
  - Title: Bloom Hair Salon - Online Booking
  - Description: Book your appointment online with ease
- Also add a PWA manifest.json (so it can be added to home screen)
- Let me know when done"

# === Claude Code Prompt 2: Upload to GitHub ===

"Upload this project to GitHub.
The GitHub repository URL is https://github.com/myusername/my-reservation.git.
Initialize git, commit all files, and push."

# -> Replace "myusername" with your actual GitHub username!
# -> Claude Code will automatically run git init, add, commit, push.

# === Updating Later ===

# After modifying code, tell Claude Code:
"Push the changes to GitHub"
# -> Vercel automatically deploys the new version (reflected in 1-2 minutes)
9

Step 9: Operations and Expansion Tips

Once the reservation system is deployed, it's time to start operating. Below are common tasks you'll need during operations and expansion feature guides. All modifications can be requested from Claude Code in plain English. [Daily Operations] - Change service menu: "Add a Color Perm service. 150 min, $120" -> Claude Code modifies the config file - Price changes: "Raise the haircut price to $18" -> Claude Code makes the change - Hours changes: "Change Saturday hours to 9:00 AM - 6:00 PM" - Temporary closures: "Add a feature to set March 15 as a temporary closure day" [Customer Convenience Features] - Booking lookup/cancellation: "Create a page where customers can look up and cancel their bookings using their phone number" - Booking reminders: "Add a feature to send reminder emails to customers one day before their appointment" - Reviews: "Add a feature for customers to leave simple reviews after their appointment" [Enhanced Admin Features] - Revenue stats: "Add daily/monthly revenue charts to the admin page" - Customer management: "Create a page showing regular customer list and visit count" - No-show management: "Add a feature to flag customers with 2+ no-shows" [Cost Summary] - Development period: Claude Pro $20/month - can cancel after completion - Maintenance: Supabase free + Vercel free = $0/month - Domain: ~$10-15/year (optional) - Email notifications: Resend free (3,000/month) - Total maintenance: $0-5/month (compare that to platform booking fees!) [If Something Goes Wrong] Just run Claude Code anytime and explain the problem. - "Bookings aren't working. Please check it" - "The calendar is cut off on mobile. Please fix it" - "The admin page is slow. Please optimize it" Don't try to edit the code yourself - it's much safer to leave it to Claude Code.

# === Recommended Extension Feature Prompts (enter in Claude Code) ===

# [Popular] Chat support button
"Add a floating chat support button in the bottom right corner.
Clicking it should open a link to our support page."

# [Popular] Shop location map
"Show the shop location with Google Maps at the bottom of the main page.
Address: 123 Main Street, Suite 4"

# [Popular] Booking QR code
"Add a feature to generate a booking QR code for the shop.
Scanning the QR code should go directly to the booking page."

# [SEO] Search engine optimization
"Optimize for SEO so my site appears when people search
'hair salon booking near me' on Google"

# [Analytics] Visitor tracking
"Integrate Google Analytics. The tracking ID is G-XXXXXXXXXX."
# -> Sign up for free at analytics.google.com to get the ID

# [Advanced] Real-time booking alerts
"Integrate Supabase Realtime so the admin page shows
real-time alerts when new bookings come in"

# === Deploy After Changes ===
# After adding features, tell Claude Code:
"Push the changes to GitHub"
# -> Vercel automatically deploys the new version in 1-2 minutes!

Core Code

Following this entire process takes about 2-3 hours to complete your own reservation system. You don't need to write a single line of code yourself - just make requests to Claude in plain English. The key to good results is organizing your shop information as specifically as possible.

// === Core Summary: Complete Reservation System Build Order ===
//
// [Preparation]
// 1. Sign up for Claude Pro (claude.ai, $20/month)
// 2. Install Node.js (nodejs.org)
// 3. Sign up for GitHub (github.com)
// 4. Sign up for Supabase (supabase.com)
// 5. Install Claude Code (npm install -g @anthropic-ai/claude-code in terminal)
//
// [Build Order]
// Step 1: Account signup + program installation (15 min)
// Step 2: Organize shop booking rules (10 min)
// Step 3: Preview design with Claude Artifacts (20 min)
// Step 4: Create actual project with Claude Code (30 min)
// Step 5: Preview + feature testing (30 min)
// Step 6: Connect Supabase database (20 min)
// Step 7: Set up email notifications - optional (15 min)
// Step 8: Deploy with GitHub + Vercel (15 min)
// Step 9: Start operations!
//
// Total time: About 2-3 hours (one day is plenty!)
//
// [Core Principles]
// - Don't edit code yourself. Leave all modifications to Claude Code.
// - Progress one feature at a time -> preview -> next feature.
// - If an error occurs, pass the error message directly to Claude Code.
// - After completing each feature, ask "Please commit the changes to git."
//
// [Cost Comparison]
// Outsourced development: $2,000-5,000 + maintenance fees
// Platform bookings:      $0.50-1.00 per booking (accumulates monthly)
// Build with AI:          ~$20 dev cost (one-time) + $0-5/month maintenance
//
// [Operations Tips]
// - Place a booking QR code at your shop (business cards, counter, etc.)
// - Put the booking link in your social media profiles
// - Add the booking link to your Google Business page
// - Register the booking URL on review sites and directories

Common Mistakes

Only using localStorage so booking status is not visible on other devices

Use localStorage only for testing. For actual operations, you must complete the Supabase connection in Step 6. The Supabase free plan is sufficient, and asking Claude Code "Connect Supabase" is all it takes.

Screen auto-zooms when tapping input fields on mobile, breaking the UI

iPhone Safari automatically zooms when focusing on an input with a font size below 16px. Ask Claude Code "Set the font size of all inputs and textareas to 16px or larger."

Not considering service duration, causing time slot overlap issues

If a Perm (120 min) is booked at 10:00, one station is occupied from 10:00 to 12:00. Ask Claude Code "Fix the time slot overlap check to cover the entire service duration range."

Not handling concurrent bookings, causing double bookings at the same time

Two customers selecting the same time simultaneously can cause duplicates. Ask Claude Code "Implement server-side availability re-check just before booking creation, using a Supabase RPC for atomic check-and-insert."

Hardcoding Supabase API keys directly in the code, causing security issues

API keys must be stored in the .env.local file and added to .gitignore. Ask Claude Code "Separate the environment variables into .env.local" and it handles it automatically. When deploying to Vercel, register the keys in Settings > Environment Variables.

Admin page has no password protection, allowing anyone to access it

Ask Claude Code "Add a password entry screen to the admin page. Only allow access to admin features after entering the correct password." You can later upgrade to login functionality using Supabase Auth.

Related liminfo Services