Ultra-Premium Digital Mall Platform for Samarkand β Apple-level minimalism meets Amazon usability.
- Cinematic Dark Theme: Primary background
rgba(37, 40, 54, 1) - Apple-level Minimalism: Clean, uncluttered interfaces with intentional white space
- Amazon/Uzum Usability: Intuitive navigation, powerful search, smart recommendations
- Electric Blue & Purple Gradients: Modern, vibrant accent colors
- Gold Premium Accents: Luxury highlights and details
- Glassmorphism Effects: Subtle backdrop blur with elegant borders
- Premium Typography: Playfair Display (headings) + Inter (body)
- Smooth Micro-animations: Cubic-bezier easing, realistic motion
- Mobile-First Design: Large touch targets, one-hand navigation
- Subtle Particle System: Glowing orbs with mouse parallax
- Winter Snow Effect: Soft, delicate snowflakes with natural motion
- Canvas-Based: GPU-accelerated for 60fps performance
- Non-Intrusive: Low opacity, refined aesthetics
- Mouse Interaction: Particles respond to cursor movement
- 3D Hover Effects: Perspective transforms with rotation
- Smooth Lift: Elevation on hover with shadow bloom
- Image Zoom: Cinematic scale effect on hover
- Glassmorphism Overlay: Premium depth and elegance
- Interactive Elements: Wishlist hearts, rating badges, status indicators
- Primary: Electric blue gradient with glow effect
- Secondary: Outlined style with hover fill
- Ghost: Minimal style with subtle borders
- Shimmer Animation: Elegant shine sweep effect
- Scale Feedback: Active state with slight reduction
- Cinematic Hero: Full-width parallax with gradient overlay
- 3D Mall Cards: Premium hover effects with detailed information
- Real-time Status: Open/Closed/Coming Soon badges
- Rating System: Star ratings with review counts
- Interactive Stats: Shop count, visitors, ratings
- Uzum/Amazon Style Grid: Clean, organized product listings
- Premium Product Cards: Image zoom, wishlist, rating badges
- Discount Badges: Strikethrough prices, percentage savings
- Quick Actions: Add to cart, wishlist, quick view
- Filter System: Category, price, rating, availability
- Sticky Bottom Navigation: Home | Malls | Search | Wishlist | Profile
- Large Touch Targets: Minimum 48x48px for buttons
- Thumb-Zone Optimization: One-hand friendly interactions
- Smooth Scrolling: Native scroll behavior with momentum
- Pull-to-Refresh: Standard mobile patterns
Fully functional enterprise-grade admin system:
- Mall management (CRUD with floor plans)
- Store management (locations, hours, categories)
- Product management (inventory, pricing, discounts)
- Promotion management (flash sales, time-limited offers)
- Event management (calendar, tickets, capacity)
- User roles & permissions (RBAC)
- JWT authentication (secure token-based)
- Real-time analytics dashboard
- Hidden from public - accessible only via
/admin/login
- Full feature parity with website
- Multi-language support (Uzbek, Russian, English, Turkish)
- Interactive menus with inline keyboards
- Location-based services (find nearby malls)
- Real-time data sync with website
- All core features: malls, stores, deals, events, cinema, restaurants, jobs, parking, tourist services
- Product search across all stores
- Reviews & loyalty program
- See BOT_SETUP.md for detailed setup instructions
Node.js >= 16.0.0
npm >= 8.0.0- Clone the repository
git clone <repository-url>
cd mega-travel-center- Install dependencies
npm install- Start development server
npm run devThe app will be available at http://localhost:3000
- Start backend server (for admin panel)
npm run serverBackend runs on http://localhost:5000
- Start Telegram bot (optional)
npm run botSee BOT_SETUP.md for bot configuration
Or start everything at once:
npm run start:allnpm run build
npm run previewmega-travel-center/
βββ src/
β βββ admin/ # Admin panel (hidden from public)
β β βββ pages/ # Admin pages
β β βββ components/ # Admin components
β β βββ hooks/ # Admin hooks
β βββ components/ # Reusable components
β β βββ InteractiveBackground.jsx # β KEY FEATURE
β β βββ Button3D.jsx # 3D interactive buttons
β β βββ AnimatedCounter.jsx # Scroll-triggered counters
β β βββ SeasonalBackground.jsx # Seasonal effects
β β βββ FloatingActionButton.jsx # FAB menu
β β βββ ...
β βββ contexts/ # React contexts
β β βββ ThemeContext.jsx
β β βββ LanguageContext.jsx
β β βββ UserContext.jsx
β βββ hooks/ # Custom hooks
β β βββ useScrollReveal.js
β βββ pages/ # Page components
β βββ data/ # JSON data (shared with bot)
β β βββ malls.json
β β βββ stores.json
β β βββ products.json
β βββ index.css # Global styles
βββ server.js # Express backend
βββ bot.js # π€ Telegram Bot (NEW)
βββ package.json
βββ README.md
βββ BOT_SETUP.md # Bot setup guide
βββ .env.example # Environment variables template
Primary Background: rgba(37, 40, 54, 1)
Purple Gradient: from-purple-400 via-purple-600 to-purple-800
Gold Accent: #D4AF37
Cream: #F4EFE7- Headings: Playfair Display (serif)
- Body: Inter (sans-serif)
- Alternative: Lato
import Button3D from './components/Button3D'
// Primary button
<Button3D variant="primary" size="lg">
Click Me
</Button3D>
// Outline button
<Button3D variant="outline" onClick={handleClick}>
Learn More
</Button3D>
// Full width button
<Button3D variant="accent" fullWidth>
Get Started
</Button3D>import AnimatedCounter from './components/AnimatedCounter'
<AnimatedCounter
end={850}
suffix="+"
duration={2000}
className="text-4xl font-bold"
/>import { useScrollReveal } from './hooks/useScrollReveal'
function MyComponent() {
const [ref, isVisible] = useScrollReveal()
return (
<div ref={ref} className={isVisible ? 'fade-in' : ''}>
Content
</div>
)
}The InteractiveBackground component uses HTML5 Canvas with:
- Particle system with orbital motion
- Mouse-based parallax effects
- Seasonal color schemes
- GPU acceleration with
requestAnimationFrame - Connection lines between nearby particles
The Button3D component features:
- Mouse position tracking
- 3D perspective transforms
- Tilt effect based on cursor position
- Multiple style variants
- Smooth transitions
Automatic detection and visual adaptation:
- CSS animations for seasonal elements
- Dynamic color schemes in background
- Smooth transitions between seasons
- Start the backend server (required for admin panel):
npm run serverThe backend runs on http://localhost:5000
-
Access the admin login page: Navigate to:
http://localhost:3000/admin/login -
Login with default credentials:
- Email:
admin@samarkand.com - Password:
admin123
- Real-time statistics: View total malls, stores, products, banners, and stories
- Recent activities: Track latest changes and additions
- Quick actions: Fast access to create new items
- System status: Monitor server and database health
- Create/Edit/Delete malls
- Upload mall images and galleries
- Set opening hours, location, and contact info
- Manage mall features and amenities
- Changes reflect immediately on the main website
- Add stores to specific malls
- Configure store details, categories, and working hours
- Upload store logos, banners, and interior photos
- Set contact information and social media links
- All updates are live on the website instantly
- Add products to stores
- Set prices, categories, and availability
- Upload product images and galleries
- Define specifications and variations
- Products appear immediately in store listings
- Create promotional banners for homepage
- Schedule banner display dates
- Set banner positions and links
- Toggle active/inactive status
- Banners show instantly when activated
NEW FEATURE - Full Instagram-style stories management!
- Create engaging stories for mall promotions
- Upload images or videos with full customization
- Add content overlays: titles, descriptions, CTAs, discounts
- Promote stories with special badges (β‘ Promoted, π New)
- Schedule stories with start/end dates
- Assign to specific malls for targeted marketing
- Stories appear in Instagram-style carousel on mall pages
Story Features:
- Instagram-style ring indicators (gradient for new, gray for viewed)
- Full-screen immersive viewer with swipe navigation
- Progress bars showing story duration
- Auto-advance to next story
- Interactive elements (like, share, bookmark icons)
- Pause on touch/click
- Mobile-optimized gestures
- Configure site-wide settings
- Update theme colors and branding
- Manage company information
- Set contact details
- Review and approve seller applications
- Manage seller permissions
- Control seasonal themes and decorations
- Activate New Year animations
- Create and edit static pages
- Manage site content
- View customer feedback and reviews
- Respond to user inquiries
All changes are real-time and immediate:
- Stories created in admin β Appear instantly in Instagram Stories carousel on mall pages
- Malls added β Show up immediately on homepage and map
- Stores created β Visible in mall store directories right away
- Products added β Listed in store pages immediately
- Banners activated β Display on homepage instantly
- Settings updated β Applied site-wide immediately
- Go to Instagram Stories section (
/admin/stories) - Click "Yangi Hikoya" (New Story)
- Fill in the form:
- Mall: Select the mall
- Title: Store or brand name
- Type: Image or Video
- Thumbnail URL: Square image for story ring
- Media URL: Full-size image/video for story viewer
- Content: Add title, description, discount, and CTA
- Settings: Mark as promoted or new, set dates
- Click "Yaratish" (Create)
- View on website: Navigate to the mall page to see your story!
The admin panel connects to these backend APIs:
POST /api/auth/login - Admin authentication
GET /api/auth/me - Get current user
GET /api/malls - List all malls
POST /api/malls - Create mall
PUT /api/malls/:id - Update mall
DELETE /api/malls/:id - Delete mall
GET /api/stores - List all stores
POST /api/stores - Create store
PUT /api/stores/:id - Update store
DELETE /api/stores/:id - Delete store
GET /api/products - List all products
POST /api/products - Create product
PUT /api/products/:id - Update product
DELETE /api/products/:id - Delete product
GET /api/banners - List all banners
POST /api/banners - Create banner
PUT /api/banners/:id - Update banner
DELETE /api/banners/:id - Delete banner
GET /api/stories - List all stories (public)
GET /api/stories?mall_id=X - Get stories for specific mall
POST /api/stories - Create story (admin)
PUT /api/stories/:id - Update story (admin)
DELETE /api/stories/:id - Delete story (admin)
- JWT Authentication: All admin endpoints require valid JWT token
- Token Storage: Stored in localStorage after login
- Auto-redirect: Unauthenticated users redirected to login
- Session Management: Tokens expire after 24 hours
- Protected Routes: All admin pages protected with
ProtectedRoutecomponent
- Frontend: React + React Router
- State: Local state with hooks
- Styling: Tailwind CSS
- Icons: Lucide React
- Backend: Express.js
- Auth: JWT (jsonwebtoken + bcryptjs)
- Storage: In-memory database (server.js)
Can't log in?
- Make sure backend server is running (
npm run server) - Check console for error messages
- Verify credentials:
admin@samarkand.com/admin123
Changes not showing?
- Hard refresh the website (
Ctrl+Shift+R) - Check if backend is running
- Verify item is marked as active/published
Stories not appearing?
- Ensure story is marked as "Active" (isActive checkbox)
- Check story dates (start/end date)
- Verify correct mall_id is selected
- Check browser console for API errors
- Lighthouse Score: 90+
- GPU-accelerated animations
- Lazy loading for images
- Code splitting with Vite
- Optimized bundle size
- React 18.2.0 - UI library
- React Router v6 - Navigation
- Tailwind CSS 3.4.1 - Styling
- Vite - Build tool
- GSAP - Animations
- Three.js - 3D effects
- Express - Backend server
- JWT - Authentication
- Multer - File uploads
- node-telegram-bot-api - Bot framework
- Multi-language - Full i18n support
- Location services - GPS integration
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
MIT License - feel free to use this project for your own purposes.
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a pull request
For questions or support:
- Email: info: roziyevnozin@gmail.com
Built with β€οΈ by the MTC Team
Delivering premium digital experiences since 2024