Skip to content

zestacademy/website

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

236 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ“ Zest Academy - E-Learning Platform

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).

πŸ“‘ Table of Contents

✨ Features

πŸ” Authentication & Identity

  • 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

πŸ“š Learning Management System (LMS)

  • 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

🌐 Community & Content

  • 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

🎨 User Experience

  • 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 & Tools

  • 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 Stack

Frontend Framework

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

Styling & UI

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

Backend & Database

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

Developer Tools

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

Development Tools

Technology Version Purpose
ESLint 9 Code linting
Babel React Compiler 1.0.0 React optimization

πŸ—οΈ Project Structure

/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

🧩 Components

Layout Components (4)

  • 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

Course Components (7)

  • 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

Home Page Components (7)

  • 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

Explore Page Components (4)

  • ExploreHero.tsx - Explore page hero
  • TrendingCourses.tsx - Trending courses display
  • FeaturedArticles.tsx - Featured articles grid
  • CategoryGrid.tsx - Category browsing grid

Community Components (2)

  • NewsSection.tsx - Tech news display
  • JobsSection.tsx - Job listings display

Article Components (4)

  • ArticleHeader.tsx - Article header with metadata
  • ArticleFooter.tsx - Article footer with CTA
  • ShareButtons.tsx - Social share buttons
  • DownloadPDF.tsx - PDF download functionality

UI Components (25+)

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

Feature Components (5)

  • 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

πŸ—ΊοΈ Pages & Routes

Authentication (4 routes)

  • /login - User login page
  • /register - New user registration
  • /forgot-password - Password recovery
  • /onboarding - New user onboarding flow

Learning (5 routes)

  • /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

Discovery (3 routes)

  • /explore - Explore page with trending content
  • /categories - Browse course categories
  • /community - Community hub
  • /community/[topicId] - Topic-specific discussions

Articles (11 routes)

  • /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

Informational (5 routes)

  • /about-us - About the platform
  • /contact - Contact form
  • /privacy-policy - Privacy policy
  • /terms-conditions - Terms and conditions
  • /cookie-policy - Cookie policy

Other (5 routes)

  • / - Home/landing page
  • /developers - Developer profiles listing
  • /developers/[developerId] - Individual developer profile
  • /admin - Admin dashboard
  • /ui-demo - UI component showcase

Generated Routes (3)

  • /sitemap.xml - XML sitemap
  • /robots.txt - Robots.txt file
  • /404 - Custom 404 page

πŸ”§ Services & Utilities

Services

  • lms-service.ts - LMS operations (get courses, lessons, progress tracking)

Custom Hooks

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

Utilities

  • 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

Type Definitions

  • types/course.ts - Course, Module, Lesson, Quiz types
  • types/developer.ts - Developer profile types
  • types/user.ts - User profile and progress types

πŸš€ Getting Started

Prerequisites

  • Node.js 20.x or higher
  • npm or yarn
  • Firebase project with Firestore, Authentication, and Messaging enabled

Installation

  1. Clone the repository
git clone https://github.com/zestacademy/website.git
cd website
  1. Install dependencies
npm install
  1. Set up environment variables Create a .env.local file in the root directory (see Environment Variables)

  2. Run the development server

npm run dev
  1. Open the application Navigate to http://localhost:3000

Available Scripts

npm run dev      # Start development server (Webpack mode)
npm run build    # Build for production
npm start        # Start production server
npm run lint     # Run ESLint

πŸ”‘ Environment Variables

Create 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-secret

How to Get API Keys

Firebase:

  1. Go to Firebase Console
  2. Create a new project or select existing
  3. Enable Authentication, Firestore, Realtime Database, and Cloud Messaging
  4. Get client config from Project Settings > General
  5. Get Admin SDK credentials from Project Settings > Service Accounts

NewsAPI:

  1. Sign up at newsapi.org
  2. Copy your API key from the dashboard

RapidAPI (JSearch):

  1. Sign up at rapidapi.com
  2. Subscribe to JSearch API
  3. Copy your API key

JDoodle:

  1. Sign up at jdoodle.com
  2. Get your Client ID and Secret from the API section

βš™οΈ Configuration Files

next.config.ts

Next.js configuration with:

  • PWA support (@ducanh2912/next-pwa)
  • Image optimization
  • React compiler optimization
  • Turbopack for fast development
  • Webpack fallback for builds

tsconfig.json

TypeScript configuration with:

  • Path alias @/* for imports
  • Strict mode enabled
  • Modern ES2020 target

components.json

shadcn/ui configuration:

  • Component style: New York
  • Base color: Neutral
  • CSS variables for theming
  • Tailwind utilities

tailwind.config.ts

TailwindCSS v4 configuration with custom theme

firebase.json

Firebase hosting and functions configuration

firestore.rules

Security rules for Firestore database

eslint.config.mjs

ESLint configuration for code quality

πŸ“¦ Key Dependencies

Production

{
  "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"
}

Development

{
  "typescript": "5.9.3",
  "eslint": "9",
  "shadcn": "3.6.2",
  "babel-plugin-react-compiler": "1.0.0"
}

🎯 Core Features Breakdown

LMS Courses Available

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.ts for complete list

Firestore Collections

  • users - User profiles and metadata
  • courses - Course information
  • enrollments - User course enrollments
  • progress - Learning progress tracking
  • comments - Discussion threads
  • notifications - User notifications

Firebase Features Used

  • 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)

πŸ”’ Security

  • 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.md for security policy

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

🀝 Contributing

Please read CODE_OF_CONDUCT.md for details on our code of conduct.

πŸ“ž Support

For support, contact the development team or open an issue on GitHub.

🌟 Acknowledgments


Zest Academy - Empowering learners with quality education πŸŽ“

About

the main website of the Zest Academy Website

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Contributors

Languages