Skip to content

SiddDevZ/Lumeroo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

30 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 Lumeroo

A modern video and image sharing platform built with Next.js

Lumeroo Screenshot

Next.js React TypeScript MongoDB

Live Demo β€’ Report Issues


✨ Core Features

  • Video & Image Sharing - Upload and share multimedia content
  • User Authentication - Secure registration and login system
  • Interactive Comments - Nested comments with reactions
  • User Profiles - Customizable user profiles with subscriptions
  • Content Discovery - Search and explore content
  • Admin Dashboard - Content moderation and user management

πŸš€ Quick Start

Prerequisites

  • Node.js 18.0 or higher
  • MongoDB database
  • SMTP server (for emails)

Installation

  1. Clone and install dependencies

    git clone https://github.com/Lumeroo/lumeroo.git
    cd lumeroo
    npm install
    cd Backend && npm install && cd ..
  2. Configure environment

    Frontend (.env.local)

    NEXT_PUBLIC_API_URL=http://localhost:3002

    Backend (.env)

    DATABASE_URL=mongodb://localhost:27017/lumeroo
    JWT_SECRET=your_jwt_secret
    SMTP_USERNAME=your_smtp_username
    SMTP_PASSWORD=your_smtp_password
  3. Start development servers

    # Terminal 1 - Backend
    cd Backend && npm run dev
    
    # Terminal 2 - Frontend  
    npm run dev
  4. Open http://localhost:3000

Project Structure

lumeroo/
β”œβ”€β”€ app/                          # Next.js App Router
β”‚   β”œβ”€β”€ page.tsx                  # Homepage
β”‚   β”œβ”€β”€ layout.tsx                # Root layout
β”‚   β”œβ”€β”€ globals.css               # Global styles
β”‚   β”œβ”€β”€ watch/                    # Content viewing pages
β”‚   β”‚   └── page.tsx              # Video/image viewer
β”‚   β”œβ”€β”€ upload/                   # Content upload
β”‚   β”‚   └── page.jsx              # Upload interface
β”‚   β”œβ”€β”€ profile/                  # User profiles
β”‚   β”‚   └── page.tsx              # Profile pages
β”‚   β”œβ”€β”€ search/                   # Search functionality
β”‚   β”‚   └── page.tsx              # Search results
β”‚   β”œβ”€β”€ admin/                    # Admin dashboard
β”‚   β”‚   └── page.tsx              # Admin interface
β”‚   β”œβ”€β”€ youtube-downloader/       # YouTube download feature
β”‚   β”‚   └── page.jsx              # YouTube downloader
β”‚   β”œβ”€β”€ terms-of-service/         # Legal pages
β”‚   β”‚   └── page.jsx              # Terms of Service
β”‚   β”œβ”€β”€ privacy-policy/           # Privacy policy
β”‚   β”‚   └── page.jsx              # Privacy Policy
β”‚   └── dmca/                     # DMCA notice
β”‚       └── page.jsx              # DMCA compliance
β”œβ”€β”€ components/                   # React components
β”‚   β”œβ”€β”€ NavBar.tsx                # Navigation component
β”‚   β”œβ”€β”€ Footer.jsx                # Footer component
β”‚   β”œβ”€β”€ VideoGrid.tsx             # Video grid display
β”‚   β”œβ”€β”€ ImageGrid.tsx             # Image grid display
β”‚   β”œβ”€β”€ HLSVideoPlayer.tsx        # Custom HLS video player
β”‚   β”œβ”€β”€ authModel.jsx             # Authentication modal
β”‚   β”œβ”€β”€ UploadModal.jsx           # Upload modal component
β”‚   β”œβ”€β”€ ProfileVideoGrid.jsx      # Profile video grid
β”‚   β”œβ”€β”€ ProfileImageGrid.jsx      # Profile image grid
β”‚   β”œβ”€β”€ SubscriptionGrid.jsx      # Subscription content grid
β”‚   └── Types.ts                  # TypeScript type definitions
β”œβ”€β”€ hooks/                        # Custom React hooks
β”‚   └── useUserAvatar.js          # Avatar management hook
β”œβ”€β”€ lib/                          # Utility libraries
β”œβ”€β”€ public/                       # Static assets
β”œβ”€β”€ Backend/                      # Server application
β”‚   β”œβ”€β”€ server.js                 # Main server entry point
β”‚   β”œβ”€β”€ package.json              # Backend dependencies
β”‚   β”œβ”€β”€ .env                      # Environment variables
β”‚   β”œβ”€β”€ temp/                     # Temporary file storage
β”‚   β”œβ”€β”€ models/                   # Database models
β”‚   β”‚   β”œβ”€β”€ User.js               # User schema
β”‚   β”‚   β”œβ”€β”€ Video.js              # Video schema
β”‚   β”‚   β”œβ”€β”€ Image.js              # Image schema
β”‚   β”‚   β”œβ”€β”€ Comment.js            # Comment schema
β”‚   β”‚   β”œβ”€β”€ Report.js             # Report schema
β”‚   β”‚   β”œβ”€β”€ PendingUser.js        # Email verification schema
β”‚   β”‚   β”œβ”€β”€ PendingPasswordReset.js # Password reset schema
β”‚   β”‚   └── index.js              # Model exports
β”‚   β”œβ”€β”€ utils/                    # Utility functions
β”‚   β”‚   └── emailUtils.js         # Email sending utilities
β”‚   └── routes/                   # API endpoints
β”‚       β”œβ”€β”€ check.js              # Health check
β”‚       β”œβ”€β”€ signin.js             # User login
β”‚       β”œβ”€β”€ signup.js             # User registration
β”‚       β”œβ”€β”€ verify.js             # Email verification
β”‚       β”œβ”€β”€ resetPass.js          # Password reset request
β”‚       β”œβ”€β”€ resetVerify.js        # Password reset verification
β”‚       β”œβ”€β”€ resetDone.js          # Password reset completion
β”‚       β”œβ”€β”€ resend.js             # Resend verification email
β”‚       β”œβ”€β”€ googleAuth.js         # Google OAuth authentication
β”‚       β”œβ”€β”€ uploadVideo.js        # Video upload & processing
β”‚       β”œβ”€β”€ uploadImage.js        # Image upload & processing
β”‚       β”œβ”€β”€ content.js            # Content retrieval
β”‚       β”œβ”€β”€ video.js              # Video streaming (HLS)
β”‚       β”œβ”€β”€ image.js              # Image serving
β”‚       β”œβ”€β”€ comments.js           # Comment system
β”‚       β”œβ”€β”€ interactions.js       # Likes/subscriptions
β”‚       β”œβ”€β”€ search.js             # Search functionality
β”‚       β”œβ”€β”€ profile.js            # User profiles
β”‚       β”œβ”€β”€ updateAvatar.js       # Profile avatar updates
β”‚       β”œβ”€β”€ updateBio.js          # Profile bio updates
β”‚       β”œβ”€β”€ updateUsername.js     # Username updates
β”‚       β”œβ”€β”€ recommended.js        # Content recommendations
β”‚       β”œβ”€β”€ related.js            # Related content
β”‚       β”œβ”€β”€ discover.js           # Content discovery
β”‚       β”œβ”€β”€ discoverImages.js     # Image discovery
β”‚       β”œβ”€β”€ reports.js            # Content reporting
β”‚       β”œβ”€β”€ content.js            # Content deletion
β”‚       β”œβ”€β”€ user.js               # User deletion
β”‚       β”œβ”€β”€ youtubeDown.js        # YouTube content download
β”‚       └── youtubeUpload.js      # YouTube content processing
β”œβ”€β”€ config.json                   # Frontend configuration
β”œβ”€β”€ LICENSE                       # MIT License
β”œβ”€β”€ package.json                  # Frontend dependencies
β”œβ”€β”€ tsconfig.json                 # TypeScript configuration
β”œβ”€β”€ tailwind.config.ts            # Tailwind CSS configuration
β”œβ”€β”€ next.config.ts                # Next.js configuration
β”œβ”€β”€ eslint.config.mjs             # ESLint configuration
β”œβ”€β”€ postcss.config.mjs            # PostCSS configuration
β”œβ”€β”€ next-env.d.ts                 # Next.js type definitions
β”œβ”€β”€ .gitignore                    # Git ignore rules
└── README.md                     # Project documentation

πŸ—οΈ Architecture

Video Streaming

Lumeroo includes a custom self-hosted video streaming solution built into the backend with HLS (HTTP Live Streaming) support. You can easily replace this with your preferred video hosting service (Cloudflare Stream, AWS S3, etc.) by modifying the upload and streaming endpoints.

Tech Stack

  • Frontend: Next.js 15, TypeScript, Tailwind CSS
  • Backend: Node.js, Hono framework, MongoDB
  • Authentication: JWT with email verification
  • Video Streaming: Custom HLS implementation with FFmpeg processing

🎯 API Overview (just a few important ones)

Authentication

  • POST /api/signin - User login
  • POST /api/signup - User registration
  • POST /api/verify - Email verification

Content

  • POST /api/uploadVideo - Upload video
  • POST /api/uploadImage - Upload images
  • GET /api/content/:slug - Get content
  • GET /api/video/:id - Stream video

Social Features

  • GET /api/comments/:type/:id - Get comments
  • POST /api/interactions/toggle-like - Like content
  • POST /api/interactions/subscribe - Subscribe to users

πŸ› οΈ Customization

Video Streaming

The default implementation uses a custom backend streaming solution. To use external services:

  1. Replace upload endpoints in Backend/routes/uploadVideo.js
  2. Update streaming logic in Backend/routes/video.js
  3. Modify frontend player in app/watch/page.tsx

Styling

  • Theme colors: Edit tailwind.config.ts
  • Global styles: Modify app/globals.css

🀝 Contributing

We welcome contributions from the community! Here's how you can help:

Development Setup

  1. Fork the repository and clone your fork
  2. Create a feature branch from main
    git checkout -b feature/your-feature-name
  3. Make your changes following our coding standards
  4. Test your changes thoroughly
  5. Commit with clear messages
    git commit -m "feat: add new feature description"
  6. Push and create a Pull Request

Coding Standards

  • ESLint - Follow the existing linting rules
  • TypeScript - Use proper type annotations
  • Commit Messages - Use conventional commits (feat:, fix:, docs:, etc.)
  • Code Style - Match the existing code formatting

Areas for Contribution

  • πŸ› Bug Fixes - Report and fix issues
  • ✨ Features - Add new functionality
  • πŸ“š Documentation - Improve guides and comments
  • 🎨 UI/UX - Enhance design and user experience
  • ⚑ Performance - Optimize code and loading times
  • πŸ§ͺ Testing - Add unit and integration tests

Pull Request Guidelines

  • Ensure your PR has a clear title and description
  • Reference any related issues
  • Include screenshots for UI changes
  • Update documentation if needed
  • Make sure all tests pass

πŸ“„ License

MIT License - see LICENSE for details.


Built with ❀️ for the community

⭐ Star this project

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published