
An elegant, modern e-commerce storefront for men's fashion, built with Next.js 15, Sanity CMS, and Tailwind CSS 4.
๐ Live demo:ย mensty.vercel.app
/product/[slug]) with image galleries, size/color selection, and rich-text descriptions.next-themes.Layer
Technology
Framework
Next.js 15 (App Router, Turbopack)
Language
TypeScript
UI
React 19, Tailwind CSS 4, shadcn/ui, Radix UI, Lucide Icons
Animations
Framer Motion
CMS
Sanity (next-sanity + Sanity Studio)
Nodemailer (Resend & Formspree also installed)
Notifications
react-hot-toast
Deployment
Vercel
โโโ app/ # Next.js App Router (pages, API routes, layout)
โ โโโ api/send-order/ # Order submission endpoint (Nodemailer)
โ โโโ checkout/ # Checkout page
โ โโโ product/[slug]/ # Product detail page
โ โโโ products/ # Products listing page
โ โโโ components/ # Header, Footer, Cart UI, etc.
โโโ components/ui/ # shadcn/ui components
โโโ lib/ # Sanity client, GROQ queries, utilities
โโโ sanity/ # Sanity Studio (schemas: product, category, colors)
โโโ public/ # Static assets
โโโ types.ts # Shared TypeScript types
# Clone the repository
git clone https://github.com/rezk20/mensty-store.git
cd mensty-store
# Install dependencies
npm install
Create a .env.local file in the project root:
# Base URL of the site (used in order emails)
NEXT_PUBLIC_BASE_URL=http://localhost:3000
# SMTP settings for sending order emails
EMAIL_HOST=smtp.example.com
EMAIL_PORT=587
EMAIL_SECURE=false
EMAIL_USER=your@email.com
EMAIL_PASS=your-password
EMAIL_FROM=noreply@example.com
EMAIL_TO=shop@example.com
# Set to "true" to also send a confirmation email to the customer
SEND_CUSTOMER_CONFIRMATION=false
The Sanity project ID (oioxmpkn) and dataset (production) are currently configured inlib/sanity.tsandsanity/sanity.config.ts. Move them to environment variables (NEXT_PUBLIC_SANITY_PROJECT_ID,NEXT_PUBLIC_SANITY_DATASET) for production best practice.
npm run dev
Open http://localhost:3000 to view the storefront.
Run the studio locally to manage products, categories, and colors:
cd sanity
npm install
npx sanity dev
Then open http://localhost:3333.
npm run build
npm start
Command
Description
npm run dev
Start the dev server with Turbopack
npm run build
Build for production
npm start
Start the production server
npm run lint
Run ESLint
/api/send-order.Contributions are welcome! Feel free to open an issue or submit a pull request.
This project is private.