A modern, full-stack video upload and social media content creation platform built with Next.js, featuring intelligent video processing, social media format optimization, and a sleek dark-themed UI.
- Smart Upload: Drag & drop video uploads with real-time validation
- Format Support: All major video formats with automatic optimization
- File Size Limits: Configurable upload limits (default: 70MB)
- Progress Tracking: Real-time upload progress with visual feedback
- Auto-Formatting: Intelligent cropping for Instagram, Twitter, Facebook
- Multiple Formats: Support for various aspect ratios (1:1, 4:5, 16:9, 3:1, 205:78)
- Preview System: Real-time preview before download
- Batch Processing: Transform images for multiple platforms
- Clerk Integration: Secure user authentication and management
- Protected Routes: Role-based access control
- Session Management: Persistent login sessions
- User Profiles: Avatar and profile management
- Dark Theme: Sophisticated black/grey/slate color palette
- Glass Morphism: Backdrop blur effects and translucent elements
- Responsive Design: Mobile-first approach with adaptive layouts
- Smooth Animations: Micro-interactions and hover effects
- Loading States: Professional skeleton loaders and progress indicators
- Next.js 15 - React framework with App Router
- React 18 - UI library with hooks and modern patterns
- Tailwind CSS - Utility-first CSS framework
- Lucide React - Beautiful SVG icons
- Cloudinary - Image and video processing and storage
- Clerk - Authentication and user management
- Axios - HTTP client for API requests
- TypeScript/JavaScript - Type-safe development
- ESLint - Code linting and formatting
- Git - Version control
- Node.js 18+
- npm or yarn
- Cloudinary account
- Clerk account
git clone https://github.com/yourusername/cloudinary-video-platform.git
cd cloudinary-video-platformnpm install
# or
yarn installCreate a .env.local file in the root directory:
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_SECRET_KEY=sk_test_...
# Cloudinary Configuration
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=your_cloud_namenpm run dev
# or
yarn devOpen http://localhost:3000 to view the application.
cloudinary-video-platform/
βββ app/ # Next.js App Router
β βββ (auth)/ # Authentication routes
β β βββ sign-in/
β β βββ sign-up/
β βββ api/ # API routes
β β βββ image-upload/
β β βββ video-upload/
β βββ home/ # Video gallery page
β βββ social-share/ # Social media formatter
β βββ video-upload/ # Video upload page
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout
β βββ page.tsx # Landing page
βββ components/ # Reusable components
β βββ AppLayout.jsx # Main app layout
β βββ VideoCard.jsx # Video display component
βββ public/ # Static assets
βββ .env.local # Environment variables
βββ next.config.js # Next.js configuration
βββ tailwind.config.js # Tailwind CSS configuration
βββ package.json # Dependencies and scripts
/* Primary Background */
bg-gradient-to-br from-slate-900 via-gray-900 to-black
/* Glass Elements */
bg-white/5 backdrop-blur-sm border border-white/10
/* Interactive Elements */
bg-gradient-to-r from-slate-700 to-gray-700
hover:from-slate-600 hover:to-gray-600
/* Text Colors */
text-white /* Primary text */
text-white/70 /* Secondary text */
text-white/50 /* Tertiary text */- Glass Morphism:
bg-white/5 backdrop-blur-sm border border-white/10 - Gradient Buttons:
bg-gradient-to-r from-slate-700 to-gray-700 - Hover Effects:
hover:scale-105 transition-all duration-300 - Loading States: Custom spinners and skeleton loaders
- Hero section with platform introduction
- Feature showcase with benefits
- Call-to-action buttons for sign-up/sign-in
- Responsive design with animated elements
- Grid layout of uploaded videos
- Search and filter functionality
- Video preview and download options
- Responsive card-based design
- Drag & drop file upload
- Form validation and file size checking
- Real-time upload progress
- Success/error state handling
- Image upload and format selection
- Real-time preview of transformations
- Multiple social media format support
- Download optimized images
Upload video files to Cloudinary
// Request
FormData: {
file: File,
title: string,
description: string,
originalSize: string
}
// Response
{
success: boolean,
publicId: string,
url: string
}Upload images for social media formatting
// Request
FormData: {
file: File
}
// Response
{
success: boolean,
publicId: string
}- File Selection: User selects video file with validation
- Form Submission: Title, description, and file data
- Upload Progress: Real-time progress tracking
- Cloudinary Processing: Automatic optimization and storage
- Success Redirect: Navigate to video gallery
- Image Upload: User uploads source image
- Format Selection: Choose target social platform
- Real-time Preview: Cloudinary transformation preview
- Download: Optimized image download
- Clerk Integration: Secure sign-up/sign-in
- Protected Routes: Middleware-based route protection
- User Context: Global user state management
- Session Persistence: Automatic session handling
- Push code to GitHub repository
- Connect repository to Vercel
- Configure environment variables
- Deploy automatically on push
# Add all .env.local variables to your deployment platform
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_live_...
CLERK_SECRET_KEY=sk_live_...
CLOUDINARY_CLOUD_NAME=your_production_cloud
CLOUDINARY_API_KEY=your_production_key
CLOUDINARY_API_SECRET=your_production_secret- Create account at cloudinary.com
- Get API credentials from dashboard
- Configure upload presets for video/image processing
- Set up transformation parameters
- Create account at clerk.dev
- Create new application
- Configure authentication methods
- Set up redirect URLs
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
- Follow existing code style and patterns
- Maintain consistent component structure
- Add proper TypeScript types where applicable
- Test responsive design on multiple devices
- Ensure accessibility standards
This project is licensed under the MIT License - see the LICENSE file for details.
- Cloudinary - For powerful media processing APIs
- Clerk - For seamless authentication solutions
- Vercel - For excellent deployment platform
- Tailwind CSS - For utility-first styling approach
- Lucide - For beautiful icon library
For any questions:
- π§ Email: [email protected]