Skip to content

Latest commit

 

History

History
169 lines (143 loc) · 7.11 KB

File metadata and controls

169 lines (143 loc) · 7.11 KB

Endless

CI/CD License CLA assistant Issues

Endless is an open-source distributed video hosting platform focused on high-performance and fairness for content creators and viewers, providing an easy environment for building an audience and privacy for all users of this platform. Learn more about Endless.

Why Endless?

YouTube has become a corporate monolith focused on advertising and data collection. Endless was created to make it easy for viewers to watch what they love and for content creators to grow. Endless is built on transparency, fairness, and performance. ​

  • No Shadowbans: We don’t use hidden suppression. Whether you edit or re-upload your content, your reach remains organic and predictable: Learn more about Banning Policy.
  • Opt-in Advertising: No forced ads that ruin the viewing experience. If a promotion isn't relevant to you, skip it instantly: Learn more about Advertising Policy.
  • Privacy by Design: We collect only what is strictly necessary for the platform to function. We never sell your information to third-party brokers: Learn more about Privacy Policy.
  • Creator-First Revenue: Endless offers a disruptive 50% to 90% revenue share for creators, compared to the industry standard: Learn more about Monetization.
  • Community-Led Evolution: Endless is open to the world. Any developer can contribute to the core, and every user has a voice in reporting issues or suggesting changes: Learn more about contributing.
  • Radical Transparency (The Endless Wiki): No "black box" algorithms. Our Wikipedia-style documentation allows anyone to see how our systems work-from Vector Embeddings to ranking logic.

Core Infrastructure

Endless is engineered for high availability and low latency, utilizing a modern distributed stack:

  • Asynchronous Video Processing: Leveraging FFmpeg and RabbitMQ to handle multi-resolution encoding (HLS/m3u8) without blocking the main API.
  • Hybrid Data Layer: High-performance data access using Dapper for read-heavy operations and Entity Framework Core for complex domain logic.
  • Recommendation: A personalized video ranking system based on vector similarity using custom Preference Engine
  • Searching: Advanced content filtering and users/channels discovery using Elasticsearch (edge-ngram, ngram).
  • Real-time Engagement: Instant notifications and live interactions powered by SignalR.

Tech Stack

  • Backend: ASP.NET Core (.NET)
  • Database: PostgreSQL, Elasticsearch
  • Messaging: RabbitMQ
  • Media: FFmpeg
  • Testing: xUnit
  • DevOps: CI, Docker Compose

How to run

1. Clone repo:

git clone https://github.com/woolction/endless

cd endless

2. Create .env:

DB_USER=postgres
DB_PASSWORD=password
DB_NAME=endless

SecretKey=64 bytes of random numbers
Issuer=Endless
Audience=EndlessUsers
ExpireMinutes=30

3. Obtain a license:

obtain a license (community) from SixLabors and put in root for ImageSharp or change version to 3.1.11 in Domain.csproj

from => 
  <PackageReference Include="SixLabors.ImageSharp" Version="4.0.0" />
to =>
  <PackageReference Include="SixLabors.ImageSharp" Version="3.1.11" />

4. Start Docker compose:

docker compose up --build

5. Open API

- api docs: http://localhost:5000/scalar/v1

- main: http://localhost:5000
- upload video: http://localhost:5000/upload.html
- watch videos: http://localhost:5000/watch.html

Project structure

endless/
│
├── src/
│   ├── API/                
│   │   ├── Controllers/
│   │   ├── Extensions/       
│   │   ├── Middlewares/
│   │   ├── Properties/       
│   │   ├── wwwroot/          
│   │   ├── appsettings.json
│   │   ├── API.csproj
│   │   └── Program.cs
│   │
│   ├── Application/        
│   │   ├── Contents/
│   │   │   ├── Choose/
│   │   │   │   ├── Query.cs
│   │   │   └── Create/
│   │   │       ├── Command.cs
│   │   │       ├── Handler.cs
│   │   │       ├── Request.cs
│   │   │       └── Publisher.cs
│   │   ├── .../
│   │   ├── Utilities/
│   │   ├── Application.csproj
│   │   ├── AppMaker.cs
│   │   └── Result.cs
│   │ 
│   ├── Domain/         
│   │   ├── Common/
│   │   │   ├── Enums/
│   │   │   └── Interfaces/
│   │   ├── Entities/
│   │   ├── Rows/
│   │   └── Domain.csproj
│   │
│   └── Infrastructure/      
│       ├── Connector/
│       ├── Contexts/
│       ├── Managers/
│       ├── Repositories/
│       ├── Services/
│       │   ├── Background/
│       │   └── RabbitConsumers/
│       └── Infrastructure.csproj
│
├── tests/
│   ├── test-files...
│   └── tests.csproj
│
├── docker/
│   └── Dockerfile
│
├── .github/
│   ├── workflows/
│   └── FUNDING.yml
│
├── docker-compose.yml
├── .gitignore
├── CONTRIBUTING.md
├── PROMOTION.md
├── LICENSE.md
├── README.md
└── Endless.slnx

Supporting

Endless is built and maintained int the free time of creator and contributors. The most effective way to support the project is to share your time and experience.

The primary ways to help are to:

  1. Contributing: Contribute features and fixing bugs, please read the Contributing Rules and how best to contribute to development before making your first pull request.
  2. Promotion: Want to help us grow? Check out our Promotion Guide We need people who can create hype around the project.
  3. Issues: Find bugs and report them as described in Contributing Rules or come up with new features

If you want to support the project, you can do so via GitHub Sponsors or Ko-fi or DonationAlerts we would be very happy with even a very small payment

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). For more details, see the LICENSE file.

Copyright © 2026 Woolction.