A modern, responsive product page for the IELTS Course by Munzereen Shahid, built with Next.js, TypeScript, and TailwindCSS.
- React/NextJS with TypeScript - Modern React with full TypeScript support
- TailwindCSS - Utility-first CSS framework for styling
- API Integration - Fetches data from 10 Minute School's discovery service
- Server-Side Rendering (SSR) - Optimized for SEO and performance
- Incremental Static Generation (ISR) - Automatic revalidation every hour
- Localization - Support for English (en) and Bengali (bn) languages
- SEO Optimization - Comprehensive metadata and structured data
- Hero Section - Course title, description, and instructor preview
- Course Trailer - YouTube video player with thumbnail gallery
- Instructors Section - Detailed instructor profiles and information
- Features Section - How the course is laid out
- Learning Outcomes - What you will learn from the course
- Exclusive Features - Course-specific features and benefits
- Course Details - Comprehensive course information
- Checklist - Course highlights with pricing (ΰ§³1,000 default)
- Testimonials - Student reviews and feedback
- FAQ Section - Frequently asked questions
- Engagement Section - Call-to-action and group features
- Responsive Design - Mobile-first approach with breakpoint optimization
- Accessibility - ARIA labels, keyboard navigation, and screen reader support
- Error Handling - Graceful error states and loading indicators
- Performance Optimization - Image optimization, code splitting, and lazy loading
- Docker Support - Simple containerized deployment
- Framework: Next.js 15.4.4 (App Router)
- Language: TypeScript 5
- Styling: TailwindCSS 4.1.11
- UI Components: Radix UI primitives
- Icons: Lucide React, React Icons
- Package Manager: pnpm
- Deployment: Docker containerization
- Node.js 18+
- pnpm (recommended) or npm
# Clone the repository
git clone <repository-url>
cd 10minuteschool
# Install dependencies
pnpm install
# Run development server
pnpm dev
# Build for production
pnpm build
# Start production server
pnpm start
The application integrates with 10 Minute School's discovery service:
# API Endpoint
GET https://api.10minuteschool.com/discovery-service/api/v1/products/ielts-course
# Query Parameters
lang=en|bn
# Headers
X-TENMS-SOURCE-PLATFORM: web
accept: application/json
curl --request GET \
--url 'https://api.10minuteschool.com/discovery-service/api/v1/products/ielts-course?lang=en' \
--header 'X-TENMS-SOURCE-PLATFORM: web' \
--header 'accept: application/json'
# Build Docker image
docker build -t 10minuteschool-ielts .
# Run container
docker run -p 3000:3000 10minuteschool-ielts
# Start with Docker Compose
docker-compose up
# Run in background
docker-compose up -d
10minuteschool/
βββ app/ # Next.js App Router
β βββ [lang]/ # Dynamic language routing
β β βββ layout.tsx # Layout with SEO metadata
β β βββ page.tsx # Main product page
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout
βββ components/ # Reusable components
β βββ ui/ # Base UI components
β βββ layout/ # Layout components
β βββ *.tsx # Feature-specific components
βββ lib/ # Utility functions
β βββ action/ # Server actions
β βββ seo.ts # SEO utilities
βββ types/ # TypeScript type definitions
βββ public/ # Static assets
βββ Dockerfile # Docker configuration
βββ docker-compose.yml # Docker Compose configuration
βββ .dockerignore # Docker build exclusions
- Hero - Main course introduction with video gallery
- Gallery - YouTube video player with thumbnail navigation
- Checklist - Course highlights and pricing
- InstructorsSection - Instructor profiles
- FeaturesSection - Course layout and features
- LearningOutcomesSection - Learning objectives
- CourseDetailsSection - Detailed course information
- ExclusiveFeaturesSection - Course-specific benefits
- TestimonialsSection - Student reviews
- FAQSection - Frequently asked questions
- EngagementSection - Call-to-action elements
- ErrorDisplay - Error handling component
- LoadingSpinner - Loading state component
- Experimental Features - Package import optimization for better performance
- Image Optimization - Configured for remote domains
- Build Optimization - TypeScript and ESLint checks disabled for faster builds
- ISR (Incremental Static Generation) - 1-hour revalidation
- Image Optimization - Next.js Image component with lazy loading
- Code Splitting - Automatic component-level code splitting
- Bundle Optimization - Tree shaking and dead code elimination
- Caching - HTTP caching headers and browser caching
- Mobile First - Optimized for mobile devices
- Breakpoints - sm (640px), md (768px), lg (1024px), xl (1280px)
- Touch Friendly - Optimized touch targets and interactions
- Progressive Enhancement - Works without JavaScript
- ARIA Labels - Proper labeling for screen readers
- Keyboard Navigation - Full keyboard accessibility
- Focus Management - Visible focus indicators
- Semantic HTML - Proper heading hierarchy and landmarks
- Color Contrast - WCAG AA compliant color combinations
- Dynamic Metadata - Server-side generated meta tags
- Structured Data - JSON-LD schema markup
- Open Graph - Social media sharing optimization
- Twitter Cards - Twitter-specific meta tags
- Canonical URLs - Proper canonical link tags
- Language Alternates - Hreflang tags for localization
# Run linting
pnpm lint
# Type checking
pnpm type-check
# Build verification
pnpm build
The application is ready for integration with:
- Google Analytics - Add GA4 tracking
- Error Monitoring - Sentry or similar services
- Performance Monitoring - Core Web Vitals tracking
- User Analytics - Heatmaps and user behavior tracking
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is part of the 10 Minute School Frontend Engineer assessment.
For technical support or questions about this implementation, please refer to the assessment guidelines or contact the development team.
Built with β€οΈ for 10 Minute School