একটি মডার্ন, ফুল-স্ট্যাক ই-কমার্স ল্যান্ডিং পেজ বাংলাদেশের মার্কেটের জন্য।
- Next.js 14 (App Router)
- TypeScript
- Tailwind CSS
- Zustand (State Management)
- Framer Motion (Animations)
- Swiper.js (Carousels)
- Lucide React (Icons)
- Node.js
- Express
- MongoDB
- Mongoose
- JWT (Authentication)
- SSLCommerz (BD Payment Gateway)
- Stripe (International Payment Gateway)
- TypeScript
shopkoro/
├── frontend/ # Next.js frontend application
│ ├── app/ # Next.js App Router
│ ├── components/ # Reusable components
│ ├── lib/ # Utilities
│ ├── stores/ # Zustand state management
│ ├── types/ # TypeScript types
│ └── public/ # Static assets
├── backend/ # Node.js/Express backend API
│ ├── config/ # Database configuration
│ ├── controllers/ # Route controllers
│ ├── models/ # Mongoose models
│ ├── routes/ # API routes
│ ├── middleware/ # Express middleware
│ ├── utils/ # Utilities
│ └── scripts/ # Database scripts
├── .gitignore
├── PROJECT_STRUCTURE.md
├── README.md
└── .vscode/
- Node.js 18+
- MongoDB (Local or Atlas)
- npm or yarn
- Navigate to the project root:
cd shopkoro- Install dependencies:
npm install- Create
.env.localfile (optional for now):
NEXT_PUBLIC_API_URL=http://localhost:5000/api- Run development server:
npm run devFrontend will run on http://localhost:3000
- Navigate to backend directory:
cd backend- Install dependencies:
npm install- Create
.envfile:
NODE_ENV=development
PORT=5000
MONGODB_URI=mongodb://localhost:27017/shopkoro
# Or use MongoDB Atlas:
# MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/shopkoro?retryWrites=true&w=majority
ACCESS_TOKEN_SECRET=your-access-token-secret
REFRESH_TOKEN_SECRET=your-refresh-token-secret
ACCESS_TOKEN_EXPIRES_IN=15m
REFRESH_TOKEN_EXPIRES_IN=7d
REFRESH_COOKIE_NAME=shopkoro_refresh
FRONTEND_URL=http://localhost:3000
BACKEND_URL=http://localhost:5000
ADMIN_EMAIL=admin@shopkoro.com
ADMIN_PASSWORD=ChangeMe123!
# Payment Gateway Keys (for production)
SSLCOMMERZ_STORE_ID=your_store_id
SSLCOMMERZ_STORE_PASSWORD=your_store_password
STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key- Seed the database with dummy data:
npm run seed- Run development server:
npm run devBackend will run on http://localhost:5000
- ✅ Hero Section with Countdown Timer
- ✅ Flash Sale Section (8 products)
- ✅ Category Grid (12 categories)
- ✅ Featured Products Carousel
- ✅ Why Choose Us (4 feature cards)
- ✅ Trending Products Grid
- ✅ Testimonials Slider
- ✅ Newsletter Signup
- ✅ Offers Page (Discounted products)
- ✅ Responsive Navbar
- ✅ Footer
- ✅ User Authentication - Login/Register/Profile management
- ✅ Shopping Cart - Add, update, remove items with Zustand state
- ✅ Product Catalog - Browse products with filtering and search
- ✅ Wishlist - Save and manage favorite products
- ✅ Offers & Discounts - Special deals and discounted products
- ✅ Checkout System - Complete order flow with shipping details
- ✅ Payment Integration - SSLCommerz (BDT) + Stripe (USD)
- ✅ Order Management - Order history and status tracking
POST /api/auth/login- User loginPOST /api/auth/register- User registrationGET /api/auth/me- Get current user infoPOST /api/auth/logout- User logout
GET /api/products- Get all productsGET /api/products/featured- Get featured productsGET /api/products/flash-sale- Get flash sale productsGET /api/products/trending- Get trending productsGET /api/products/:id- Get single productPOST /api/products- Create product (Admin)PUT /api/products/:id- Update product (Admin)DELETE /api/products/:id- Delete product (Admin)
GET /api/categories- Get all categoriesGET /api/categories/:id- Get single categoryPOST /api/categories- Create category (Admin)PUT /api/categories/:id- Update category (Admin)DELETE /api/categories/:id- Delete category (Admin)
GET /api/cart- Get user's cartPOST /api/cart- Add item to cartPUT /api/cart/:itemId- Update cart itemDELETE /api/cart/:itemId- Remove item from cartDELETE /api/cart- Clear cart
GET /api/wishlist- Get user's wishlistPOST /api/wishlist- Add product to wishlistDELETE /api/wishlist/:productId- Remove product from wishlist
POST /api/orders- Create new orderGET /api/orders- Get user's ordersGET /api/orders/:id- Get single orderPUT /api/orders/:id- Update order status (Admin)
POST /api/payment/sslcommerz/init- Initialize SSLCommerz paymentPOST /api/payment/sslcommerz/success- Handle SSLCommerz successPOST /api/payment/sslcommerz/fail- Handle SSLCommerz failurePOST /api/payment/sslcommerz/cancel- Handle SSLCommerz cancellationPOST /api/payment/sslcommerz/ipn- Handle SSLCommerz IPNPOST /api/payment/stripe/create-intent- Create Stripe payment intentPOST /api/payment/stripe/webhook- Handle Stripe webhooks
GET /api/testimonials- Get all testimonialsGET /api/testimonials/:id- Get single testimonialPOST /api/testimonials- Create testimonial
- Primary:
#FF6B6B(Coral Red) - Secondary:
#4ECDC4(Turquoise) - Accent:
#FFD93D(Yellow) - Dark:
#2F3E46(Dark Blue-Gray)
- Mobile-first approach
- Fully responsive on all devices
- Optimized for high conversion rates
- Push code to GitHub
- Go to Render.com and select "Blueprint" from New+
- Connect your GitHub repo
- Select
render-compose.yamlfile - Render will automatically deploy MongoDB, Backend, and Frontend services
- Add any required environment variables (most are auto-configured)
- Push code to GitHub
- Import project to Vercel
- Add environment variables
- Deploy!
- Push code to GitHub
- Create new service
- Add environment variables
- Deploy!
See DEPLOYMENT_GUIDE_UPDATED.md for detailed Render deployment instructions.
ISC
ShopKoro Development Team
Note: Make sure MongoDB is running before starting the backend server. Use npm run seed to populate the database with sample data.