This project is a frontend part of E-learning backend. This project implements micro-frontend architecture built with Turborepo.
Features:
- Course Management
- Blog Management
- Quiz Management
- Category
- Tag
- Course Bookmark
- Course Review
- User Management
- AI powered content editor
- Dark mode support
- Subscription
- Node.js 18.17 or later
- E-learning backend APIs
- TinyMCE self-hosted
This project use TinyMCE for some rich text editing. You need to download TinyMCE self-hosted source here and then unzip and place inside public folder or you can host anywhere you wish to place. Read more about TinyMCE self-hosted here.
Required .env
file properties are inclued inside each apps as .env.example
file.
This Turborepo includes the following packages/apps:
elearning-web
: E-learning consumer app using Next.jselearning-admin
: E-learning admin app using Next.js@elearning/ui
: UI and other central components shared by bothelearning-web
andelearning-admin
applications@elearning/lib
: a utility library shared by bothelearning-web
andelearning-admin
applications@elearning/global-store
: redux global store shared by bothelearning-web
andelearning-admin
applications@elearning/block-editor
: customized tiptap based AI-powered block editor@elearning/assets
: fonts and images assets@elearning/eslint-config
:eslint
configurations (includeseslint-config-next
andeslint-config-prettier
)@elearning/typescript-config
:tsconfig.json
s used throughout the monorepo@elearning/tailwind-config
: tailwindcss configuration including base css
.
├── apps
│ ├── admin
│ └── web
├── packages
│ ├── assets
│ ├── block-editor
│ ├── config-eslint
│ ├── config-tailwind
│ ├── config-typescript
│ ├── global-store
│ ├── lib
│ └── ui
└── ...
Multi-Zones is a way of having independent Next.js applications that all render on a common domain. This is a method for building separation of concerns in large teams. It works well if a single domain has separate groupings of pages where a user doesn't navigate between the groups very often.
In this project, ./apps/web is our main app, and ./apps/admin is a separate app that handles all routes for /admin/**.
This Turborepo has some additional tools already setup for you:
- TypeScript for static type checking
- ESLint for code linting
- Prettier for code formatting
To build all apps and packages, run the following command:
cd elearning-frontend
pnpm build
To develop all apps and packages, run the following command:
cd elearning-frontend
pnpm i
pnpm dev