- 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
- Node.js 18.0 or higher
- MongoDB database
- SMTP server (for emails)
-
Clone and install dependencies
git clone https://github.com/Lumeroo/lumeroo.git cd lumeroo npm install cd Backend && npm install && cd ..
-
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
-
Start development servers
# Terminal 1 - Backend cd Backend && npm run dev # Terminal 2 - Frontend npm run dev
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
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.
- 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
POST /api/signin
- User loginPOST /api/signup
- User registrationPOST /api/verify
- Email verification
POST /api/uploadVideo
- Upload videoPOST /api/uploadImage
- Upload imagesGET /api/content/:slug
- Get contentGET /api/video/:id
- Stream video
GET /api/comments/:type/:id
- Get commentsPOST /api/interactions/toggle-like
- Like contentPOST /api/interactions/subscribe
- Subscribe to users
The default implementation uses a custom backend streaming solution. To use external services:
- Replace upload endpoints in
Backend/routes/uploadVideo.js
- Update streaming logic in
Backend/routes/video.js
- Modify frontend player in
app/watch/page.tsx
- Theme colors: Edit
tailwind.config.ts
- Global styles: Modify
app/globals.css
We welcome contributions from the community! Here's how you can help:
- Fork the repository and clone your fork
- Create a feature branch from
main
git checkout -b feature/your-feature-name
- Make your changes following our coding standards
- Test your changes thoroughly
- Commit with clear messages
git commit -m "feat: add new feature description"
- Push and create a Pull Request
- 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
- π 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
- 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
MIT License - see LICENSE for details.
Built with β€οΈ for the community