Remove description fields from course, unit, and module create/edit dialogs. Add unit sort order on create, lesson publish status and sort order, video duration on lesson cards, and personas API integration for Learn English practice flows. Move Manage Question Types to the new content hub, add Reorder Content page with hierarchy drag-and-drop, shared practice review UI, module practice cards, and publish-practice controls on course listings. Co-authored-by: Cursor <cursoragent@cursor.com> |
||
|---|---|---|
| docs | ||
| public | ||
| src | ||
| .env | ||
| .gitignore | ||
| eslint.config.js | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| README.md | ||
| tailwind.config.js | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
Yimaru Academy LMS Admin Panel
A modern, feature-rich admin dashboard for managing Yimaru Academy's educational platform. Built with React, TypeScript, and Tailwind CSS.
🚀 Tech Stack
- Framework: React 19.2.0
- Language: TypeScript 5.9.3
- Build Tool: Vite 7.2.4
- Routing: React Router DOM 7.10.1
- Styling: Tailwind CSS 3.4.17
- UI Components: Radix UI
- Icons: Lucide React
- State Management: Zustand 5.0.9
- Charts: Recharts 3.6.0
- Font: Inter (via @fontsource/inter)
📁 Project Structure
src/
├── app/ # Application configuration
│ └── AppRoutes.tsx # Main routing configuration
├── assets/ # Static assets (images, etc.)
├── components/ # Reusable components
│ ├── brand/ # Branding components
│ │ └── BrandLogo.tsx # Yimaru Academy logo component
│ ├── dashboard/ # Dashboard-specific components
│ ├── sidebar/ # Sidebar navigation components
│ ├── topbar/ # Top navigation bar components
│ └── ui/ # Base UI components
│ ├── avatar.tsx
│ ├── badge.tsx
│ ├── button.tsx
│ ├── card.tsx
│ ├── dialog.tsx
│ ├── dropdown-menu.tsx
│ ├── file-upload.tsx
│ ├── input.tsx
│ ├── select.tsx
│ ├── separator.tsx
│ ├── stepper.tsx
│ ├── table.tsx
│ └── textarea.tsx
├── layouts/ # Layout components
│ └── AppLayout.tsx # Main application layout
├── lib/ # Utility functions
│ └── utils.ts # Helper functions (cn, etc.)
├── pages/ # Page components
│ ├── auth/ # Authentication pages
│ │ ├── LoginPage.tsx
│ │ ├── ForgotPasswordPage.tsx
│ │ └── VerificationPage.tsx
│ ├── analytics/ # Analytics pages
│ ├── content-management/ # Content management pages
│ │ ├── ContentManagementLayout.tsx
│ │ ├── ContentOverviewPage.tsx
│ │ ├── CoursesPage.tsx
│ │ ├── AddVideoPage.tsx
│ │ ├── SpeakingPage.tsx
│ │ ├── AddPracticePage.tsx
│ │ ├── PracticeDetailsPage.tsx
│ │ ├── PracticeMembersPage.tsx
│ │ ├── QuestionsPage.tsx
│ │ └── AddQuestionPage.tsx
│ ├── notifications/ # Notifications pages
│ ├── role-management/ # Role management pages
│ ├── user-log/ # User log pages
│ ├── user-management/ # User management pages
│ ├── DashboardPage.tsx
│ ├── NotFoundPage.tsx
│ └── PlaceholderPage.tsx
├── stores/ # State management (Zustand stores)
├── App.tsx # Root App component
├── App.css # App-specific styles
├── index.css # Global styles and Tailwind directives
└── main.tsx # Application entry point
🎨 UI Components
Base Components (src/components/ui/)
- Avatar - User avatar display with fallback
- Badge - Status badges and labels
- Button - Primary, secondary, outline, ghost variants
- Card - Container component with header, content, footer
- Dialog - Modal dialogs using Radix UI
- Dropdown Menu - Context menus and dropdowns
- File Upload - File upload component
- Input - Text input fields
- Select - Dropdown select component
- Separator - Visual divider
- Stepper - Multi-step form indicator
- Table - Data table with header, body, footer
- Textarea - Multi-line text input
Brand Components
- BrandLogo - Yimaru Academy logo with icon and text
Layout Components
- AppLayout - Main application layout with sidebar and topbar
- ContentManagementLayout - Tabbed layout for content management
- UserManagementLayout - Layout for user management section
- RoleManagementLayout - Layout for role management section
📄 Pages & Features
Authentication (/auth)
-
Login Page (
/login)- Email and password authentication
- Password visibility toggle
- Forgot password link
-
Forgot Password Page (
/forgot-password)- Email input for password reset
- Back to login navigation
-
Verification Page (
/verification)- 5-digit code input with auto-focus
- Resend timer countdown
- Paste support for verification codes
Dashboard (/dashboard)
- Main dashboard with overview statistics and charts
Content Management (/content)
-
Overview - Content management dashboard with quick access cards
-
Courses (
/content/courses)- Course listing and management
- Add new video content
-
Speaking (
/content/speaking)- Speaking practice management
- Add new practice sessions
-
Practice (
/content/practices)- Practice details and management
- Practice members management
-
Questions (
/content/questions)- Question bank management
- Search and filter functionality
- Filter by type (Multiple Choice, Short Answer, True/False)
- Filter by category and difficulty
- Add/Edit questions with dynamic form behavior
- Support for multiple question types
User Management (/users)
- User dashboard
- User listing
- User registration
- User groups
- User detail pages
Role Management (/roles)
- Role listing
- Add/Edit roles
Notifications (/notifications)
- Notification management and settings
User Log (/user-log)
- User activity logging and tracking
Analytics (/analytics)
- Analytics dashboard with charts and metrics
🎯 Key Features
- Responsive Design - Mobile-first approach with Tailwind CSS
- Type Safety - Full TypeScript implementation
- Modern UI - Clean, professional design with consistent branding
- Component Library - Reusable UI components built on Radix UI
- Routing - Client-side routing with React Router
- State Management - Zustand for global state
- Form Handling - Dynamic forms with validation
- Search & Filter - Advanced filtering capabilities
- Question Management - Comprehensive question bank with multiple question types
🛠️ Getting Started
Prerequisites
- Node.js (v18 or higher)
- npm or yarn
Installation
- Clone the repository
git clone <repository-url>
cd Yimaru-Admin
- Install dependencies
npm install
- Start development server
npm run dev
- Build for production
npm run build
- Preview production build
npm run preview
📜 Available Scripts
npm run dev- Start development server with hot module replacementnpm run build- Build for production (TypeScript compilation + Vite build)npm run lint- Run ESLintnpm run preview- Preview production build locally
🎨 Design System
Colors
- Brand Colors: Purple palette (brand-50 to brand-600)
- Gold: Accent colors (gold-100 to gold-600)
- Mint: Secondary accent (mint-100 to mint-500)
- Gray Scale: Neutral colors (grayScale-50 to grayScale-600)
Typography
- Font Family: Inter (via @fontsource/inter)
- Font Weights: 100, 200, 300, 400, 500, 600, 700, 800, 900
Border Radius
- Large: 14px (--radius)
- Medium: calc(var(--radius) - 2px)
- Small: calc(var(--radius) - 4px)
🔐 Authentication Flow
- User visits
/login - Enters credentials
- If forgot password, redirected to
/forgot-password - After password reset, verification code sent
- User enters code on
/verificationpage - Upon successful verification, redirected to dashboard
📝 Question Types
The Questions management system supports three question types:
- Multiple Choice - Multiple options with one correct answer
- Short Answer - Text-based answer with validation
- True/False - Binary choice questions
Each question type has dynamic form behavior that adapts based on selection.
🚧 Development Notes
- The project uses ESLint for code quality
- TypeScript strict mode is enabled
- Components follow a consistent naming convention
- UI components are built with accessibility in mind (Radix UI)
- State management uses Zustand for simplicity
📦 Dependencies
Core Dependencies
- React & React DOM - UI framework
- React Router DOM - Client-side routing
- TypeScript - Type safety
- Tailwind CSS - Utility-first CSS framework
- Vite - Build tool and dev server
UI Libraries
- Radix UI - Accessible component primitives
- Lucide React - Icon library
- Recharts - Chart library
Utilities
- clsx & tailwind-merge - Class name utilities
- class-variance-authority - Component variant management
- Zustand - State management
📄 License
This project is private and proprietary.
Developed by Yaltopia Tech
Built with ❤️ for Yimaru Academy