Skip to content

Repository files navigation

Manasa Client

An educational platform frontend built with Next.js and React, providing courses, articles, academic resources, and professional services to learners.


🎯 Overview

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

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • npm or yarn or pnpm

Installation

# Clone the repository
git clone https://github.com/Rahmasamy/manasa-client.git
cd manasa-client

# Install dependencies
npm install

Development Server

npm run dev

Open http://localhost:3000 to view the application.

Build for Production

npm run build
npm start

Linting

npm run lint

πŸ“‹ Tech Stack


πŸ“ Project Structure

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

🎨 Key Features

Pages & Routes

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

Components Highlights

  • 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

πŸ” Authentication & Security

  • User authentication via /auth routes
  • Protected dashboard routes via (dashboard) route group
  • Auth context for state management
  • Authorization checks for sensitive operations

🌍 Internationalization

The project supports multiple languages using next-intl and includes RTL (Right-to-Left) support for Arabic and other RTL languages via tailwindcss-rtl.


πŸ“± Responsive Design

Built with Tailwind CSS for a fully responsive design that adapts to:

  • Desktop devices
  • Tablets
  • Mobile phones

πŸ› οΈ Development Workflow

Creating New Features

  1. Create page/component in appropriate directory
  2. Define TypeScript types in src/types/
  3. Add API calls using Axios in src/infrastructure/api/
  4. Manage state with Zustand or React Query
  5. Build UI components using Tailwind + Radix UI
  6. Test in dev server (npm run dev)

File Naming Conventions

  • Pages: page.tsx
  • Components: PascalCase (e.g., CourseCard.tsx)
  • Hooks: camelCase with use prefix (e.g., useCourses.ts)
  • Utils: camelCase (e.g., formatDate.ts)
  • Types: PascalCase (e.g., CourseType.ts)

πŸš€ Deployment

Vercel (Recommended)

# Push to GitHub, connect Vercel
# Auto-deploys on push to main branch

Manual Deployment

npm run build
npm start

πŸ“š Resources


πŸ“ License

ISC License - See LICENSE file for details


🀝 Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.


πŸ“§ Support

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.

About

An educational platform frontend built with Next.js and React, providing courses, articles, academic resources, and professional services to learners

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages