A modern e-commerce platform built with Next.js 16, showcasing handmade art pieces and premium print collections. KainKain offers a seamless shopping experience with an elegant design and smooth animations.
KainKain is a full-stack e-commerce application that features:
- Curated collections of handmade art and print artwork
- Dynamic product catalog with detailed product pages
- Shopping cart with Zustand state management
- Secure checkout with Paystack payment integration
- Responsive design optimized for all devices
- Smooth animations using Framer Motion
- MongoDB database for transaction management
- Framework: Next.js 16.0.10 (React 19)
- Styling: Tailwind CSS v4 with DaisyUI
- Animations: Framer Motion
- State Management: Zustand
- Icons: Lucide React & React Icons
- Font: Big Shoulders Display (Google Fonts)
- Database: MongoDB with Mongoose ODM
- API Routes: Next.js API Routes
- Payment: Paystack Integration
- Language: TypeScript
- Linting: ESLint
- CSS Processing: PostCSS with Autoprefixer & LightningCSS
- Package Manager: pnpm
KainKain/
βββ app/ # Next.js App Router
β βββ layout.tsx # Root layout with metadata
β βββ page.tsx # Home page
β βββ globals.css # Global styles
β βββ not-found.tsx # 404 page
β βββ about/ # About page
β βββ api/ # API routes
β β βββ transactions/ # Transaction endpoints
β βββ cart/ # Shopping cart page
β βββ checkout/ # Checkout page
β βββ collections/ # Collection pages
β β βββ hand-made/ # Handmade collection
β β βββ print-art/ # Print art collection
β βββ newProducts/ # New products page
β βββ order-success/ # Order confirmation page
β βββ products/ # Product listing & details
β βββ [slug]/ # Dynamic product page
β
βββ components/ # React components
β βββ ArtistStatement.tsx # Artist bio component
β βββ Footer.tsx # Footer component
β βββ Hero.tsx # Hero section
β βββ HomeProductCard.tsx # Product card for home
β βββ Marquee.tsx # Scrolling marquee
β βββ MotionWrapper.tsx # Animation wrapper
β βββ NavBar.tsx # Navigation bar
β βββ ProductList.tsx # Product listing
β βββ cart/ # Cart components
β βββ checkout/ # Checkout components
β βββ collections/ # Collection-specific components
β βββ products/ # Product components
β βββ ui/ # Reusable UI components
β
βββ lib/ # Utilities and configurations
β βββ database/ # Database setup
β βββ mongodb.ts # MongoDB connection
β βββ models/ # Mongoose models
β βββ Transaction.ts # Transaction schema
β
βββ store/ # State management
β βββ cartStore.ts # Zustand cart store
β
βββ public/ # Static assets
β βββ data/ # JSON product data
β β βββ combinedProducts.json
β β βββ handMadeData.json
β β βββ printArtsData.json
β β βββ productData.json
β βββ images/ # Image assets
β
βββ Configuration Files
βββ next.config.ts # Next.js configuration
βββ tailwind.config.js # Tailwind CSS config
βββ tsconfig.json # TypeScript config
βββ eslint.config.mjs # ESLint config
βββ postcss.config.mjs # PostCSS config
- Node.js 20.x or higher
- pnpm (recommended) or npm
- MongoDB database (local or Atlas)
-
Clone the repository
git clone https://github.com/adeoyetunmise/KainKain.git cd KainKain -
Install dependencies
pnpm install
-
Set up environment variables
Create a
.env.localfile in the root directory:# MongoDB MONGODB_URI=your_mongodb_connection_string # Paystack NEXT_PUBLIC_PAYSTACK_PUBLIC_KEY=your_paystack_public_key # Site URL NEXT_PUBLIC_SITE_URL=http://localhost:3000
-
Run the development server
pnpm dev
-
Open your browser
Navigate to http://localhost:3000
| Command | Description |
|---|---|
pnpm dev |
Start development server on port 3000 |
pnpm build |
Build production-ready application |
pnpm start |
Start production server |
pnpm lint |
Run ESLint to check code quality |
pnpm cleanup |
Run cleanup script |
pnpm build:fresh |
Clean and build fresh |
- Home (
/) - Hero section, featured products, and artist statement - About (
/about) - About the artist and brand - Products (
/products) - Browse all products - Product Details (
/products/[slug]) - Individual product page with related items - Collections (
/collections) - View all collections- Handmade (
/collections/hand-made) - Handcrafted pieces - Print Art (
/collections/print-art) - Premium prints
- Handmade (
- New Products (
/newProducts) - Latest additions - Cart (
/cart) - Shopping cart management - Checkout (
/checkout) - Secure checkout with Paystack - Order Success (
/order-success) - Order confirmation
- π Shopping Cart - Add, remove, and update quantities
- π³ Secure Payments - Paystack integration
- π± Responsive Design - Mobile-first approach
- β‘ Fast Performance - Optimized with Next.js 16
- π Smooth Animations - Framer Motion effects
- π SEO Optimized - Meta tags and Open Graph
- π¨ Modern UI - Tailwind CSS with DaisyUI
{
reference: string (unique),
amount: number,
status: string,
customerEmail: string,
customerName: string,
items: [{
productId: string,
name: string,
price: number,
quantity: number,
image: string
}],
createdAt: Date,
updatedAt: Date
}- CSS Framework: Tailwind CSS v4
- Component Library: DaisyUI
- Background Color:
#ece8e5(soft cream) - Typography: Big Shoulders Display font family
- Animations: Framer Motion for page transitions and interactions
- App Router enabled
- TypeScript support
- Image optimization
- API routes for backend functionality
- Custom color schemes
- DaisyUI plugin integration
- Responsive breakpoints
Uses Zustand for lightweight state management:
- Cart state (items, quantities, totals)
- Product selections
- Checkout information
pnpm buildvercelOr connect your GitHub repository to Vercel for automatic deployments.
Ensure all environment variables are set in your deployment platform:
MONGODB_URINEXT_PUBLIC_PAYSTACK_PUBLIC_KEYNEXT_PUBLIC_SITE_URL
This project is private and proprietary.
KainKain
- GitHub: @adeoyetunmise
This is a private project. For any questions or suggestions, please contact the repository owner.
Built with β€οΈ using Next.js and modern web technologies.