SmartShop is a modern e-commerce platform built with Vue.js, designed to provide users with a fast, responsive, and intuitive shopping experience similar to Amazon and Noon.
The unique feature of this website is that orders are processed directly through WhatsApp, allowing customers to send product details and purchase requests instantly without registration or payment gateways.
When a user clicks on the "Order via WhatsApp" button, the site automatically opens WhatsApp with a pre-filled message that includes:
- β Product name
- β Price and discount information
- β Product rating and reviews
- β Direct product link
- β Professional order request message
- πͺ Product Catalog - Browse through a wide range of products
- π Smart Search - Quick product search with real-time filtering
- π·οΈ Category Filters - Filter products by category
- β Product Ratings & Reviews - See what others think
- π° Dynamic Pricing - Show original price, discounts, and savings
- β€οΈ Favorites System - Save products you love
- π± Fully Responsive - Works perfectly on all devices
- π² One-Click Ordering - Order products instantly via WhatsApp
- π Auto-Formatted Messages - Professional pre-filled order messages
- π Product Links - Share product details easily
- π Universal Compatibility - Works on all devices with WhatsApp
- β‘ Lightning Fast - Built with Vite for optimal performance
- π― Intuitive Navigation - Easy-to-use interface
- π Modern Design - Clean and professional UI
- π Product Details Page - Comprehensive product information
- π Smooth Transitions - Animated page transitions
- πΎ Persistent Favorites - LocalStorage-based favorites
| Technology | Purpose |
|---|---|
| Vue.js 3 | Frontend framework with Composition API |
| Vue Router | Client-side routing and navigation |
| Vite | Build tool and development server |
| CSS3 | Modern styling with custom properties |
| LocalStorage API | Client-side data persistence |
| WhatsApp Business API | Direct order integration |
smartshop-whatsapp-store/
βββ public/
β βββ shopping-cart.svg # App favicon
βββ src/
β βββ components/
β β βββ ProductCard.vue # Individual product card
β β βββ ProductList.vue # Products grid with filters
β β βββ SearchBar.vue # Search functionality
β β βββ CategoryFilter.vue # Category filtering
β β βββ Header.vue # App header/navigation
β β βββ Footer.vue # App footer
β βββ views/
β β βββ Home.vue # Homepage with product list
β β βββ ProductDetails.vue # Product detail page
β β βββ Favorites.vue # User's favorite products
β βββ services/
β β βββ whatsapp.js # WhatsApp integration logic
β βββ data/
β β βββ products.json # Product database
β βββ App.vue # Root component
β βββ main.js # App entry point
β βββ style.css # Global styles
βββ index.html # HTML template
βββ vite.config.js # Vite configuration
βββ package.json # Dependencies
βββ .gitignore # Git ignore rules
βββ netlify.toml # Netlify deployment config
βββ README.md # This file
- Node.js (v16 or higher)
- npm or yarn package manager
- Git (for cloning)
git clone https://github.com/yourusername/smartshop-whatsapp-store.git
cd smartshop-whatsapp-storenpm install
# or
yarn installOpen src/services/whatsapp.js and replace the phone number:
const WHATSAPP_NUMBER = '+201012345678' // Replace with your WhatsApp Business numberFormat: +[country_code][phone_number] (no spaces or special characters)
npm run dev
# or
yarn devVisit http://localhost:5173 in your browser.
npm run build
# or
yarn buildThe production-ready files will be in the dist/ folder.
-
Update
vite.config.jswith your repository name:export default defineConfig({ base: '/your-repo-name/', // Replace with your repository name })
-
Build the project:
npm run build
-
Deploy to GitHub Pages:
# Install gh-pages npm install -g gh-pages # Deploy gh-pages -d dist
-
Enable GitHub Pages in your repository settings:
- Go to Settings β Pages
- Select gh-pages branch
- Save
- Run
npm run build - Go to Netlify Drop
- Drag the
distfolder
- Push your code to GitHub
- Go to Netlify
- Click "New site from Git"
- Select your repository
- Build settings:
- Build command:
npm run build - Publish directory:
dist
- Build command:
- Click "Deploy site"
The netlify.toml file is already configured for optimal deployment.
Edit src/data/products.json:
{
"id": 21,
"name": "Your Product Name",
"category": "Electronics",
"price": 99.99,
"originalPrice": 149.99,
"discount": 33,
"rating": 5,
"reviews": 100,
"image": "https://your-image-url.com/product.jpg",
"description": "Your product description here"
}Edit CSS variables in src/style.css:
:root {
--primary-color: #ff9900; /* Brand color */
--secondary-color: #232f3e; /* Dark background */
--success-color: #25d366; /* WhatsApp green */
}Edit src/components/Footer.vue:
const phoneNumber = '+201012345678' // Your WhatsApp number- User browses products on the website
- User clicks "Order via WhatsApp" on any product
- System generates formatted message with product details
- WhatsApp opens automatically with pre-filled message
- User sends message to seller/business
- Order processed via WhatsApp conversation
ποΈ *New Order Request*
π¦ *Product:* Wireless Bluetooth Headphones
π° *Price:* $79.99
π *Category:* Electronics
~~$129.99~~ π₯ *38% OFF*
β *Rating:* βββββ (1243 reviews)
π *Product Link:* https://yoursite.com/#/product/1
β
I would like to order this product!
Contributions are what make the open-source community amazing! Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE file for more information.
Your Name
- GitHub: @yourusername
- Email: your.email@example.com
- Vue.js Documentation
- Vite Documentation
- WhatsApp Business API
- Unsplash for product images
- Icons: Emoji Unicode characters
If you have any questions or need help, feel free to:
- π§ Email: your.email@example.com
- π¬ WhatsApp: +201012345678
- π Open an issue
Give a βοΈ if this project helped you!
Built with β€οΈ using Vue.js