diff --git a/README.md b/README.md index 7e688f96..04b6d179 100644 --- a/README.md +++ b/README.md @@ -37,28 +37,23 @@ Stallman though poke was GNU poke lmaoooo License - GPL-3 - - - - +![Preview](./css/README_Preview.png) + ## Welcome! This is the source code of Poke (formerly PokeTube), the privacy-friendly youtube front-end built with the InnerTube API! +# Features -

Features

-

Return Youtube Dislikes Built-in

- -

See the dislikes from returnyoutubedislike!

+| |

Return YouTube Dislikes Built-In

Dislikes are viewable thanks to the Return YouTube Dislikes API.
| +| - | - | +|

PWA Support

With PWA Support, you can install Poke on your mobile device.
| |

Customize

Customize Poketube However you want :3 -

PWA

-Install PokeTube as a pwa on your mobile device :3 -

Accounts

Suscribe (yes Suscribe hehe sussy baka) to whaever channel you want! @@ -89,28 +84,50 @@ PLEASE NOTE THAT THIS SOFTWARE MAY INCULUDE CODECS THAT IN CERTAIN COUNTRIES MAY Before you host, if ur server is in usa, set the proxylocation to `USA` (which is the default) - if you use any eu server set it to `EU` instead to make videos load faster ### With NodeJS -- To self host your own Poke instance, you'll need the following: +To self host your own Poke instance, you'll need some packages installed on your Linux install. - - [Node.js](https://nodejs.org/en/download/) - - [npm](http://npmjs.com) (Included with Node.js) +
+For Fedora/RHEL/Rocky/CentOS +
+ +``` +sudo dnf install git make gcc libcurl nodejs python libcurl4 g++ +``` + +
+ +
+For Debian/Ubuntu +
+ +``` +sudo apt install git make gcc libcurl4-openssl-dev nodejs npm python g++ +``` + +
+
Once you have everything, clone our repo: +
+Clone via Codeberg +
+ ``` git clone https://codeberg.org/ashley/poke.git ``` -You can also clone using our Github mirror if you'd prefer: +
+
+Clone via GitHub +
``` git clone https://github.com/ashley0143/poke.git ``` -Or you can use our forgejo instance: - -``` -git clone https://git.poketube.fun/ashley/poke.git -``` +
+
Now, install the needed dependencies within the Poke folder: ( go to the folder by running cd poke) diff --git a/css/Poke-Mobile.jpg b/css/Poke-Mobile.jpg new file mode 100644 index 00000000..aad437a4 Binary files /dev/null and b/css/Poke-Mobile.jpg differ diff --git a/css/README_PWA.jpg b/css/README_PWA.jpg new file mode 100644 index 00000000..cc2605d8 Binary files /dev/null and b/css/README_PWA.jpg differ diff --git a/css/README_Preview.png b/css/README_Preview.png new file mode 100644 index 00000000..ef42e7b7 Binary files /dev/null and b/css/README_Preview.png differ diff --git a/css/README_RYD.png b/css/README_RYD.png new file mode 100644 index 00000000..f03d3f71 Binary files /dev/null and b/css/README_RYD.png differ diff --git a/css/landing.css b/css/landing.css index 6d2a8873..29bb81c8 100644 --- a/css/landing.css +++ b/css/landing.css @@ -719,76 +719,12 @@ li > a {cursor: var(--pointer-cursor)} .btn {cursor: var(--pointer-cursor) !important} @font-face { - font-family: "PokeTube Flex"; src: url("https://p.poketube.fun/https://cdn.glitch.global/43b6691a-c8db-41d4-921c-8cf6aa0d9108/robotoflex.ttf?v=16683434286881"); + font-family: "PokeTube Flex"; font-style: normal; font-stretch: 1% 800%; font-display: swap; } -blockquote { - background: #f2dda8; - margin: 0; - padding: 6px 12px; - border-radius: 4px; - color: #000; - position: sticky; - top: 12px; - z-index: 5; -} -.header-content { - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; - height: 100px; -} -.header-content-start img { - width: 140px; -} -.header-content-end a { - color: #fff; - padding: 10px 12px; - border-radius: 50px; -} -.header-content-end a:hover { - background: #ffffff2e; -} -#fname { - background: #331a22; - border: 2px #612153 solid; - padding: 8px 16px; - border-radius: 24px; - color: #fff; - margin-right: 6px; -} -#fname:focus { - outline: 0; -} -button[type="submit"] { - color: #fff; - background: #331a22; - border: 2px #612153 solid; - border-radius: 24px; - padding: 8px 10px; - cursor: var(--pointer-cursor); -} -button[type="submit"]:hover { - background: #ffffff2e; -} -.footer { - border-top: 1px #ffffff1f solid; - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; - height: 100px; - margin-top: auto; -} -.footer a { - color: #fff; - margin-left: 12px; - text-decoration: none; -} @media only screen and (max-width: 1328px) { body { padding: 0 48px !important; @@ -823,20 +759,20 @@ button[type="submit"]:hover { } } .landing { - text-align: center; margin: auto; + position: relative; + margin-top: 240px; + max-width: 1200px; } .landing h1 { font-size: xxx-large; font-family: "PokeTube flex"; font-stretch: ultra-expanded; font-weight: 1000; - text-align: center; } .landing img { - width: 100%; margin-top: 48px; - height: 700px; + height: 503px; object-fit: cover; object-position: top; mask-image: linear-gradient(#5315ff,#0000); @@ -854,7 +790,6 @@ button[type="submit"]:hover { } .features { display: flex; - justify-content: center; } .features p { border-radius: 48px; @@ -870,6 +805,53 @@ button[type="submit"]:hover { border-radius: 24px; margin: -10px 10px -10px -24px; } + +img[src="/static/poke-chan-outfit-a.png"] { + height: 400px; + width: 369px; + mask-image: none; + z-index: 5; + transform: scaleX(1); + float: right; + display: flex; + position: absolute; + right: 10px; + margin: -237px -60px 0px 0px; +} + +.new-feature-set { + display: grid; + margin: 54px 0px 24px 0px; + max-width: 1200px; + grid-template-columns: repeat(auto-fit,minmax(350px,1fr)); + text-align: left; +} +.feature-set { + padding: 32px; +} +.feature-set p { + text-align: left; +} + +.feature-set svg { + width: 32px; + height: 32px; + border-radius: 5rem; + padding: 6px; +} +.feature-set-title { + display: flex; + align-items: center; + gap: 12px; + justify-content: left; +} +.feature-set-title h2 { + font-family: "PokeTube flex"; + font-stretch: ultra-expanded; + font-weight: 1000; + margin: 0px; +} + @media only screen and (max-width: 1420px) { .landing { width: calc(100% - 24px); @@ -911,3 +893,12 @@ video { display: none; } } + + +.adaptive-grid { + display: grid; + grid-template-columns: repeat(auto-fit,minmax(350px,1fr)); + max-width: 1200px; + margin: auto; + grid-gap: 12px; +} diff --git a/css/product.svg b/css/product.svg deleted file mode 100644 index 133834f9..00000000 --- a/css/product.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/html/landing.ejs b/html/landing.ejs index c91c57fa..67ad836a 100644 --- a/html/landing.ejs +++ b/html/landing.ejs @@ -2,7 +2,7 @@ This Source Code Form is subject to the terms of the GNU General Public License: - Copyright (C) 2021-2024 POKETUBE (https://codeberg.org/Ashley/poketube) + Copyright (C) 2021-2024 Poke (https://codeberg.org/Ashley/poke) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,6 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/. ---> + @@ -29,6 +30,7 @@ + @@ -84,28 +86,10 @@ + <%- include('./partials/header.ejs') %> -
-
- -
-
-
-
- - - -
-
-
-
+

The Ultimate Privacy App

-

Be Anonymous watching epic videos, searching +

Be Anonymous watching epic videos, searching thingys on the interwebs and listening to music on poketube - the free yt front end thats focused on ur privacy!! -

-
-

No Tracking & Ads

-

Very Fast

-

Built-in video downloader

-

Web Search

+


+ Help & Support Palestine - Donate to Ukraine + + +
+ + +
+ + +
+
+
+ +

No Tracking and Ads

+
+

Poke Has no Trackers or ads - we dont and we wont see the vids ur watching :3

+
+
+
+ +

Very Fast

+
+

Poke is really ligthweight (both on server and client :3) so you can still use it on poor connections :3

+
+
+
+ +

Downloader

+
+

You wouldnt download a car - welp i would :D u can download videos from poke for 0$!

+
+
+
+ +

Web Search

+
+

u can search the interwebs for anything that u wan!! (ik wha ur gonna search :p)

+
+
+
+ +

DRM Free

+
+

Poke comes without digital restrictions management - poke is free software :3

+
+
+
+ +

Games Included

+
+

U can play funnie games on poke!

+
+
+ +
+ <%- include('./partials/card', + icon_background='transparent', + icon="none", + title='Join Us', + description='join our community if you want to! :3', + actions='true', + + has_secondary_action='true', + secondary_icon='', + secondary_text='Revolt', + secondary_link='https://rvlt.gg/poketube', + + primary_icon='', + primary_text='Matrix', + primary_link='https://matrix.to/#/%23poke:vern.cc' + )%> + + <%- include('./partials/card', + icon_background='transparent', + icon="none", + title='Free and libre', + description='Poke is free and libre software! u can view, edit and redistribute under GNU GPL 3 or later :3', + actions='true', + + has_secondary_action='true', + secondary_icon='', + secondary_text='GitHub', + secondary_link='https://github.com/ashley0143/poke', + + primary_icon='Codeberg logo', + primary_text='Codeberg', + primary_link='https://codeberg.org/ashley/poke' + )%>
- - - \ No newline at end of file diff --git a/html/partials/header.ejs b/html/partials/header.ejs new file mode 100644 index 00000000..78d10a8c --- /dev/null +++ b/html/partials/header.ejs @@ -0,0 +1,154 @@ + + + + + + + + +
+
+
+ + +

<%- random %>

+
+ <% if (secure) { %> + + <% } %> + <% if (verify) { %> + + <% } %> +
+
+
+ + +
+
+
+ + + Account +
+
+
+ + \ No newline at end of file diff --git a/src/libpoketube/init/pages-404-and-main.js b/src/libpoketube/init/pages-404-and-main.js index 1fa51b42..123197d9 100644 --- a/src/libpoketube/init/pages-404-and-main.js +++ b/src/libpoketube/init/pages-404-and-main.js @@ -117,12 +117,24 @@ module.exports = function (app, config, renderTemplate) { const browser = req.useragent.browser; const isOldWindows = (uaos === "Windows 7" || uaos === "Windows 8") && browser === "Firefox"; + const secure = [ + "poketube.fun", + "localhost" // Testing purposes + ].includes(req.hostname); + const verify = [ + "poketube.fun", + "poke.ashley0143.xyz", + "localhost" + ].includes(req.hostname); + const rendermainpage = () => { if (req.useragent.isMobile) { return res.redirect("/app"); } return renderTemplate(res, req, "landing.ejs", { + secure, + verify, isOldWindows, random });