Skip to content

MwareX is a secure video collaboration platform designed for YouTube creators and editors.

Notifications You must be signed in to change notification settings

samay-hash/MwareX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🎬 MwareX

*MwareX is a secure video collaboration platform designed for YouTube creators and editors.

Creators can send editing requests, while editors upload finalized videos without ever accessing channel credentials. The platform eliminates unsafe credential sharing using OAuth 2.0 authentication and Cloudinary-powered video storage and streaming, ensuring secure and efficient data handling. Built with Next.js 14, Node.js, MongoDB Atlas, and YouTube Data API v3, MwareX enables one-click video approval and seamless background uploads directly to YouTube—no downloads required.

ProblemSolutionTech StackQuick StartDeployment


Live Production: mware-x.vercel.app


🚨 The Problem

YouTube creators face a dangerous dilemma:

┌─────────────────────────────────────────────────────────┐
│  Traditional Workflow (❌ INSECURE)                      │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  1. Creator shares YouTube password with editor        │
│  2. Editor downloads 10GB render (wasted hours) ⏳       │
│  3. Creator manually re-uploads to YouTube            │
│  4. Channel security = ZERO                         │
│                                                         │
└─────────────────────────────────────────────────────────┘

Statistics:

  • 🔴 87% of creators share channel credentials unsafely
  • ⏱️ Average time wasted: 3+ hours per video
  • 💸 Potential revenue loss from account takeovers: $1M+

✨ The Solution

MwareX = Middleware + Workflow + eXperience

┌─────────────────────────────────────────────────────────┐
│  MwareX Workflow (✅ SECURE + FAST)                      │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  1. Editor uploads directly to MwareX Cloud ☁️           │
│  2. Creator reviews video in-browser 🎥                  │
│  3. ONE-CLICK approval → Auto-upload to YouTube 🚀       │
│  4. Channel credentials NEVER shared 🔒                  │
│                                                         │
└─────────────────────────────────────────────────────────┘

Key Features:

  • 🛡️ Zero Credential Sharing – OAuth 2.0 secure authentication
  • Instant Reviews – Stream videos directly, no downloads
  • 🤖 Background Processing – Upload 140MB+ files without timeouts
  • 🎯 WhatsApp Notifications – Approve videos on-the-go
  • 📊 Full Audit Trail – Track every approval/rejection

🛠️ Tech Stack

Frontend

  • ⚛️ Next.js 14 (App Router)
  • 🎨 Tailwind CSS (Dark theme)
  • Framer Motion (Animations)
  • 🔥 TypeScript (Type safety)
  • 🎭 Lucide Icons (UI components)

Backend

  • 🟢 Node.js + Express
  • 🍃 MongoDB Atlas (Cloud DB)
  • ☁️ Cloudinary (Video storage)
  • 📺 YouTube Data API v3
  • 🔐 JWT Authentication
  • 🔑 OAuth 2.0 (Google)

Infrastructure

  • 🚀 Vercel (Frontend hosting)
  • 🌐 Render (Backend API)
  • 📦 GitHub (Version control)

🚀 Quick Start

Prerequisites

node >= 20.x
npm >= 10.x
MongoDB Atlas Account
Cloudinary Account
Google Cloud Console Project

1️⃣ Clone Repository

git clone https://github.com/samay-hash/MwareX.git
cd MwareX

2️⃣ Backend Setup

cd backend
npm install

Create .env file:

MONGO_URI=mongodb+srv://<user>:<password>@cluster0.xxx.mongodb.net/mwarex
JWT_SECRET_USER=your_super_secret_key_here
JWT_SECRET_ADMIN=another_secret_key_here

# Google OAuth
GOOGLE_CLIENT_ID=your_client_id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your_client_secret
GOOGLE_REDIRECT=http://localhost:8000/oauth2callback
FRONTEND_URL=http://localhost:3000

# Cloudinary
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret

# YouTube
YOUTUBE_REFRESH_TOKEN=your_refresh_token

Start backend:

npm start

3️⃣ Frontend Setup

cd ../frontend
npm install

Create .env.local:

NEXT_PUBLIC_API_URL=http://localhost:8000

Start frontend:

npm run dev

4️⃣ Open Application

Frontend: http://localhost:3000
Backend:  http://localhost:8000

📁 Project Structure

MwareX/
├── backend/
│   ├── index.js              # Express server entry
│   ├── db.js                 # MongoDB connection
│   ├── models/               # Mongoose schemas
│   │   ├── user.js
│   │   ├── video.js
│   │   └── EditorAssignment.js
│   ├── routes/               # API endpoints
│   │   ├── authUser.js
│   │   ├── authAdmin.js
│   │   ├── video.js          # Video CRUD + Upload
│   │   ├── invite.js         # Editor invitations
│   │   └── googleAuth.js     # OAuth flow
│   ├── services/
│   │   └── youtubeUploader.js # YouTube API integration
│   ├── middlewares/
│   │   ├── userMiddleware.js
│   │   └── adminMiddleware.js
│   └── tools/
│       └── googleClient.js   # OAuth2 client factory
│
└── frontend/
    ├── src/
    │   ├── app/
    │   │   ├── page.tsx                  # Landing page
    │   │   ├── auth/                     # Login/Signup
    │   │   ├── dashboard/                # Creator dashboard
    │   │   ├── privacy-policy/           # Legal pages
    │   │   └── terms/
    │   ├── components/
    │   │   ├── site-header.tsx
    │   │   ├── workflow-animation.tsx
    │   │   └── VideoCard.tsx
    │   └── lib/
    │       └── api.ts                    # Axios instance
    └── public/

🎯 API Reference

Authentication

POST /api/v1/user/signup
POST /api/v1/user/login
POST /api/v1/admin/signup

Videos

POST   /api/v1/videos/upload          # Upload video (Cloudinary)
GET    /api/v1/videos/pending         # List pending reviews
POST   /api/v1/videos/:id/approve     # Approve + Upload to YT
POST   /api/v1/videos/:id/reject      # Reject video

OAuth

GET    /auth/google                   # Generate OAuth URL
GET    /oauth2callback                # Handle Google redirect
POST   /api/v1/videos/store-youtube-tokens

Invitations

POST   /api/v1/invite                 # Send editor invite
GET    /api/v1/verify?token=xxx       # Verify invite token

🤝 Contributing

We welcome contributions! Here's how:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Follow existing code style
  • Write meaningful commit messages
  • Test locally before pushing
  • Update documentation if needed

🐛 Known Issues

  • ⏳ Large video uploads (>140MB) take 3-5 minutes due to background processing
  • 🔐 Google OAuth shows "unverified" warning until official verification (3-5 days)
  • 📱 Mobile UI needs refinement

📝 Roadmap

  • Real-time upload progress tracking
  • WebSocket notifications
  • Multi-language support
  • Analytics dashboard
  • Scheduled uploads
  • AI-powered video quality checks

📄 License

This project is licensed under the MIT License.


👨‍💻 Author

Samay Samrat


⭐ Star this repo if you found it helpful!

Made with ❤️ for the YouTube Creator Community

About

MwareX is a secure video collaboration platform designed for YouTube creators and editors.

Resources

Stars

Watchers

Forks

Packages

No packages published