A premium, modern gemstone e-commerce website built with React, showcasing the beauty and authenticity of natural gemstones with a sophisticated, luxury aesthetic.
- Node.js 18.x or higher (Download here)
- npm or pnpm (pnpm recommended for faster installs)
-
Install dependencies:
npm install # or pnpm install -
Start development server:
npm run dev # or pnpm dev -
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.
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
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 | 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 |
| 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 | 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 |
| Component | Purpose |
|---|---|
ProductGrid |
Grid layout for product listings |
Contact |
Contact form with email and message fields |
/ (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.
--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 */- Headings:
font-headingβ Cormorant Garamond - Body:
font-bodyβ Inter
-
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
-
Hover Effects:
- Image scale on hover (1.1x)
- Gold glow shadows
- Smooth transitions (300-700ms)
-
Buttons:
- Primary: Gold gradient (
bg-gradient-to-r from-[#c4a962] to-[#d4b976]) - Hover: Scale + shadow enhancement
- Rounded full corners
- Primary: Gold gradient (
- React 18 - UI framework
- TypeScript - Type safety
- Vite - Build tool and dev server
- React Router v7 - Client-side routing (Data Router mode)
- Tailwind CSS v4 - Utility-first CSS framework
- PostCSS - CSS processing
- Shadcn/UI - Headless component library
- Lucide React - Icon library
- Motion (Framer Motion) - Animation library
- React Slick - Carousel component
- Slick Carousel - Carousel base library
- React Hook Form - Form state management
- Unsplash - Stock photography source
- Figma Assets - Custom imported images
# Install dependencies
npm install
# or
pnpm install# Start development server
npm run dev
# or
pnpm devVisit http://localhost:5173 to view the site.
# Build for production
npm run build
# or
pnpm build# Preview production build locally
npm run preview
# or
pnpm preview{
"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"
}- β Premium full-width hero slideshow
- β Category navigation cards
- β Featured gemstone carousel (3 columns)
- β About section with craftsmanship image
- β CTA section
- β Company story
- β Core values (3 columns)
- β Expertise showcase
- β Team/craftsmanship images
β οΈ No hero section (direct content start)β οΈ "Our Journey" timeline section removed
- β 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
- β 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 form (name, email, phone, message)
- β Business information
- β Office hours
- β Contact details (phone, email, address)
- β Clean minimal header
- β No cart icons
- β No search functionality
- β No "Book Consultation" buttons in nav
- β Responsive mobile menu
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
}Images are sourced from Unsplash with search queries optimized for luxury gemstone photography.
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"- β Cart icons
- β "Book Consultation" buttons in navigation
- β Search functionality
- β Logo
- β Main navigation links only
- β Minimal, refined design
- β Sticky positioning
- Hero Slideshow (3 slides)
- Categories (3 cards)
- Featured Gemstones (6 items, carousel)
- About Preview
- CTA
- Our Story (text + images)
- Values (3 columns)
- Expertise (text + image)
Our Journey(REMOVED)
- Header (title + description)
- Features (3 cards)
- Product Grid (6+ items)
- CTA or Info Section
- Contact Form
- Business Information
- Map/Location Info
- Add gem data to the appropriate page array in
PreciousGemsPage.tsx,RareStonesPage.tsx, orCustomCollectionPage.tsx - Also add to
GemDetailPage.tsxin theallGemsarray - Ensure each gem has a unique
id
Edit /src/styles/theme.css to update brand colors globally.
- Update font imports in
/src/styles/fonts.css - Update font family tokens in
/src/styles/theme.css
This project showcases premium gemstone products with a luxury design aesthetic.
Built with precision and elegance β¨