A modern, full-featured e-learning platform built with Next.js 16, React 19, and Firebase. This platform offers structured courses, interactive quizzes, article publishing, community features, and a comprehensive learning management system (LMS).
- Features
- Technology Stack
- Project Structure
- Components
- Pages & Routes
- Services & Utilities
- Getting Started
- Environment Variables
- Configuration Files
- Firebase Authentication: Seamless login via Email/Password and Google Sign-In
- Zest ID System: Unique user identifiers (e.g.,
ZU0005) auto-generated for each user - Smart Onboarding: Welcome flow showcasing new Zest ID with feature spotlights
- Profile Management: Edit bio, social links, and display Zest ID
- Structured Courses: Multi-module courses with organized lessons (Python, IoT, JavaScript, etc.)
- Course Enrollment: Track user enrollments and learning progress
- Interactive Lessons: Rich content with code editors, videos, and text
- Quiz System: Multiple-choice quizzes with explanations and instant feedback
- Progress Tracking: Visual progress indicators and completion tracking
- Resume Learning: Continue from where you left off
- Monaco Code Editor: In-browser code editing with syntax highlighting
- Tech News: Real-time technology news updates (via NewsAPI)
- Job Board: Integrated job search for developers (via JSearch/RapidAPI)
- Article Publishing: Educational blog system with 11+ articles
- Community Topics: Discussion forums for various tech topics
- Comments System: Discussion threads on courses and articles
- Developer Profiles: Showcase mentors and instructors
- Dark Mode: Theme switching with next-themes
- PWA Support: Offline-first progressive web app capabilities
- Push Notifications: Firebase Cloud Messaging for updates
- Responsive Design: Mobile-first with TailwindCSS
- Animations: Smooth transitions and micro-interactions
- Reading Progress: Article reading progress bar
- XP & Gamification: Experience points and achievement animations
- Instant Search: Fast search across courses and content
- AI Chatbot: Interactive chatbot for user assistance
- Admin Dashboard: Content management interface
- UI Demo: Component showcase for testing
- SEO Optimization: JSON-LD structured data, meta tags
- Analytics: Firebase Analytics integration
- Ad Integration: AdUnit component for monetization
| Technology | Version | Purpose |
|---|---|---|
| Next.js | 16.1.0 | React framework with App Router |
| React | 19.2.3 | UI library |
| React DOM | 19.2.3 | React rendering |
| TypeScript | 5.9.3 | Type-safe JavaScript |
| Technology | Version | Purpose |
|---|---|---|
| TailwindCSS | v4 | Utility-first CSS framework |
| PostCSS | 4 | CSS processing |
| Radix UI | Various | Accessible component primitives |
| shadcn/ui | 3.6.2 | Pre-built component library |
| Lucide React | 0.562.0 | Icon library |
| next-themes | 0.4.6 | Dark mode support |
| class-variance-authority | 0.7.1 | Component variants |
| tailwind-merge | 3.4.0 | Merge Tailwind classes |
| clsx | 2.1.1 | Conditional classes |
| Technology | Version | Purpose |
|---|---|---|
| Firebase | 12.7.0 | Backend platform |
| Firebase Admin | 13.6.0 | Server-side Firebase SDK |
| Firestore | - | NoSQL database |
| Firebase Auth | - | User authentication |
| Firebase Analytics | - | User analytics |
| Firebase Messaging | - | Push notifications |
| Technology | Version | Purpose |
|---|---|---|
| Monaco Editor | 4.7.0 | In-browser code editor |
| sql.js | 1.13.0 | SQL database in browser |
| Axios | 1.13.2 | HTTP client |
| react-share | 5.2.2 | Social sharing buttons |
| Next PWA | 10.2.9 | Progressive Web App support |
| Technology | Version | Purpose |
|---|---|---|
| ESLint | 9 | Code linting |
| Babel React Compiler | 1.0.0 | React optimization |
/home/runner/work/website/website/
βββ π app/ # Next.js App Router (Pages & Routes)
β βββ π (auth)/ # Auth pages group
β β βββ forgot-password/ # Password recovery
β β βββ login/ # Login page
β β βββ register/ # Registration page
β βββ π about-us/ # About page
β βββ π admin/ # Admin dashboard
β βββ π api/ # API routes
β β βββ auth/ # Auth API endpoints
β β βββ compile/ # Code compilation (JDoodle)
β β βββ jobs/ # Job search API
β β βββ news/ # News API integration
β βββ π articles/ # Educational articles (11 articles)
β β βββ ai-tools-guide/
β β βββ comprehensive-guide-to-ai/
β β βββ digital-electronics-interview-questions/
β β βββ electronics-to-embedded-mastery/
β β βββ how-to-become-an-entrepreneur/
β β βββ microhabits-that-can-change-your-life/
β β βββ placement-interview-questions/
β β βββ resistor-guide/
β β βββ what-is-api/
β β βββ what-is-quantum-computing/
β βββ π categories/ # Course categories
β βββ π community/ # Community hub
β β βββ [topicId]/ # Topic-specific discussions
β βββ π contact/ # Contact form
β βββ π cookie-policy/ # Cookie policy
β βββ π courses/ # Course pages
β β βββ [courseId]/
β β βββ page.tsx # Course details
β β βββ learn/
β β βββ [lessonId]/ # Individual lessons
β βββ π developers/ # Developer profiles
β β βββ [developerId]/
β βββ π explore/ # Explore/discovery page
β βββ π my-learning/ # User dashboard
β βββ π onboarding/ # User onboarding flow
β βββ π privacy-policy/ # Privacy policy
β βββ π terms-conditions/ # Terms & conditions
β βββ π ui-demo/ # UI component showcase
β βββ layout.tsx # Root layout
β βββ page.tsx # Home page
β βββ robots.ts # robots.txt generator
β βββ sitemap.ts # Sitemap generator
β βββ not-found.tsx # 404 page
βββ π components/ # React Components (60+ components)
β βββ π articles/ # Article components
β β βββ ArticleFooter.tsx
β β βββ ArticleHeader.tsx
β β βββ DownloadPDF.tsx
β β βββ ShareButtons.tsx
β βββ π community/ # Community components
β β βββ JobsSection.tsx
β β βββ NewsSection.tsx
β βββ π courses/ # Course components
β β βββ AllCourses.tsx
β β βββ CourseCard.tsx
β β βββ CourseHero.tsx
β β βββ CourseLanding.tsx
β β βββ LessonUI.tsx
β β βββ ResumeLearning.tsx
β β βββ SidebarClient.tsx
β βββ π explore/ # Explore page components
β β βββ CategoryGrid.tsx
β β βββ ExploreHero.tsx
β β βββ FeaturedArticles.tsx
β β βββ TrendingCourses.tsx
β βββ π home/ # Home page sections
β β βββ CategoriesSection.tsx
β β βββ CoursesSection.tsx
β β βββ ExploreSection.tsx
β β βββ FeaturedCoursesSection.tsx
β β βββ HeroSection.tsx
β β βββ HowItWorksSection.tsx
β β βββ StructuredCoursesSection.tsx
β βββ π layout/ # Layout components
β β βββ Footer.tsx
β β βββ Navbar.tsx
β β βββ NotificationToggle.tsx
β β βββ UserProfile.tsx
β βββ π ui/ # UI primitives (20+ components)
β β βββ accordion.tsx
β β βββ animated-counter.tsx
β β βββ avatar.tsx
β β βββ badge.tsx
β β βββ button.tsx
β β βββ card.tsx
β β βββ celebration-effect.tsx
β β βββ circular-progress.tsx
β β βββ dialog.tsx
β β βββ dropdown-menu.tsx
β β βββ feature-spotlight.tsx
β β βββ input.tsx
β β βββ instant-search.tsx
β β βββ label.tsx
β β βββ onboarding-flow.tsx
β β βββ progress.tsx
β β βββ reading-progress-bar.tsx
β β βββ scroll-area.tsx
β β βββ select.tsx
β β βββ separator.tsx
β β βββ sheet.tsx
β β βββ table.tsx
β β βββ tabs.tsx
β β βββ textarea.tsx
β β βββ toast-provider.tsx
β β βββ tooltip.tsx
β β βββ xp-gain-animation.tsx
β βββ AdUnit.tsx # Advertisement component
β βββ AIChatbot.tsx # AI chatbot interface
β βββ CommentsSection.tsx # Comments/discussions
β βββ JsonLd.tsx # SEO structured data
β βββ Leaderboard.tsx # Gamification leaderboard
β βββ QuizSection.tsx # Quiz component
β βββ ThemeProvider.tsx # Theme context provider
βββ π hooks/ # Custom React Hooks
β βββ useAnimatedCounter.ts # Animated number counter
β βββ useAuth.ts # Firebase authentication
β βββ useFcmToken.ts # FCM token management
β βββ useScrollProgress.ts # Scroll progress tracking
βββ π lib/ # Utilities & Configuration
β βββ π hooks/ # Additional hooks
β β βββ useCourseProgress.ts # Course progress
β β βββ useQuiz.ts # Quiz logic
β β βββ useUserEnrollments.ts # User enrollments
β βββ animations.ts # Animation configurations
β βββ courses.ts # Course utilities
β βββ developers-data.ts # Developer profiles data
β βββ firebase-admin.ts # Firebase Admin SDK
β βββ firebase.ts # Firebase client config
β βββ lms-data.ts # Complete LMS course data
β βββ utils.ts # Utility functions
βββ π services/ # Business Logic Services
β βββ lms-service.ts # LMS operations
βββ π types/ # TypeScript Definitions
β βββ course.ts # Course types
β βββ developer.ts # Developer types
β βββ user.ts # User types
βββ π functions/ # Firebase Cloud Functions
β βββ src/
β β βββ index.ts # Cloud functions entry
β βββ package.json
β βββ tsconfig.json
βββ π public/ # Static Assets
β βββ π icons/ # PWA icons
β βββ π images/ # Images
β βββ auth-hero-desktop-hq.jpg
β βββ favicon.ico
β βββ logo.png
β βββ manifest.json # PWA manifest
β βββ sw.js # Service worker
βββ .gitignore # Git ignore rules
βββ components.json # shadcn/ui config
βββ eslint.config.mjs # ESLint configuration
βββ firebase.json # Firebase config
βββ firestore.rules # Firestore security rules
βββ next.config.ts # Next.js configuration
βββ package.json # Dependencies
βββ postcss.config.mjs # PostCSS config
βββ tsconfig.json # TypeScript config
βββ CODE_OF_CONDUCT.md # Code of conduct
βββ LICENSE # MIT License
βββ README.md # This file
βββ SECURITY.md # Security policy
- Navbar.tsx - Navigation bar with theme toggle, search, user profile
- Footer.tsx - Footer with links and social media
- UserProfile.tsx - User profile dropdown menu
- NotificationToggle.tsx - Notification settings toggle
- CourseCard.tsx - Individual course card display
- CourseHero.tsx - Course hero/banner section
- CourseLanding.tsx - Course landing page layout
- AllCourses.tsx - All courses listing page
- LessonUI.tsx - Lesson display interface with content
- ResumeLearning.tsx - Resume course button
- SidebarClient.tsx - Course navigation sidebar
- HeroSection.tsx - Landing page hero with animated quotes
- FeaturedCoursesSection.tsx - Featured courses carousel
- CategoriesSection.tsx - Course categories grid
- HowItWorksSection.tsx - How it works section
- CoursesSection.tsx - Courses overview
- ExploreSection.tsx - Explore CTA section
- StructuredCoursesSection.tsx - Structured learning path
- ExploreHero.tsx - Explore page hero
- TrendingCourses.tsx - Trending courses display
- FeaturedArticles.tsx - Featured articles grid
- CategoryGrid.tsx - Category browsing grid
- NewsSection.tsx - Tech news display
- JobsSection.tsx - Job listings display
- ArticleHeader.tsx - Article header with metadata
- ArticleFooter.tsx - Article footer with CTA
- ShareButtons.tsx - Social share buttons
- DownloadPDF.tsx - PDF download functionality
Core Input/Display:
- button.tsx, input.tsx, textarea.tsx, label.tsx
- card.tsx, badge.tsx, avatar.tsx
- select.tsx, dropdown-menu.tsx
Feedback & Progress:
- progress.tsx, circular-progress.tsx
- toast-provider.tsx, tooltip.tsx
Navigation & Overlays:
- dialog.tsx, sheet.tsx, tabs.tsx
- accordion.tsx, scroll-area.tsx
Interactive Features:
- instant-search.tsx, animated-counter.tsx
- xp-gain-animation.tsx, celebration-effect.tsx
- reading-progress-bar.tsx
Onboarding:
- onboarding-flow.tsx, feature-spotlight.tsx
Other:
- table.tsx, separator.tsx
- QuizSection.tsx - Interactive quiz component
- Leaderboard.tsx - User rankings and leaderboard
- AIChatbot.tsx - AI-powered chatbot
- CommentsSection.tsx - Comments and discussions
- JsonLd.tsx - SEO structured data
- AdUnit.tsx - Advertisement integration
- ThemeProvider.tsx - Theme management
/login- User login page/register- New user registration/forgot-password- Password recovery/onboarding- New user onboarding flow
/courses- All courses listing/courses/[courseId]- Course details page/courses/[courseId]/learn- Course learning interface/courses/[courseId]/learn/[lessonId]- Individual lesson viewer/my-learning- User's enrolled courses dashboard
/explore- Explore page with trending content/categories- Browse course categories/community- Community hub/community/[topicId]- Topic-specific discussions
/articles/ai-tools-guide/articles/what-is-api/articles/comprehensive-guide-to-ai/articles/digital-electronics-interview-questions/articles/electronics-to-embedded-mastery/articles/resistor-guide/articles/what-is-quantum-computing/articles/placement-interview-questions/articles/how-to-become-an-entrepreneur/articles/microhabits-that-can-change-your-life
/about-us- About the platform/contact- Contact form/privacy-policy- Privacy policy/terms-conditions- Terms and conditions/cookie-policy- Cookie policy
/- Home/landing page/developers- Developer profiles listing/developers/[developerId]- Individual developer profile/admin- Admin dashboard/ui-demo- UI component showcase
/sitemap.xml- XML sitemap/robots.txt- Robots.txt file/404- Custom 404 page
- lms-service.ts - LMS operations (get courses, lessons, progress tracking)
Root Hooks:
- useAuth.ts - Firebase authentication state management
- useAnimatedCounter.ts - Animated number counter hook
- useFcmToken.ts - Firebase Cloud Messaging token management
- useScrollProgress.ts - Page scroll progress tracking
Lib Hooks:
- useUserEnrollments.ts - User course enrollment management
- useCourseProgress.ts - Course progress tracking and updates
- useQuiz.ts - Quiz state and logic management
- lib/utils.ts - Utility functions (cn for className merging)
- lib/animations.ts - Animation configurations
- lib/courses.ts - Course data and helper functions
- lib/developers-data.ts - Developer profiles dataset
- lib/lms-data.ts - Complete LMS course data (Python, IoT, JavaScript, C, etc.)
- lib/firebase.ts - Firebase SDK initialization (Auth, Firestore, Messaging, Analytics)
- lib/firebase-admin.ts - Firebase Admin SDK for server-side operations
- types/course.ts - Course, Module, Lesson, Quiz types
- types/developer.ts - Developer profile types
- types/user.ts - User profile and progress types
- Node.js 20.x or higher
- npm or yarn
- Firebase project with Firestore, Authentication, and Messaging enabled
- Clone the repository
git clone https://github.com/zestacademy/website.git
cd website- Install dependencies
npm install-
Set up environment variables Create a
.env.localfile in the root directory (see Environment Variables) -
Run the development server
npm run dev- Open the application Navigate to http://localhost:3000
npm run dev # Start development server (Webpack mode)
npm run build # Build for production
npm start # Start production server
npm run lint # Run ESLintCreate a .env.local file in the root directory with the following variables:
# Firebase Admin SDK (Server-side)
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_CLIENT_EMAIL=your-service-account@your-project.iam.gserviceaccount.com
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
# Firebase Client Config (Public - exposed to browser)
NEXT_PUBLIC_FIREBASE_API_KEY=your-api-key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your-project-id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your-project.firebasestorage.app
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your-sender-id
NEXT_PUBLIC_FIREBASE_APP_ID=your-app-id
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=your-measurement-id
NEXT_PUBLIC_FIREBASE_DATABASE_URL=https://your-project.firebaseio.com
# News API (Get from newsapi.org)
NEXT_PUBLIC_NEWS_API_KEY=your-news-api-key
# RapidAPI (Get from rapidapi.com for JSearch)
RAPIDAPI_KEY=your-rapidapi-key
RAPIDAPI_HOST=jsearch.p.rapidapi.com
# JDoodle API (For code compilation features)
NEXT_PUBLIC_JDOODLE_CLIENT_ID=your-jdoodle-client-id
NEXT_PUBLIC_JDOODLE_CLIENT_SECRET=your-jdoodle-client-secretFirebase:
- Go to Firebase Console
- Create a new project or select existing
- Enable Authentication, Firestore, Realtime Database, and Cloud Messaging
- Get client config from Project Settings > General
- Get Admin SDK credentials from Project Settings > Service Accounts
NewsAPI:
- Sign up at newsapi.org
- Copy your API key from the dashboard
RapidAPI (JSearch):
- Sign up at rapidapi.com
- Subscribe to JSearch API
- Copy your API key
JDoodle:
- Sign up at jdoodle.com
- Get your Client ID and Secret from the API section
Next.js configuration with:
- PWA support (@ducanh2912/next-pwa)
- Image optimization
- React compiler optimization
- Turbopack for fast development
- Webpack fallback for builds
TypeScript configuration with:
- Path alias
@/*for imports - Strict mode enabled
- Modern ES2020 target
shadcn/ui configuration:
- Component style: New York
- Base color: Neutral
- CSS variables for theming
- Tailwind utilities
TailwindCSS v4 configuration with custom theme
Firebase hosting and functions configuration
Security rules for Firestore database
ESLint configuration for code quality
{
"next": "16.1.0",
"react": "19.2.3",
"firebase": "12.7.0",
"@monaco-editor/react": "4.7.0",
"@radix-ui/*": "Various",
"tailwindcss": "4",
"lucide-react": "0.562.0",
"axios": "1.13.2"
}{
"typescript": "5.9.3",
"eslint": "9",
"shadcn": "3.6.2",
"babel-plugin-react-compiler": "1.0.0"
}The platform includes complete structured courses:
- Python Programming - Beginner to advanced Python
- IoT (Internet of Things) - Hardware and software integration
- JavaScript - Modern JavaScript and ES6+
- C Programming - Systems programming fundamentals
- And more - Check
lib/lms-data.tsfor complete list
users- User profiles and metadatacourses- Course informationenrollments- User course enrollmentsprogress- Learning progress trackingcomments- Discussion threadsnotifications- User notifications
- Authentication - Email/Password, Google OAuth
- Firestore - NoSQL database with offline persistence
- Realtime Database - Real-time data synchronization
- Cloud Messaging - Push notifications
- Analytics - User behavior tracking
- Hosting - Web app deployment
- Cloud Functions - Serverless backend (in
/functions)
- Firestore security rules configured in
firestore.rules - Environment variables for sensitive data
- Firebase Admin SDK for secure server-side operations
- Authentication required for protected routes
- See
SECURITY.mdfor security policy
This project is licensed under the MIT License - see the LICENSE file for details.
Please read CODE_OF_CONDUCT.md for details on our code of conduct.
For support, contact the development team or open an issue on GitHub.
Zest Academy - Empowering learners with quality education π