Skip to content

Commit

Permalink
Initial commit.
Browse files Browse the repository at this point in the history
  • Loading branch information
FireMasterK committed Feb 6, 2021
1 parent 2538024 commit 5e6ab2a
Show file tree
Hide file tree
Showing 14 changed files with 182 additions and 1 deletion.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Hugo default output directory
/public

/resources
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "themes/hugo-whisper-theme"]
path = themes/hugo-whisper-theme
url = https://github.com/zerostaticthemes/hugo-whisper-theme.git
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
# Documentation
# Documentation

Documentation on the core architecture of Piped and it's backend.
6 changes: 6 additions & 0 deletions archetypes/default.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

10 changes: 10 additions & 0 deletions archetypes/docs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: "{{ replace .TranslationBaseName "-" " " | title }}"
date: {{ .Date }}
draft: false
weight: 100
---

Lorem markdownum aequalis strigis. Saetigeri iubeas, vultu huic alvum nondum
de obside ut laniavit arbor palmis, cum quin. Rupes vetat videndo, armigerae
crimen habet Priamum nec.
48 changes: 48 additions & 0 deletions config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
baseURL = "piped-docs.kavin.rocks"
languageCode = "en-us"
title = "Piped"
themesDir = "themes"
theme = "hugo-whisper-theme"

pygmentsCodeFences = true
pygmentsCodefencesGuessSyntax = true
pygmentsUseClasses = true

# Controls how many words are printed in the content summary on the docs homepage.
# See https://gohugo.io/content-management/summaries/
summaryLength = 30

[[menu.main]]
name = "Home"
url = "/"
weight = 1

[[menu.main]]
name = "Docs"
url = "/docs/"
weight = 2

[params]
google_analytics_id=""
homepage_button_link = '/docs'
homepage_button_text = 'Read The Docs'
homepage_intro = 'Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design.'
homepage_image = '/images/banner.webp'

## You can enable to add anchor links to header elements
# enable_anchor_link = true

[params.homepage_meta_tags]
meta_description = "Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design."
meta_og_title = "Piped"
meta_og_type = "website"
meta_og_url = "https://piped-docs.kavin.rocks"
meta_og_image = "https://avatars.githubusercontent.com/u/74294114?s=250"
meta_og_description = "Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design."
meta_twitter_card = "summary"
meta_twitter_site = ""
meta_twitter_creator = ""

[params.logo]
mobile = "/images/logo.svg"
standard = "/images/logo.svg"
5 changes: 5 additions & 0 deletions content/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
title: 'Piped'
---

Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design.
8 changes: 8 additions & 0 deletions content/docs/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: 'Overview'
weight: 1
---

## Piped

Welcome to the Documentation of Piped.
41 changes: 41 additions & 0 deletions content/docs/architecture/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
title: 'Architecture'
weight: 4
summary: What is Piped architectured?
---

## What is Piped's architecture?

Piped has 3 components:

- A frontend in VueJS
- A backed in Java which uses NewPipeExtractor
- A proxy in Golang

links: https://github.com/TeamPiped/Piped\, https://github.com/TeamPiped/Piped-Backend and, https://github.com/FireMasterK/http3-ytproxy

## Frontend
- Uses videojs
- Uses a router for a single page application.

## Backend
- Uses Java 11
- Uses the native HTTP client introduced in Java 9
- Uses netty-reactor to acheive maximum performance and a low footprint.
- Supports OpenJ9
- Each running instance should configure their own proxy, thus allowing multi-gigabit content delivery.
- Uses ~70-130 MB of ram. (on OpenJ9)

# Proxy
- Uses Golang
- Has HTTP/2 support. (HTTP/3 is unstable in the current library)
- Low memory footprint and high throughput.
- Can be used to replace the proxy in various other frontends.

# Server-Side Caching

Caching is done at a Reverse-Proxy/CDN level to reduce the load to the backend. This also makes it more scalable.

# LBRY

LBRY streams are automatically added to stream content via LBRY if the same video is available there.
52 changes: 52 additions & 0 deletions content/docs/why/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
title: 'Why'
weight: 4
summary: Why did I create Piped?
---

## Why did I create Piped?

YouTube has an extremely invasive privacy policy which relies on using user data in unethical ways.

Here are some things about YouTube:

- Tracking via third-party cookies for other purposes without your consent.
- YouTube can delete your content if you violate the terms
- Reduction of legal period for cause of action
- YouTube may use your personal information for marketing purposes
- YouTube can view your browser history
- YouTube can use your content for all their existing and future services
- YouTube gathers information about you through third parties
- YouTube can license user content to third parties
- YouTube provider makes no warranty regarding uninterrupted, timely, secure or error-free service
- Deleted videos are not really deleted
- Your data may be processed and stored anywhere in the world
- YouTube is only available to users over a certain age
- YouTube can suspend your account for several reasons
- YouTube has non-exclusive use of your content
- The court of law governing the terms is in the US
- YouTube collects your IP address for location use

Source: https://tosdr.org/en/service/274

A lot of inspiration came from NewPipe and Invidious.

I created Piped to fix issues in NewPipe and Invidious which are architectural issues and cannot be fixed easily.

### NewPipe
- Your IP is exposed to YouTube.
- Feeds are slow to load.

### Invidious
- Uses way too much resources.
- Total bandwidth limited by the peak capacity of the load balancer.
- Coded in Crystal, a language that is relatively hard for beginners.
- Caching is done at a backend level.
- Invidious was a learning project.
- Invidious crashes all the time.
- Various hacks are required to keep an instance running at a reasonable stablity.

However, there are some drawbacks of Piped:

- JavaScript is required
- Browsers without Service-Workers support will feel significantly slower. Eg: Tor Browser
Binary file added static/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/banner.webp
Binary file not shown.
1 change: 1 addition & 0 deletions static/images/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions themes/hugo-whisper-theme
Submodule hugo-whisper-theme added at 6638af

0 comments on commit 5e6ab2a

Please sign in to comment.