A full-stack MERN application for custom shoe design and e-commerce with 3D visualization capabilities, specifically designed for the Pakistani market.
π Live Demo: [Coming Soon]
Custom Kicks is an innovative e-commerce platform that revolutionizes the way customers shop for shoes by offering real-time 3D customization capabilities. Built with modern web technologies, it provides an immersive shopping experience with Pakistani market-specific features.
- Real-time 3D Visualization: Interactive shoe customization using React Three Fiber
- MERN Stack Architecture: Full-stack application with MongoDB, Express.js, React, and Node.js
- Pakistani Market Focus: PKR pricing, COD payments, and local shipping
- Admin Dashboard: Comprehensive management system for products, orders, and users
- Responsive Design: Optimized for desktop and mobile devices
- π Product browsing with advanced search and filters
- ποΈ Shopping cart with real-time updates
- π° Cash on Delivery (COD) payment system
- π¦ Order tracking and management
- π€ User authentication and profiles
- π Order history and status tracking
- π Real-time 3D shoe visualization using React Three Fiber
- π¨ Dynamic customization options (colors, materials, sole colors)
- π GLTF model support with texture mapping
- πΎ Save up to 10 custom designs per user
- π Interactive 3D model rotation and zoom
- ποΈ Product management (CRUD operations)
- π Order status management (individual and bulk updates)
- π₯ User management with blocking capabilities
- π Sales analytics and reporting
- πΌοΈ Image upload and management via Cloudinary
- π° PKR pricing with discount system
- π΅ Cash on Delivery payment method
- π Pakistan-wide shipping
- π Urdu-friendly interface considerations
- π Local business hours and support
- Node.js (v16+) with Express.js framework
- MongoDB with Mongoose ODM for data modeling
- JWT authentication with HTTP-only cookies
- Cloudinary for image storage and management
- Winston for comprehensive logging
- Bcrypt for secure password hashing
- Express Validator for request validation
- Multer for file upload handling
- Nodemailer for email functionality
- React 18 with modern hooks and functional components
- Vite for fast development and building
- React Router for client-side navigation
- Bootstrap 5 with React Bootstrap components
- React Three Fiber for 3D rendering and interactions
- Three.js for 3D graphics and animations
- Framer Motion for smooth animations
- Axios for HTTP client requests
- React Hot Toast for user notifications
- React Icons for consistent iconography
- ESLint for code quality
- Nodemon for development hot-reload
- Git for version control
- npm for package management
Before you begin, ensure you have the following installed:
- Node.js (v16 or higher) - Download here
- MongoDB (local installation or MongoDB Atlas account) - Get started
- Cloudinary Account (for image storage) - Sign up
- Git for version control - Download here
```bash git clone https://github.com/MyProVerse/Custom-Kicks-MERN-App.git cd Custom-Kicks-MERN-App ```
-
Navigate to backend directory: ```bash cd backend ```
-
Install dependencies: ```bash npm install ```
-
Environment Configuration: Create a
.envfile in the backend directory (use.env.exampleas reference): ```env
MONGO_URI=mongodb://localhost:27017/customkicks
For MongoDB Atlas: mongodb+srv://username:password@cluster.mongodb.net/customkicks
JWT_SECRET=your_super_secret_jwt_key_here_make_it_long_and_complex
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_API_SECRET=your_cloudinary_api_secret
PORT=8000 NODE_ENV=development FRONTEND_URL=http://localhost:5173 ```
-
Database Seeding (Optional but Recommended): ```bash npm run seed ```
-
Start the backend server: ```bash npm run dev ```
-
Navigate to frontend directory: ```bash cd ../frontend ```
-
Install dependencies: ```bash npm install ```
-
Start the development server: ```bash npm run dev ```
The application will be available at:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
After running the seed script, use these credentials:
- Admin: admin@customkicks.com / admin123
- User: user@example.com / user123
``` custom-kicks/ βββ backend/ β βββ config/ # Database, logging, Cloudinary config β βββ controllers/ # Route handlers β βββ middleware/ # Authentication, validation, error handling β βββ models/ # MongoDB schemas β βββ routes/ # API routes β βββ scripts/ # Database seeding scripts β βββ logs/ # Application logs β βββ uploads/ # Temporary file uploads βββ frontend/ β βββ src/ β β βββ components/ # Reusable React components β β βββ contexts/ # React Context providers β β βββ pages/ # Page components β β βββ assets/ # Static assets β βββ public/ # Public files (3D models, textures) βββ .gitignore βββ .env.example βββ README.md ```
POST /api/auth/register- User registrationPOST /api/auth/login- User loginPOST /api/auth/logout- User logoutGET /api/auth/profile- Get user profilePUT /api/auth/profile- Update user profile
GET /api/products- Get products with paginationGET /api/products/search- Search products with filtersGET /api/products/:id- Get single productPOST /api/products- Create product (Admin only)PUT /api/products/:id- Update product (Admin only)DELETE /api/products/:id- Delete product (Admin only)
POST /api/orders- Create orderGET /api/orders- Get user ordersGET /api/orders/:id- Get single orderPATCH /api/orders/:id/cancel- Cancel orderPATCH /api/orders/:id/status- Update order status (Admin only)PATCH /api/orders/bulk-status- Bulk update order status (Admin only)
GET /api/cart- Get user cartPOST /api/cart/add- Add item to cartPUT /api/cart/item/:itemId- Update cart itemDELETE /api/cart/item/:itemId- Remove cart itemDELETE /api/cart/clear- Clear cart
GET /api/custom-designs- Get user custom designsGET /api/custom-designs/:id- Get single custom design
GET /api/admin/analytics- Get sales analyticsGET /api/admin/orders- Get all ordersGET /api/admin/users- Get all usersPATCH /api/admin/users/:id/toggle-block- Block/unblock user
Place your 3D assets in the frontend/public directory:
```
public/
βββ models/
β βββ shoe.gltf
β βββ shoe.bin
β βββ components/
β βββ ShoeModel.jsx
βββ textures/
β βββ shoe-texture.jpg
βββ ...
```
Products support JSON-based customization settings: ```json { "soleColor": ["black", "white", "red"], "colors": ["blue", "red", "white"], "material": ["leather", "canvas", "suede"] } ```
- Environment Variables: Set all production environment variables
- Process Manager: Use PM2 for process management
npm install -g pm2 pm2 start server.js --name "custom-kicks-api" - Reverse Proxy: Configure Nginx for load balancing
- Security: Enable HTTPS and secure cookies
- Database: Use MongoDB Atlas for production
- Build the application:
npm run build
- Deploy to hosting platform (Vercel, Netlify, etc.)
- Configure environment variables for production API endpoints
- Update CORS settings in backend for production domain
# Production Database
MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/customkicks
# Secure JWT Secret
JWT_SECRET=your_production_jwt_secret_key_very_long_and_complex
# Cloudinary Production Settings
CLOUDINARY_CLOUD_NAME=your_production_cloud_name
CLOUDINARY_API_KEY=your_production_api_key
CLOUDINARY_API_SECRET=your_production_api_secret
# Production Configuration
PORT=80
NODE_ENV=production
FRONTEND_URL=https://your-domain.comWe welcome contributions to Custom Kicks! Here's how you can help:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Add tests if applicable
- Commit your changes
git commit -m 'Add some amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Submit a pull request
- Use ES6+ features and modern JavaScript
- Follow React best practices and hooks patterns
- Maintain consistent code formatting with ESLint
- Write meaningful commit messages
- Add JSDoc comments for complex functions
When reporting bugs, please include:
- Detailed description of the issue
- Steps to reproduce
- Expected vs actual behavior
- Browser/Node.js version
- Screenshots if applicable
This project is licensed under the MIT License - see the LICENSE file for details.
- Author: MyProVerse
- Email: alizaman6780@gmail.com
- GitHub: @MyProVerse
- Project Repository: Custom-Kicks-MERN-App
For support and questions:
- Check existing Issues
- Create a new issue if needed
- Join our community discussions
- Mobile app development (React Native)
- Payment gateway integration (Stripe, PayPal)
- Advanced 3D features (AR try-on)
- Multi-language support (Urdu, English)
- AI-powered recommendations
- Social media integration
- Live chat support
- Inventory management system
- React Three Fiber community for 3D rendering capabilities
- Bootstrap team for responsive design components
- MongoDB for flexible database solutions
- Cloudinary for reliable image management
- All contributors and testers
Built with β€οΈ for the Pakistani e-commerce market
If you find this project helpful, please consider giving it a βοΈ