An educational platform frontend built with Next.js and React, providing courses, articles, academic resources, and professional services to learners.
Manasa is a comprehensive e-learning and knowledge-sharing platform that offers:
- π Online Courses - Structured lessons with progression tracking
- π Articles & Blog - Educational content and tutorials
- π Electronic Library - Digital resource repository
- π Certifications - Course completion certificates
- π¨βπ« Trainer Profiles - Expert instructors and educational consultants
- π οΈ Services - Professional support and consulting
- π Dashboard - Admin & instructor content management
- π Authentication - Secure user accounts with profiles
- Node.js 18+
- npm or yarn or pnpm
# Clone the repository
git clone https://github.com/Rahmasamy/manasa-client.git
cd manasa-client
# Install dependencies
npm installnpm run devOpen http://localhost:3000 to view the application.
npm run build
npm startnpm run lint- Framework: Next.js 16.0+ with App Router
- UI Library: React 19.2
- Language: TypeScript
- Styling: Tailwind CSS
- Icons: Lucide React
- Charts: Recharts
- Data Management:
- React Query - Server state
- Zustand - Client state
- HTTP Client: Axios
- UI Components: Radix UI
- Carousel: Embla Carousel
- Internationalization: next-intl
- RTL Support: tailwindcss-rtl
src/
βββ app/ # Next.js App Router
β βββ (root)/ # Public pages (home, courses, articles, etc.)
β β βββ page.tsx # Homepage
β β βββ about/ # About us
β β βββ courses/ # Courses listing & details
β β βββ single-course/ # Individual course view
β β βββ articles/ # Blog articles
β β βββ academic/ # Academic resources
β β βββ electronic-library/ # Digital library
β β βββ certificate/ # Certificates
β β βββ profile/ # User profiles
β β βββ auth/ # Login/Register
β βββ (dashboard)/ # Admin/Instructor routes
β β βββ layout.tsx
β β βββ dashboard/ # Dashboard home
β βββ layout.tsx # Root layout
β βββ globals.css # Global styles
β
βββ components/ # Reusable React Components
β βββ ui/ # Atomic UI components
β β βββ button.tsx
β β βββ input.tsx
β β βββ input-otp.tsx
β β βββ navigation-menu.tsx
β β βββ SideBar.tsx
β β βββ DashboardNavbar.tsx
β βββ layout/ # Layout components
β β βββ About-us/
β β βββ Articles/
β β βββ CoursePage/
β β βββ auth/
β β βββ ...
β βββ dashboard/ # Dashboard-specific components
β β βββ DataTable.tsx # Reusable data table
β β βββ AddCourseModal.tsx
β β βββ AddArticleModal.tsx
β β βββ AddLessonModal.tsx
β β βββ FileUpload.tsx
β β βββ ImageUpload.tsx
β β βββ LineChart.tsx
β β βββ ...
β βββ domain/ # Feature-specific components
β β βββ CourseCardComponent/
β β βββ ArticleContent/
β β βββ QuestionComponent/
β β βββ TrainerCard/
β β βββ ServiceComponent/
β β βββ ...
β βββ providers/ # Context providers
β
βββ contexts/ # React Contexts
β βββ AuthContext.tsx # Authentication state
β βββ ...
β
βββ hooks/ # Custom React Hooks
β βββ ...
β
βββ infrastructure/ # External services & APIs
β βββ api/ # API client configuration
β βββ prisma/ # Database schema & migrations
β
βββ domain/ # Business logic (clean architecture)
β βββ models/ # Data models/interfaces
β βββ repositories/ # Data access layer
β βββ usecases/ # Business use cases
β
βββ lib/ # Utilities & Helpers
β βββ config/ # Configuration
β βββ consts/ # Constants
β βββ utils/ # Helper functions
β
βββ types/ # TypeScript type definitions
β βββ courses/
β βββ dashboard/
β βββ services/
β βββ ...
β
βββ styles/ # CSS modules & additional styles
β βββ ...
β
βββ utils/ # General utility functions
components.json # Shadcn/ui configuration
tailwind.config.cjs # Tailwind CSS config
tsconfig.json # TypeScript config
next.config.ts # Next.js config
postcss.config.cjs # PostCSS config
| Route | Description |
|---|---|
/ |
Homepage |
/courses |
Browse all courses |
/single-course/[id] |
Individual course details & lessons |
/articles |
Blog & articles section |
/academic |
Academic guides & resources |
/electronic-library |
Digital resource library |
/certificate |
View certificates |
/profile |
User profile page |
/auth |
Authentication (login/register) |
/dashboard |
Admin/Instructor dashboard |
- DataTable - Reusable table for managing content
- Modals - Add course, article, lesson, library items, sections, services
- File/Image Upload - Content media management
- Charts & Analytics - Dashboard analytics visualization
- Sidebar & Navigation - Responsive navigation menu
- Search & Filter - Course and content filtering
- User authentication via
/authroutes - Protected dashboard routes via
(dashboard)route group - Auth context for state management
- Authorization checks for sensitive operations
The project supports multiple languages using next-intl and includes RTL (Right-to-Left) support for Arabic and other RTL languages via tailwindcss-rtl.
Built with Tailwind CSS for a fully responsive design that adapts to:
- Desktop devices
- Tablets
- Mobile phones
- Create page/component in appropriate directory
- Define TypeScript types in
src/types/ - Add API calls using Axios in
src/infrastructure/api/ - Manage state with Zustand or React Query
- Build UI components using Tailwind + Radix UI
- Test in dev server (
npm run dev)
- Pages:
page.tsx - Components: PascalCase (e.g.,
CourseCard.tsx) - Hooks: camelCase with
useprefix (e.g.,useCourses.ts) - Utils: camelCase (e.g.,
formatDate.ts) - Types: PascalCase (e.g.,
CourseType.ts)
# Push to GitHub, connect Vercel
# Auto-deploys on push to main branchnpm run build
npm startISC License - See LICENSE file for details
Contributions are welcome! Please feel free to submit issues and pull requests.
For issues and inquiries, visit the GitHub Issues page
Made with β€οΈ by the Manasa Team β βββ domain/ # Domain-specific UI β βββ features/ # Feature-based modules β βββ auth/ β β βββ components/ β β βββ services/ β β βββ hooks/ β β βββ types.ts β βββ assessments/ β β βββ components/ β β βββ services/ β β βββ model.ts β βββ index.ts β βββ domain/ # Core business logic (entities, interfaces) β βββ models/ # Pure data models (no Next.js or React) β βββ repositories/ # Abstract interfaces for data sources β βββ usecases/ # Business rules (pure functions) β βββ infrastructure/ # Data access & external integrations β βββ api/ # Axios/fetch clients, backend adapters β βββ prisma/ # Prisma setup (if using) β βββ repositories/ # Implementations of domain repositories β βββ hooks/ # Global custom hooks βββ lib/ # Utilities, helpers, constants βββ styles/ # Global CSS / Tailwind βββ types/ # Shared TypeScript types βββ utils/ # Formatting, validation, etc.