A modern, pixel-perfect e-commerce platform for premium audio equipment built with Next.js, TypeScript, Tailwind CSS, and Convex.
Audiophile is a fully functional e-commerce platform featuring a complete checkout flow, order management, and email confirmations. Built as a pixel-perfect implementation of the Figma design specifications.
- Production: [https://audioecc.netlify.app/]
- Repository: [https://github.com/Danielagboola52/audiophile.git]
- π Shopping Cart System - Add, remove, and update product quantities
- π³ Complete Checkout Flow - Fully validated multi-step checkout process
- π§ Order Confirmation Emails - Automated HTML email notifications via Resend
- πΎ Order Storage - Persistent order data stored in Convex database
- π± Fully Responsive - Optimized for mobile, tablet, and desktop
- Product catalog with categories (Headphones, Speakers, Earphones)
- Individual product detail pages
- Product recommendations
- Dynamic pricing and quantity management
- β Form validation with Zod schema
- β Type-safe database operations with Convex
- β Real-time cart updates
- β Accessible UI components
- β Error handling and edge case management
- β SEO optimized
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Form Handling: React Hook Form + Zod
- State Management: React Context API
- Database: Convex (real-time backend)
- Email Service: Resend
- API: Next.js API Routes
- ESLint
- PostCSS
- Git & GitHub
- Node.js 18+ and npm
- A Convex account (free tier available)
- A Resend account (free tier available)
- Clone the repository
git clone [your-repo-url]
cd audiophile-ecommerce- Install dependencies
npm install- Set up Convex
npx convex devThis will:
- Create a new Convex project (or link to existing)
- Generate your Convex deployment URL
- Start the Convex development server
- Configure environment variables
Create a .env.local file in the root directory:
# Convex
NEXT_PUBLIC_CONVEX_URL=your-convex-url
CONVEX_DEPLOYMENT=your-convex-deployment
# Resend (Email Service)
RESEND_API_KEY=your-resend-api-key
# Application
NEXT_PUBLIC_BASE_URL=http://localhost:3000Getting your API keys:
- Convex URL: Generated when you run
npx convex dev - Resend API Key: Sign up at resend.com and create an API key
- Run the development server
npm run dev- Open your browser Navigate to http://localhost:3000
- Push your code to GitHub
git add .
git commit -m "Initial commit"
git push origin main- Deploy Convex to Production
npx convex deploy- Primary Orange:
#D87D4A - Primary Orange Hover:
#FBAF85 - Black:
#000000 - Light Grey:
#F1F1F1 - White:
#FFFFFF - Error Red:
#CD2C2C
- Font Family: Manrope (400, 500, 700)
- Headings: H1-H6 with predefined sizes and letter spacing
- Body: 15px, line-height 25px
-
Add items to cart:
- Navigate to any product page
- Adjust quantity
- Click "Add to Cart"
-
View cart:
- Click cart icon in header
- Verify items display correctly
- Test quantity adjustments
-
Complete checkout:
- Click "Checkout" in cart
- Fill in all required fields:
- Name (min 2 characters)
- Email (valid format)
- Phone (min 10 digits)
- Address (min 5 characters)
- ZIP code, City, Country
- Select payment method
- Submit order
-
Verify order confirmation:
- Success modal should appear
- Check email for confirmation
- Order should be stored in Convex
β Empty cart checkout prevention β Invalid email format β Missing required fields β Invalid quantities (negative, zero) β Form validation errors β API error handling β Duplicate submission prevention
The confirmation email includes:
- Order ID and customer details
- Complete order summary with itemized list
- Grand total with pricing breakdown
- Next steps information
- Call-to-action button
- Support contact information
- Responsive HTML design
{
customerName: string
customerEmail: string
customerPhone: string
shippingAddress: string
zipCode: string
city: string
country: string
paymentMethod: "e-money" | "cash"
eMoneyNumber?: string
eMoneyPin?: string
items: Array<{
id: string
name: string
price: number
quantity: number
image: string
}>
subtotal: number
shipping: number
vat: number
grandTotal: number
orderStatus: string
createdAt: number
}- Uses Zod schema for type-safe validation
- Real-time inline error messages
- Conditional validation based on payment method
- Accessibility-compliant error handling
- Persistent storage using localStorage
- Context API for global state
- Real-time updates across components
- Quantity management with bounds checking
- Client-side form validation
- Data submission to Convex
- Order ID generation
- Email notification trigger
- Success confirmation display
- Cart clearance
- Product images use placeholders (actual images in assets folder)
- Email service requires Resend API key setup
- No user authentication system
- No order history tracking
- Add user authentication
- Implement order history page
- Add product search functionality
- Create admin dashboard
- Add payment gateway integration
- Implement inventory management
- Add product reviews and ratings
- Create category filtering
- Next.js Documentation
- Convex Documentation
- Tailwind CSS Documentation
- React Hook Form
- Zod Documentation
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Design inspiration from Frontend Mentor
- Icons from the project assets
- Built with β€οΈ using modern web technologies
For support, email: danielagboola52@gmail.com
Built by [Daniel Agboola] |