โโโ โโโ โโโโโโโ โโโโโโโ โโโโโโโโ โโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโ โโโโโโ โโโโโโโโโ โโโโโโโโโโโ โโโโโโ โโโโโโโโโ โโโ โโโโโโโโโโโโโโโโโโโโโโโโ โโโ โโโ โโโโโโโ โโโโโโโ โโโ
HOOF is a modern full-stack ecommerce platform built for footwear lovers.
Browse, discover, and shop the latest shoes โ fast, beautiful, and secure. ๐โจ
โจ Features โข ๐ ๏ธ Tech Stack โข โ๏ธ Installation โข ๐ธ Screenshots โข ๐ค Contributing
- ๐ About the Project
- โจ Features
- ๐ ๏ธ Tech Stack
- ๐ Project Structure
- โ๏ธ Installation & Setup
- ๐ Environment Variables
- ๐ธ Screenshots
- ๐ค Contributing
- ๐ License
- ๐จโ๐ป Author
HOOF is a sleek, fully-responsive ecommerce website dedicated to footwear. Whether you're hunting for sneakers, formal shoes, or everyday casuals โ HOOF has you covered. Powered by a robust Node.js + Express backend with EJS server-side rendering, Passport.js authentication, OTP verification, Wallet system, Referral codes, and a MongoDB database โ it delivers a premium shopping experience from browsing to checkout.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โ ๐ Home โ ๐ Shop โ ๐ Cart โ ๐ณ Checkout โ ๐ฆ Orders โ
โ โ
โ Fast โข Secure โข Beautiful โข Scalable โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ CORE FEATURES โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฃ
โ ๐ User Auth โ Register, Login, Google OAuth (Passport.js) โ
โ ๐ฑ OTP Verification via Email โ
โ ๐ Product Catalog with Filters, Search & Categories โ
โ ๐ Shopping Cart โ Add, Remove & Update Quantities โ
โ โค๏ธ Wishlist โ Save Favourite Products โ
โ ๐ณ Secure Payment Gateway Integration โ
โ ๐ฆ Order Management โ Place, Track & View History โ
โ ๐ฐ Wallet System โ Refunds & Balance Management โ
โ ๐๏ธ Coupon Management โ Discounts & Promo Codes โ
โ ๐ Referral Code System โ
โ ๐บ๏ธ Address Management โ Multiple Delivery Addresses โ
โ ๐ก๏ธ Admin Dashboard โ Products, Orders, Users, Categories โ
โ ๐งญ Breadcrumb Navigation โ
โ ๐ง Email Notifications & Password Reset โ
โ ๐ฑ Fully Responsive UI (Mobile-First) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- โ User Auth โ Register, Login, Google OAuth via Passport.js
- โ OTP Verification โ Email-based OTP on signup & password reset
- โ Product Catalog โ Filter by category, search, sort & paginate
- โ Shopping Cart โ Add, remove, update quantities in real-time
- โ Wishlist โ Save products for later with one click
- โ Payment Gateway โ Safe and seamless online payments
- โ Order Management โ Track status, view history, order details
- โ Wallet System โ Refunds credited to wallet, spend on orders
- โ Coupons & Discounts โ Admin-created promo codes at checkout
- โ Referral System โ Earn rewards by referring friends
- โ Address Book โ Multiple saved addresses per user
- โ Admin Dashboard โ Full CRUD: products, categories, orders, users
- โ Server-Side Rendering โ Fast page loads with EJS + layouts
- โ Responsive Design โ Polished UI on any screen size
| Layer | Technology |
|---|---|
| ๐จ Frontend | EJS, CSS3, Vanilla JavaScript |
| โ๏ธ Backend | Node.js, Express.js |
| ๐๏ธ Database | MongoDB, Mongoose ODM |
| ๐ Auth | Passport.js (Local + Google OAuth), bcrypt, Express Session |
| ๐ง Email / OTP | Nodemailer |
| ๐ผ๏ธ File Uploads | Multer |
| ๐ณ Payments | Razorpay |
| ๐ง Dev Tools | Nodemon, Git, Postman, VS Code |
๐ BROWSER
โ
โ HTTP Request (GET / POST)
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ๏ธ EXPRESS.JS SERVER โ
โ โ
โ Routes โ Middleware โ Controllers โ
โ โ โ
โ Services / Utils โ
โ โ โ
โ EJS Views (SSR) โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ Mongoose ODM
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐๏ธ MONGODB โ
โ Users | Products | Orders | Cart โ
โ Wishlist | Wallet | Coupons | OTP โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
HOOF/
โ
โโโ ๐ app.js # Express app entry point
โโโ ๐ backfillReferralCodes.js # Utility: backfill referral codes
โโโ ๐ package.json
โ
โโโ ๐ config/
โ โโโ ๐ db.js # MongoDB connection
โ โโโ ๐ passport.js # Passport.js strategies (Local + Google)
โ
โโโ ๐ controller/
โ โโโ ๐ Address.js # Address CRUD for users
โ โโโ ๐ Admin.js # Admin dashboard & user management
โ โโโ ๐ AdminCoupon.js # Admin coupon management
โ โโโ ๐ AdminProduct.js # Admin product management
โ โโโ ๐ Coupon.js # User coupon application
โ โโโ ๐ Product.js # Product listing & details
โ โโโ ๐ User.js # User profile, auth, OTP
โ โโโ ๐ UserCheckout.js # Checkout & order placement
โ
โโโ ๐ middleware/
โ โโโ ๐ adminAuth.js # Admin route protection
โ โโโ ๐ auth.js # User route protection
โ โโโ ๐ breadcrumb.js # Breadcrumb navigation builder
โ โโโ ๐ cartCount.js # Inject cart count into views
โ โโโ ๐ multer.js # Profile image upload config
โ โโโ ๐ productMulter.js # Product image upload config
โ โโโ ๐ wishlistCount.js # Inject wishlist count into views
โ
โโโ ๐ model/
โ โโโ ๐ Address.js # Address schema
โ โโโ ๐ Admin.js # Admin schema
โ โโโ ๐ Cart.js # Cart schema
โ โโโ ๐ Category.js # Category schema
โ โโโ ๐ Coupon.js # Coupon schema
โ โโโ ๐ Order.js # Order schema
โ โโโ ๐ Otp.js # OTP schema
โ โโโ ๐ Product.js # Product schema
โ โโโ ๐ Review.js # Review & rating schema
โ โโโ ๐ User.js # User schema
โ โโโ ๐ Wallet.js # Wallet schema
โ โโโ ๐ Wishlist.js # Wishlist schema
โ
โโโ ๐ routes/
โ โโโ ๐ Address.js # /address/*
โ โโโ ๐ Admin.js # /admin/*
โ โโโ ๐ Auth.js # /login, /register, /logout
โ โโโ ๐ User.js # /shop, /cart, /orders, etc.
โ
โโโ ๐ services/
โ โโโ ๐ AdminProduct.js # Admin product business logic
โ โโโ ๐ Auth.js # Auth service (OTP, sessions)
โ โโโ ๐ Password.js # Password reset logic
โ โโโ ๐ Product.js # Product filtering & search
โ โโโ ๐ User.js # User profile logic
โ โโโ ๐ UserCheckout.js # Checkout business logic
โ โโโ ๐ Wallet.js # Wallet debit/credit logic
โ
โโโ ๐ utils/
โ โโโ ๐ generateOtp.js # OTP generator
โ โโโ ๐ sendEmail.js # Nodemailer email sender
โ
โโโ ๐ public/
โ โโโ ๐ admin/
โ โ โโโ ๐ css/ # Admin stylesheets
โ โ โโโ ๐ js/ # Admin client-side scripts
โ โโโ ๐ user/
โ โ โโโ ๐ css/ # User stylesheets
โ โ โโโ ๐ js/ # User client-side scripts
โ โ โโโ ๐ fonts/ # Custom fonts
โ โ โโโ ๐ images/ # Static UI images
โ โโโ ๐ uploads/
โ โโโ ๐ products/ # Uploaded product images
โ โโโ ๐ profile/ # Uploaded user profile pictures
โ
โโโ ๐ views/
โโโ ๐ Admin/
โ โโโ ๐ admin-dashboard.ejs
โ โโโ ๐ product-management.ejs
โ โโโ ๐ add-product.ejs
โ โโโ ๐ edit-product.ejs
โ โโโ ๐ category-management.ejs
โ โโโ ๐ coupon-management.ejs
โ โโโ ๐ admin-orders.ejs
โ โโโ ๐ admin-order-detail.ejs
โ โโโ ๐ user-management.ejs
โ โโโ ๐ auth/
โ โโโ ๐ login.ejs
โโโ ๐ User/
โ โโโ ๐ landing.ejs
โ โโโ ๐ home.ejs
โ โโโ ๐ shop.ejs
โ โโโ ๐ product-details.ejs
โ โโโ ๐ cart.ejs
โ โโโ ๐ checkout.ejs
โ โโโ ๐ wishlist.ejs
โ โโโ ๐ orders.ejs
โ โโโ ๐ order-detail.ejs
โ โโโ ๐ order-success.ejs
โ โโโ ๐ wallet.ejs
โ โโโ ๐ referral.ejs
โ โโโ ๐ user-profile.ejs
โ โโโ ๐ user-address.ejs
โ โโโ ๐ change-email.ejs
โ โโโ ๐ about.ejs
โ โโโ ๐ contact.ejs
โ โโโ ๐ 404.ejs
โ โโโ ๐ auth/
โ โโโ ๐ login.ejs
โ โโโ ๐ register.ejs
โ โโโ ๐ verify-otp.ejs
โ โโโ ๐ forgot-password.ejs
โ โโโ ๐ reset-password.ejs
โโโ ๐ layouts/
โ โโโ ๐ admin.ejs # Admin layout wrapper
โ โโโ ๐ user.ejs # User layout wrapper
โโโ ๐ partials/
โโโ ๐ admin/
โ โโโ ๐ overlay.ejs
โ โโโ ๐ overlay-scripts.ejs
โโโ ๐ user/
โโโ ๐ head.ejs
โโโ ๐ header.ejs
โโโ ๐ footer.ejs
Make sure you have the following installed:
- ๐ข Node.js v16+
- ๐ MongoDB (local or MongoDB Atlas)
- ๐ง Git
- ๐ฆ npm
git clone https://github.com/rabeeh-dev/HOOF.git
cd HOOFnpm installcp .env.example .envFill in your values in the .env file (see section below).
# Development mode (auto-restart with nodemon)
npm run dev
# Production mode
npm start๐ App runs on:
http://localhost:3000
- Register / seed an admin document in MongoDB
- Visit
http://localhost:3000/admin
Create a .env file in the root directory:
# โโโ Server โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
PORT=3000
NODE_ENV=development
# โโโ Database โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
MONGO_URI=mongodb://localhost:27017/hoofdb
# OR MongoDB Atlas:
# MONGO_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/hoofdb
# โโโ Session โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
SESSION_SECRET=your_super_secret_session_key
# โโโ Google OAuth (Passport.js) โโโโโโโโโโโโโโโโโ
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_CALLBACK_URL=http://localhost:3000/auth/google/callback
# โโโ Email / OTP โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_email_app_password
# โโโ Payment Gateway โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
RAZORPAY_KEY_ID=your_razorpay_key_id
RAZORPAY_KEY_SECRET=your_razorpay_key_secret
โ ๏ธ Never commit your.envfile! It's already covered by.gitignore.
| ๐ Home Page | ๐ Shop |
|---|---|
| Screenshot coming soon | Screenshot coming soon |
| ๐ Shopping Cart | ๐ก๏ธ Admin Dashboard |
|---|---|
| Screenshot coming soon | Screenshot coming soon |
| ๐ฐ Wallet | ๐๏ธ Coupons |
|---|---|
| Screenshot coming soon | Screenshot coming soon |
Contributions are always welcome! ๐
# 1. Fork the repository on GitHub
# 2. Clone your fork
git clone https://github.com/your-username/HOOF.git
# 3. Create a feature branch
git checkout -b feature/AmazingFeature
# 4. Commit your changes
git commit -m "โจ Add some AmazingFeature"
# 5. Push to your branch
git push origin feature/AmazingFeature
# 6. Open a Pull Request ๐Open an issue and include:
- ๐ A clear description of the problem
- ๐ Steps to reproduce it
- ๐ธ Screenshots if applicable
This project is licensed under the MIT License โ see the LICENSE file for details.
MIT License โ Free to use, modify & distribute with attribution.