Skip to content

Rahmasamy/manasa-client

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

No releases published

Packages

 
 
 

Contributors