Skip to content

Samitha-Edirisinghe/Gem-Store-Website

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Luxury Gemstone Website

A premium, modern gemstone e-commerce website built with React, showcasing the beauty and authenticity of natural gemstones with a sophisticated, luxury aesthetic.

πŸš€ Quick Start (Run Locally)

Prerequisites

  • Node.js 18.x or higher (Download here)
  • npm or pnpm (pnpm recommended for faster installs)

Installation

  1. Install dependencies:

    npm install
    # or
    pnpm install
  2. Start development server:

    npm run dev
    # or
    pnpm dev
  3. Open in browser:

    http://localhost:5173
    

That's it! The website should now be running on your local machine. πŸŽ‰

For detailed installation instructions and troubleshooting, see INSTALLATION.md.

🎨 Design Philosophy

This website follows high-end jewelry brand standards with:

  • Color Palette: Soft ivory backgrounds (#faf9f7), deep charcoal/navy (#2d3748), and muted gold/champagne accents (#c4a962)
  • Typography:
    • Headings: Cormorant Garamond (serif)
    • Body: Inter (sans-serif)
  • Interactions: Smooth micro-interactions with gold glow effects
  • Layout: Generous white space for a calm, trustworthy feel
  • Aesthetic: Premium, minimal, and modern throughout

πŸ“ Project Structure

luxury-gemstone-website/
β”‚
β”œβ”€β”€ public/                     # Public static assets
β”‚   └── vite.svg               # Favicon
β”‚
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ components/           # Reusable React components
β”‚   β”‚   β”‚   β”œβ”€β”€ figma/            # Figma-specific components
β”‚   β”‚   β”‚   β”‚   └── ImageWithFallback.tsx
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€ ui/               # Shadcn/UI component library
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ accordion.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ alert-dialog.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ alert.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ button.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ card.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ checkbox.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ dialog.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ form.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ input.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ label.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ select.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ textarea.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ tooltip.tsx
β”‚   β”‚   β”‚   β”‚   └── ... (40+ UI components)
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€ About.tsx         # About section component
β”‚   β”‚   β”‚   β”œβ”€β”€ CTASection.tsx    # Call-to-action section
β”‚   β”‚   β”‚   β”œβ”€β”€ Categories.tsx    # Category cards component
β”‚   β”‚   β”‚   β”œβ”€β”€ Contact.tsx       # Contact form component
β”‚   β”‚   β”‚   β”œβ”€β”€ FeaturedCarousel.tsx  # Featured gems carousel
β”‚   β”‚   β”‚   β”œβ”€β”€ Footer.tsx        # Site footer
β”‚   β”‚   β”‚   β”œβ”€β”€ Header.tsx        # Site navigation header
β”‚   β”‚   β”‚   β”œβ”€β”€ Hero.tsx          # Hero section component
β”‚   β”‚   β”‚   β”œβ”€β”€ HeroSlideshow.tsx # Full-width hero slideshow
β”‚   β”‚   β”‚   └── ProductGrid.tsx   # Product grid layout
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ pages/                # Route page components
β”‚   β”‚   β”‚   β”œβ”€β”€ Root.tsx          # Root layout with Header/Footer
β”‚   β”‚   β”‚   β”œβ”€β”€ HomePage.tsx      # Homepage (/)
β”‚   β”‚   β”‚   β”œβ”€β”€ AboutPage.tsx     # About Us page (/about)
β”‚   β”‚   β”‚   β”œβ”€β”€ PreciousGemsPage.tsx    # Precious Gems catalog (/precious-gems)
β”‚   β”‚   β”‚   β”œβ”€β”€ RareStonesPage.tsx      # Rare Stones catalog (/rare-stones)
β”‚   β”‚   β”‚   β”œβ”€β”€ CustomCollectionPage.tsx # Custom Collection (/custom-collection)
β”‚   β”‚   β”‚   β”œβ”€β”€ ContactPage.tsx   # Contact page (/contact)
β”‚   β”‚   β”‚   └── GemDetailPage.tsx # Individual gem details (/gem/:id)
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ App.tsx               # Main app component with RouterProvider
β”‚   β”‚   └── routes.ts             # React Router configuration
β”‚   β”‚
β”‚   β”œβ”€β”€ styles/                   # Global styles and CSS
β”‚   β”‚   β”œβ”€β”€ index.css             # Main CSS entry point
β”‚   β”‚   β”œβ”€β”€ tailwind.css          # Tailwind CSS imports
β”‚   β”‚   β”œβ”€β”€ theme.css             # Design tokens and theme variables
β”‚   β”‚   β”œβ”€β”€ fonts.css             # Font imports (Google Fonts)
β”‚   β”‚   └── slick-custom.css      # Custom carousel styles
β”‚   β”‚
β”‚   β”œβ”€β”€ imports/                  # Figma imported assets (if any)
β”‚   └── main.tsx                  # Application entry point
β”‚
β”œβ”€β”€ index.html                    # HTML entry point
β”œβ”€β”€ package.json                  # Project dependencies
β”œβ”€β”€ tsconfig.json                 # TypeScript configuration
β”œβ”€β”€ tsconfig.node.json            # TypeScript config for Node files
β”œβ”€β”€ vite.config.ts                # Vite configuration
β”œβ”€β”€ postcss.config.mjs            # PostCSS configuration
β”œβ”€β”€ .gitignore                    # Git ignore rules
β”œβ”€β”€ ATTRIBUTIONS.md               # Asset attributions
β”œβ”€β”€ INSTALLATION.md               # Detailed installation guide
β”œβ”€β”€ QUICKSTART.md                 # Quick start guide
└── README.md                     # This file

πŸ—‚οΈ Component Breakdown

Core Layout Components

Component Location Purpose
Header /src/app/components/Header.tsx Site navigation with logo and menu links
Footer /src/app/components/Footer.tsx Footer with company info and links
Root /src/app/pages/Root.tsx Layout wrapper containing Header/Footer

Homepage Components

Component Location Purpose
HeroSlideshow /src/app/components/HeroSlideshow.tsx Full-width hero carousel with auto-play
Categories /src/app/components/Categories.tsx Three category cards (Precious Gems, Rare Stones, Custom)
FeaturedCarousel /src/app/components/FeaturedCarousel.tsx Carousel showcasing featured gemstones
About /src/app/components/About.tsx About section with craftsmanship image
CTASection /src/app/components/CTASection.tsx Call-to-action section

Page Components

Page Route File Description
Home / HomePage.tsx Homepage with hero, categories, featured gems
About Us /about AboutPage.tsx Company story, values, expertise
Precious Gems /precious-gems PreciousGemsPage.tsx Catalog of precious gemstones
Rare Stones /rare-stones RareStonesPage.tsx Catalog of rare gemstones
Custom Collection /custom-collection CustomCollectionPage.tsx Bespoke jewelry portfolio
Contact /contact ContactPage.tsx Contact form and business info
Gem Detail /gem/:id GemDetailPage.tsx Individual gemstone details

Shared Components

Component Purpose
ProductGrid Grid layout for product listings
Contact Contact form with email and message fields

πŸ›£οΈ Routing Structure

/ (Root Layout - includes Header & Footer)
β”‚
β”œβ”€β”€ / (HomePage)
β”œβ”€β”€ /about (AboutPage)
β”œβ”€β”€ /precious-gems (PreciousGemsPage)
β”œβ”€β”€ /rare-stones (RareStonesPage)
β”œβ”€β”€ /custom-collection (CustomCollectionPage)
β”œβ”€β”€ /contact (ContactPage)
└── /gem/:id (GemDetailPage)
    └── Dynamic routes for each gemstone:
        - /gem/royal-sapphire
        - /gem/emerald-majesty
        - /gem/exotic-tanzanite
        - /gem/paraiba-tourmaline
        - etc.

🎨 Design System

Color Tokens (defined in /src/styles/theme.css)

--color-ivory: #faf9f7;          /* Background */
--color-charcoal: #2d3748;       /* Dark text */
--color-gold: #c4a962;           /* Accent */
--color-gold-light: #d4b976;     /* Light accent */
--color-gold-dark: #b39952;      /* Dark accent */

Typography

  • Headings: font-heading β†’ Cormorant Garamond
  • Body: font-body β†’ Inter

Key UI Patterns

  1. Gem Cards: Consistent across all catalog pages

    • Square aspect ratio image
    • Category label (uppercase, gold)
    • Certified badge overlay
    • Gem name (large serif heading)
    • Carats with gem icon
    • Origin with map pin icon
    • Price and "View Details" button
  2. Hover Effects:

    • Image scale on hover (1.1x)
    • Gold glow shadows
    • Smooth transitions (300-700ms)
  3. Buttons:

    • Primary: Gold gradient (bg-gradient-to-r from-[#c4a962] to-[#d4b976])
    • Hover: Scale + shadow enhancement
    • Rounded full corners

🧰 Tech Stack

Core

  • React 18 - UI framework
  • TypeScript - Type safety
  • Vite - Build tool and dev server

Routing

  • React Router v7 - Client-side routing (Data Router mode)

Styling

  • Tailwind CSS v4 - Utility-first CSS framework
  • PostCSS - CSS processing

UI Libraries

  • Shadcn/UI - Headless component library
  • Lucide React - Icon library
  • Motion (Framer Motion) - Animation library
  • React Slick - Carousel component
  • Slick Carousel - Carousel base library

Forms

  • React Hook Form - Form state management

Images

  • Unsplash - Stock photography source
  • Figma Assets - Custom imported images

πŸš€ Getting Started

Installation

# Install dependencies
npm install
# or
pnpm install

Development

# Start development server
npm run dev
# or
pnpm dev

Visit http://localhost:5173 to view the site.

Build

# Build for production
npm run build
# or
pnpm build

Preview Production Build

# Preview production build locally
npm run preview
# or
pnpm preview

πŸ“¦ Key Dependencies

{
  "react": "^18.3.1",
  "react-router": "^7.1.3",
  "motion": "latest",
  "react-slick": "^0.30.2",
  "slick-carousel": "^1.8.1",
  "lucide-react": "latest",
  "react-hook-form": "7.55.0",
  "tailwindcss": "^4.0.0"
}

🎯 Features

Homepage

  • βœ… Premium full-width hero slideshow
  • βœ… Category navigation cards
  • βœ… Featured gemstone carousel (3 columns)
  • βœ… About section with craftsmanship image
  • βœ… CTA section

About Page

  • βœ… Company story
  • βœ… Core values (3 columns)
  • βœ… Expertise showcase
  • βœ… Team/craftsmanship images
  • ⚠️ No hero section (direct content start)
  • ⚠️ "Our Journey" timeline section removed

Catalog Pages (Precious Gems, Rare Stones, Custom Collection)

  • βœ… Header with category title and description
  • βœ… Feature cards (3 columns)
  • βœ… Product grid (3 columns)
  • βœ… Consistent gem card design
  • βœ… Links to individual gem detail pages
  • βœ… CTA section

Gem Detail Page

  • βœ… Image gallery with thumbnails
  • βœ… Navigation arrows and image selection
  • βœ… Category, name, and price display
  • βœ… Quick info cards (weight, origin)
  • βœ… Full description
  • βœ… Detailed specifications table
  • βœ… Key highlights with checkmarks
  • βœ… CTA buttons (Schedule Viewing, Request Info)
  • βœ… Trust badges
  • βœ… Related gemstones section
  • βœ… Back navigation

Contact Page

  • βœ… Contact form (name, email, phone, message)
  • βœ… Business information
  • βœ… Office hours
  • βœ… Contact details (phone, email, address)

Navigation

  • βœ… Clean minimal header
  • βœ… No cart icons
  • βœ… No search functionality
  • βœ… No "Book Consultation" buttons in nav
  • βœ… Responsive mobile menu

🎨 Gemstone Data Structure

interface Gem {
  id: string;                    // URL-friendly identifier
  name: string;                  // Display name
  category: string;              // "Precious Gems" | "Rare Stones" | "Custom Collection"
  carat: string;                 // Weight (e.g., "5.2 Carats")
  origin: string;                // Location (e.g., "Kashmir, India")
  clarity: string;               // Clarity grade (e.g., "VVS1", "IF")
  price: string;                 // Formatted price (e.g., "$45,000")
  cut: string;                   // Cut style (e.g., "Cushion Cut")
  treatment: string;             // Treatment info
  certification: string;         // Certification body
  image: string;                 // Primary image URL
  description: string;           // Long description
  specifications: Array<{        // Additional specs
    label: string;
    value: string;
  }>;
  highlights: string[];          // Key selling points
}

πŸ–ΌοΈ Image Guidelines

Using Unsplash Images

Images are sourced from Unsplash with search queries optimized for luxury gemstone photography.

Using Figma Assets

Raster images use the figma:asset virtual module scheme:

import img from "figma:asset/abc123.png"

SVG vectors use relative file paths:

import svgPaths from "../imports/svg-wg56ef214f"

🎯 Navigation Improvements

Removed Elements (per design requirements)

  • ❌ Cart icons
  • ❌ "Book Consultation" buttons in navigation
  • ❌ Search functionality

Clean Header Features

  • βœ… Logo
  • βœ… Main navigation links only
  • βœ… Minimal, refined design
  • βœ… Sticky positioning

πŸ“ Content Pages

Homepage Sections

  1. Hero Slideshow (3 slides)
  2. Categories (3 cards)
  3. Featured Gemstones (6 items, carousel)
  4. About Preview
  5. CTA

About Page Sections

  1. Our Story (text + images)
  2. Values (3 columns)
  3. Expertise (text + image)
  4. Our Journey (REMOVED)

Catalog Pages

  1. Header (title + description)
  2. Features (3 cards)
  3. Product Grid (6+ items)
  4. CTA or Info Section

Contact Page Sections

  1. Contact Form
  2. Business Information
  3. Map/Location Info

πŸ”§ Customization

Adding New Gemstones

  1. Add gem data to the appropriate page array in PreciousGemsPage.tsx, RareStonesPage.tsx, or CustomCollectionPage.tsx
  2. Also add to GemDetailPage.tsx in the allGems array
  3. Ensure each gem has a unique id

Updating Colors

Edit /src/styles/theme.css to update brand colors globally.

Changing Fonts

  1. Update font imports in /src/styles/fonts.css
  2. Update font family tokens in /src/styles/theme.css

πŸ“„ License

This project showcases premium gemstone products with a luxury design aesthetic.


Built with precision and elegance ✨

About

A premium, modern gemstone e-commerce website built with React, showcasing the beauty and authenticity of natural gemstones with a sophisticated, luxury aesthetic.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages