A modern online course management platform with complete authentication system and video integration.
Memberbry is a full-stack application that allows you to create and manage online courses, featuring video upload capabilities, JWT authentication, and external video API integration. The platform provides a modern and intuitive interface for educators to create and organize their lessons.
-
π Complete Authentication System
- User registration and login
- JWT authentication
- Private route protection
- Secure password hashing with bcrypt
-
π Course Management
- Lesson creation and editing
- Video uploads
- Content organization
- Administrative dashboard
-
π₯ Video Integration
- Video uploads with Uppy.js
- External API integration (Panda Video)
- OAuth2 token management
-
π€ User Profile
- Custom profile image
- Custom banner
- Account settings
-
π§© Microfrontend Architecture
- Reusable login component
- Configurable themes and validations
- Multi-tenant support
- Module Federation ready
- Node.js - JavaScript runtime
- Express.js - Web framework
- MongoDB - NoSQL database
- Mongoose - MongoDB ODM
- JWT - Token-based authentication
- bcrypt - Password hashing
- Multer - File upload handling
- Axios - HTTP client
- CORS - Cross-Origin Resource Sharing
- Vue.js 3 - Progressive framework
- Vue Router - SPA routing
- Pinia - State management
- Tailwind CSS - Utility-first CSS framework
- Headless UI - Accessible components
- Heroicons - SVG icons
- Uppy.js - Modern file uploader
- Axios - HTTP client
- JWT Decode - Token decoding
memberbry/
βββ backend/
β βββ models/
β β βββ User.js # User model
β βββ controllers/ # Route controllers
β βββ middlewares/ # Authentication middleware
β βββ routes/ # API routes
β βββ services/ # Business logic
β βββ index.js # Main server
β βββ package.json
βββ frontend/
βββ src/
β βββ components/
β β βββ microfrontend/ # Reusable microfrontend components
β β β βββ LoginMicrofrontend.vue
β β β βββ index.js # Configuration utilities
β β β βββ README.md # Microfrontend documentation
β β βββ ui/ # Shared UI components
β βββ examples/ # Usage examples
β βββ views/ # Application pages
β βββ router/ # Route configuration
β βββ store/ # State management
β βββ services/ # HTTP services
βββ public/
βββ package.json
Follow these step-by-step instructions to run the application locally:
Make sure you have the following installed on your system:
- Node.js (v14 or higher) - Download here
- MongoDB - Download here or use MongoDB Atlas
- npm or yarn package manager
- Clone the repository and navigate to the backend folder:
git clone <your-repository-url>
cd memberbry/backend- Install dependencies:
npm install- Set up environment variables:
Create a
.envfile in the backend root directory:
DB_USER=your_mongodb_username
DB_PASS=your_mongodb_password
SECRET=your_jwt_secret_key- Start the backend server:
npm startβ
Backend will be running at: http://localhost:4567
- Navigate to the frontend folder:
cd ../frontend- Install dependencies:
npm install- Start the development server:
npm run serveβ
Frontend will be available at: http://localhost:8080
You can run both servers simultaneously by opening two terminal windows:
Terminal 1 (Backend):
cd backend && npm startTerminal 2 (Frontend):
cd frontend && npm run servePOST /auth/register- User registrationPOST /auth/login- User login
GET /users/:id- Get user (private)PUT /users/:id/token- Update integration tokenPUT /users/:id/lessons- Add lesson (private)
The application features a modern interface built with:
- Tailwind CSS for styling
- Headless UI for accessible components
- Heroicons for consistent icons
- Responsive design for all devices
The project includes reusable microfrontend components that can be integrated into other applications:
A fully configurable login component with:
- Multiple themes: Default, minimal, dark
- Customizable validation: Email and password rules
- Event-driven integration: Login success/error callbacks
- Multi-tenant support: Different configurations per client
- JWT authentication: Secure token management
<template>
<LoginMicrofrontend
api-base-url="https://your-api.com"
title="Your Application"
@login-success="handleLogin"
/>
</template>
<script setup>
import LoginMicrofrontend from '@/components/microfrontend/LoginMicrofrontend.vue'
const handleLogin = (authData) => {
console.log('User logged in:', authData)
}
</script>- Direct Import: Use within the same Vue.js application
- NPM Library: Publish and install as a package
- Module Federation: Remote microfrontend consumption
For detailed documentation, see: frontend/src/components/microfrontend/README.md
The project is already configured for Netlify deployment with:
- Configured
netlify.tomlfile - SPA redirects (
_redirects)
Set up environment variables in your preferred hosting provider.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the ISC License. See the LICENSE file for details.
Built with β€οΈ to facilitate online course creation and management.
β If this project was helpful to you, please consider giving it a star!
