Compare commits

..

No commits in common. "6df6b5f1037d4220989f5f28022126a5a293bd5e" and "3aa238ddbfcfb320fd7464c6b8288ec43cff5bf8" have entirely different histories.

10 changed files with 138 additions and 209 deletions

View file

@ -5,6 +5,7 @@ import keystatic from '@keystatic/astro';
import node from '@astrojs/node'; import node from '@astrojs/node';
import robotsTxt from 'astro-robots-txt'; import robotsTxt from 'astro-robots-txt';
import mdx from '@astrojs/mdx'; import mdx from '@astrojs/mdx';
import matomo from 'astro-matomo';
import vue from "@astrojs/vue"; import vue from "@astrojs/vue";
// https://astro.build/config // https://astro.build/config
@ -18,7 +19,22 @@ export default defineConfig({
}, },
integrations: [markdoc(), ...(process.env.SKIP_KEYSTATIC ? [] : [keystatic()]), AutoImport({ integrations: [markdoc(), ...(process.env.SKIP_KEYSTATIC ? [] : [keystatic()]), AutoImport({
imports: ['./src/components/keystatic/Image.astro', './src/components/init/SoftwareItem.astro'] imports: ['./src/components/keystatic/Image.astro', './src/components/init/SoftwareItem.astro']
}), mdx(), robotsTxt({ }), mdx(),
// This must initalzied after AutoImport, not before
matomo({
enabled: import.meta.env.PROD,
// Only load in production
host: "https://stats.sudovanilla.org/",
setCookieDomain: "*.sudovanilla.org",
trackerUrl: "js/",
// defaults to matomo.php
srcUrl: "js/",
// defaults to matomo.js
siteId: 1,
heartBeatTimer: 5,
disableCookies: true,
debug: false
}), robotsTxt({
policy: [{ policy: [{
userAgent: 'Googlebot', userAgent: 'Googlebot',
disallow: '/' disallow: '/'

BIN
bun.lockb

Binary file not shown.

106
movies.json Normal file
View file

@ -0,0 +1,106 @@
[
{
"id": 2,
"title": "Ariel",
"overview": "Taisto Kasurinen is a Finnish coal miner whose father has just committed suicide and who is framed for a crime he did not commit. In jail, he starts to dream about leaving the country and starting a new life. He escapes from prison but things don't go as planned...",
"genres": ["Drama", "Crime", "Comedy"],
"poster": "https://image.tmdb.org/t/p/w500/ojDg0PGvs6R9xYFodRct2kdI6wC.jpg",
"release_date": 593395200
},
{
"id": 5,
"title": "Four Rooms",
"overview": "It's Ted the Bellhop's first night on the job...and the hotel's very unusual guests are about to place him in some outrageous predicaments. It seems that this evening's room service is serving up one unbelievable happening after another.",
"genres": ["Crime", "Comedy"],
"poster": "https://image.tmdb.org/t/p/w500/75aHn1NOYXh4M7L5shoeQ6NGykP.jpg",
"release_date": 818467200
},
{
"id": 6,
"title": "Judgment Night",
"overview": "While racing to a boxing match, Frank, Mike, John and Rey get more than they bargained for. A wrong turn lands them directly in the path of Fallon, a vicious, wise-cracking drug lord. After accidentally witnessing Fallon murder a disloyal henchman, the four become his unwilling prey in a savage game of cat & mouse as they are mercilessly stalked through the urban jungle in this taut suspense drama",
"genres": ["Action", "Thriller", "Crime"],
"poster": "https://image.tmdb.org/t/p/w500/rYFAvSPlQUCebayLcxyK79yvtvV.jpg",
"release_date": 750643200
},
{
"id": 11,
"title": "Star Wars",
"overview": "Princess Leia is captured and held hostage by the evil Imperial forces in their effort to take over the galactic Empire. Venturesome Luke Skywalker and dashing captain Han Solo team together with the loveable robot duo R2-D2 and C-3PO to rescue the beautiful princess and restore peace and justice in the Empire.",
"genres": ["Adventure", "Action", "Science Fiction"],
"poster": "https://image.tmdb.org/t/p/w500/6FfCtAuVAW8XJjZ7eWeLibRLWTw.jpg",
"release_date": 233366400
},
{
"id": 12,
"title": "Finding Nemo",
"overview": "Nemo, an adventurous young clownfish, is unexpectedly taken from his Great Barrier Reef home to a dentist's office aquarium. It's up to his worrisome father Marlin and a friendly but forgetful fish Dory to bring Nemo home -- meeting vegetarian sharks, surfer dude turtles, hypnotic jellyfish, hungry seagulls, and more along the way.",
"genres": ["Animation", "Family"],
"poster": "https://image.tmdb.org/t/p/w500/eHuGQ10FUzK1mdOY69wF5pGgEf5.jpg",
"release_date": 1054252800
},
{
"id": 13,
"title": "Forrest Gump",
"overview": "A man with a low IQ has accomplished great things in his life and been present during significant historic events—in each case, far exceeding what anyone imagined he could do. But despite all he has achieved, his one true love eludes him.",
"genres": ["Comedy", "Drama", "Romance"],
"poster": "https://image.tmdb.org/t/p/w500/h5J4W4veyxMXDMjeNxZI46TsHOb.jpg",
"release_date": 773452800
},
{
"id": 14,
"title": "American Beauty",
"overview": "Lester Burnham, a depressed suburban father in a mid-life crisis, decides to turn his hectic life around after developing an infatuation with his daughter's attractive friend.",
"genres": ["Drama"],
"poster": "https://image.tmdb.org/t/p/w500/wby9315QzVKdW9BonAefg8jGTTb.jpg",
"release_date": 937353600
},
{
"id": 15,
"title": "Citizen Kane",
"overview": "Newspaper magnate, Charles Foster Kane is taken from his mother as a boy and made the ward of a rich industrialist. As a result, every well-meaning, tyrannical or self-destructive move he makes for the rest of his life appears in some way to be a reaction to that deeply wounding event.",
"genres": ["Mystery", "Drama"],
"poster": "https://image.tmdb.org/t/p/w500/zO5OI25cieQ6ncpvGOD4U72vi1o.jpg",
"release_date": -905990400
},
{
"id": 16,
"title": "Dancer in the Dark",
"overview": "Selma, a Czech immigrant on the verge of blindness, struggles to make ends meet for herself and her son, who has inherited the same genetic disorder and will suffer the same fate without an expensive operation. When life gets too difficult, Selma learns to cope through her love of musicals, escaping life's troubles - even if just for a moment - by dreaming up little numbers to the rhythmic beats of her surroundings.",
"genres": ["Drama", "Crime"],
"poster": "https://image.tmdb.org/t/p/w500/9rsivF4sWfmBzrNr4LPu6TNJhXX.jpg",
"release_date": 958521600
},
{
"id": 17,
"title": "The Dark",
"overview": "Adèle and her daughter Sarah are traveling on the Welsh coastline to see her husband James when Sarah disappears. A different but similar looking girl appears who says she died in a past time. Adèle tries to discover what happened to her daughter as she is tormented by Celtic mythology from the past.",
"genres": ["Horror", "Thriller", "Mystery"],
"poster": "https://image.tmdb.org/t/p/w500/wZeBHVnCvaS2bwkb8jFQ0PwZwXq.jpg",
"release_date": 1127865600
},
{
"id": 18,
"title": "The Fifth Element",
"overview": "In 2257, a taxi driver is unintentionally given the task of saving a young girl who is part of the key that will ensure the survival of humanity.",
"genres": ["Adventure", "Fantasy", "Action", "Thriller", "Science Fiction"],
"poster": "https://image.tmdb.org/t/p/w500/fPtlCO1yQtnoLHOwKtWz7db6RGU.jpg",
"release_date": 862531200
},
{
"id": 19,
"title": "Metropolis",
"overview": "In a futuristic city sharply divided between the working class and the city planners, the son of the city's mastermind falls in love with a working class prophet who predicts the coming of a savior to mediate their differences.",
"genres": ["Drama", "Science Fiction"],
"poster": "https://image.tmdb.org/t/p/w500/hUK9rewffKGqtXynH5SW3v9hzcu.jpg",
"release_date": -1353888000
},
{
"id": 20,
"title": "My Life Without Me",
"overview": "A fatally ill mother with only two months to live creates a list of things she wants to do before she dies without telling her family of her illness.",
"genres": ["Drama", "Romance"],
"poster": "https://image.tmdb.org/t/p/w500/sFSkn5rrQqXJkRNa2rMWqzmEuhR.jpg",
"release_date": 1046995200
}
]

View file

@ -16,20 +16,33 @@
"@astrojs/mdx": "^3.1.4", "@astrojs/mdx": "^3.1.4",
"@astrojs/node": "^8.3.3", "@astrojs/node": "^8.3.3",
"@astrojs/partytown": "^2.1.1", "@astrojs/partytown": "^2.1.1",
"@astrojs/react": "^3.6.2",
"@astrojs/vue": "^4.5.0", "@astrojs/vue": "^4.5.0",
"@iconoir/vue": "^7.8.0", "@iconoir/vue": "^7.8.0",
"@keystatic/astro": "^5.0.0", "@keystatic/astro": "^5.0.0",
"@keystatic/core": "^0.5.32", "@keystatic/core": "^0.5.32",
"@meilisearch/instant-meilisearch": "^0.20.0", "@meilisearch/instant-meilisearch": "^0.20.0",
"@minpluto/zorn": "^0.4.5", "@minpluto/zorn": "^0.4.5",
"@types/react": "^18.3.4",
"@types/react-dom": "^18.3.0",
"astro": "^4.14.5", "astro": "^4.14.5",
"astro-auto-import": "^0.4.2", "astro-auto-import": "^0.4.2",
"astro-json-element": "^1.1.4", "astro-json-element": "^1.1.4",
"astro-matomo": "^1.6.0",
"astro-robots-txt": "^1.0.0", "astro-robots-txt": "^1.0.0",
"astro-tooltips": "^0.6.2", "astro-tooltips": "^0.6.2",
"astro-useragent": "^4.0.2",
"axios": "^1.7.5",
"docs-searchbar.js": "^2.5.0", "docs-searchbar.js": "^2.5.0",
"json-truncate": "^3.0.0", "json-truncate": "^3.0.0",
"meilisearch": "^0.42.0", "meilisearch": "^0.42.0",
"node-fetch": "^3.3.2",
"pdfjs": "^2.5.3",
"ping": "^0.4.4",
"ping.js": "^0.3.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-instantsearch": "^7.13.0",
"reshaped": "^3.1.3", "reshaped": "^3.1.3",
"untruncate-json": "^0.0.1", "untruncate-json": "^0.0.1",
"vue": "^3.4.38" "vue": "^3.4.38"

View file

@ -31,9 +31,6 @@ import { Tooltips } from 'astro-tooltips';
<script type="module" src="/@shoelace-style/shoelace/cdn/shoelace.js" <script type="module" src="/@shoelace-style/shoelace/cdn/shoelace.js"
></script> ></script>
<!-- Analytics -->
<script defer src="https://stats.sudovanilla.org/script.js" data-website-id="9fde77c6-194c-437e-87d3-43176b8c6285"></script>
<!-- ViewTransition API --> <!-- ViewTransition API -->
<ViewTransitions /> <ViewTransitions />

View file

@ -1,89 +0,0 @@
---
title: API
software: minpluto
---
## Generic
**Language**
`/api/language/` [`en` | `jp`]
**Telemtry**
`/api/telemtry/` [`enable` | `disable`]
## Player
**Milieu**
`/api/player/milieu/` [`enable` | `disable`]
Enable or disable the Milieu mode.
## Account System
**Register**
`/api/auth/register`
*Required*
- `name`
- `email`
- `password`
When a user registered an account, it is processed with the following data:
```JSON
{
"name": "PROVIDED_NAME",
"ui_theme": "Default",
"ui_color": "Default",
"ui_zen": "false",
"ui_sidebar_size": "Normal",
"invidous_data": "https://yt.sudovanilla.org",
"invidous_media": "https://yt.sudovanilla.org",
"safetwitch_data": "https://twitch.sudovanilla.org",
"safetwitch_media": "https://twitch.sudovanilla.org",
"image_proxy": "https://ipx.sudovanilla.org",
"player_type": "Zorn"
}
```
The end-user is then redirected to `/?=welcome` with an onboarding screen(Planned, this actually does nothing for now).
Before logging in, end-users are required to verify their email first before logging in.
**Confirm**
`/api/auth/confirm`
*Required*
- `email`
- `code`
As mention just before, end-users are required to verify their email first before logging in. After registration, end-users are brought to a "Confirm Email" page.
It is required that the email in question is provided, along with the code sent to that email from the SMTP server.
**Login**
`/api/auth/login`
*Required*
- `email`
- `password`
**Logout**
`/api/auth/logout`
**Update Name**
`/api/update/name`
*Required*
- `name`
**Update Email**
`/api/update/email`
*Required*
- `email`

View file

@ -1,71 +0,0 @@
---
title: Compatibility
software: minpluto
---
## Package Managers
| Package Manager | Install Packages | Run Project |
|---------------------|------------------|-------------|
| NPM | ❌ | ❌ |
| PNPM | ❌ | ❌ |
| Bun | ✅ | ✅ |
| Yarn v1 | ✅ | ❌ |
| Yarn v3 | ✅ | ❌ |
| Yarn v4 | ✅ | ❌ |
## Deployment
| Software | Build | Run |
|---------------------|-------|------|
Bun (Local) | ✅ | ✅ |
Node (Local) | ✅ | ✅ |
Docker (Local) | ✅ | Mix |
Cloudflare Pages | 🔘 | 🔘 |
> MinPluto can use a lot of bandwidth, which most services will charge extra for. So this list is small and limited to certain services that allow unlimited bandwidth.
## Web Browsers
| Browser | Live Streams |Player | CSS | JavaScript | Account System | Embed |
|--------------------|--------------|-------|-----|------------|----------------|-------|
| **Other Browsers**|
| FOSS Browser | ❌ | ✅ | ❌ | ✅ | 🔘 | 🔘 |
| Ladybird*3 | ❌ | ❌ | ✅ | ✅ | 🔘 | 🔘 |
| **WebKit Browsers**|
| Safariᴸᴬ | ✅ | ✅ | ❌ | ✅ | 🔘 | 🔘 |
| GNOME Web | ✅ | ❌*2 | ✅ | ✅ | 🔘 | 🔘 |
| DuckDuckGoᴸᴬ | ✅ | ✅ | ✅ | ✅ | 🔘 | 🔘 |
| **Electron Browsers**|
| Min | ✅ | ✅ | ✅ | ✅ | 🔘 | 🔘 |
| **Chromium Browsers**|
| Braveᴸᴬ | ✅ | ✅ | ✅ | ✅ | 🔘 | 🔘 |
| Chromium | 🔘 | 🔘 | 🔘 | 🔘 | 🔘 | 🔘 |
| Google Chrome | 🔘 | 🔘 | 🔘 | 🔘 | 🔘 | 🔘 |
| Microsoft Edge | 🔘 | 🔘 | 🔘 | 🔘 | 🔘 | 🔘 |
| Opera | 🔘 | 🔘 | 🔘 | 🔘 | 🔘 | 🔘 |
| Vivaldi | ✅ | ✅ | ✅ | ✅ | 🔘 | 🔘 |
| Yandex | ✅ | ✅ | ✅ | ✅ | 🔘 | 🔘 |
| **Firefox Browsers**|
| ~~Dot Browser~~*1 | 🔘 | 🔘 | 🔘 | 🔘 | 🔘 | 🔘 |
| Falkon | ✅ | ✅ | ✅ | ✅ | 🔘 | 🔘 |
| Firefox | ✅ | ✅ | ✅ | ✅ | 🔘 | 🔘 |
| Floorp | ✅ | ✅ | ✅ | ✅ | 🔘 | 🔘 |
| IceCat | ❌ | ✅ | ❌ | 🔘 | 🔘 | 🔘 |
| Librewolf | ✅ | ✅ | ✅ | ✅ | 🔘 | 🔘 |
| Mull | ❌ | ✅ | ✅ | ✅ | 🔘 | 🔘 |
| Mullvad | ✅ | ❌ | ✅ | ✅ | 🔘 | 🔘 |
| Tor | 🔘 | 🔘 | 🔘 | 🔘 | 🔘 | 🔘 |
| Waterfox | ✅ | ✅ | ✅ | ✅ | 🔘 | 🔘 |
| **Outdated Browsers**|
| Internet Explorer | ❌ | ✅ | ❌ | ✅ | 🔘 | 🔘 |
> 🔘: Untested
> All browsers are tested as-is out of box. Some functions with ❌ can probably work if you tweak the settings or interact with a built-in extension.
> For Firefox-based browsers: Timestamp may show wrong data on first load, everything works correctly after a reload and so on.
> ᴸᴬ: Tested in Lambdatest
> *1: This web browser is unstable to operate
> *2: Seeking doesn't work
> *3: Ladybird is a new web browser that is uncompleted. This browser is not expected to work correctly for MinPluto at the moment.

View file

@ -1,31 +0,0 @@
---
title: Requirements
software: minpluto
---
## Hardware
| | Minimum | Recommended |
|-------------------|--------------------|------------------|
| CPU Cores | 2 | 4 |
| Memory | 2GB*1 | 8GB |
| Storage | 20GB | 60GB |
| Network Speed | 300Mbps/Upload | 1Gbps/Upload |
| Traffic | 20TB Monthly | Unlimited/No Cap |
> *1: At least have 512Mb free for the operating system.
**Recommended VPS**
| Host | Plan | Monthly Pricing | Yearly Pricing |
|------------------|-------------|-------------------|------------------|
| BuyVM | SLICE 4096 | $15.00 | $180.00 |
| Regxa | EVA3 | $15.00 | $171.00 |
> A provider with unlimited bandwidth is preferred.
> All prices are listed in USD.
## Software
The package manager that you need to use with MinPluto must be [Bun](https://bun.sh/) since it appears to be the most functional option for this project. Attempting to use another package manager like Yarn or PNPM may cause issues, view [Package Managers](#package-managers) in the [Compatibility](#compatibility) section. There seems to be some issues related to both `@astrojs/vue` and `@iconoir/vue`.
You'll still need to have [NodeJS](https://nodejs.org/en/download/package-manager) v21 or newer install in order for translations to work properly.

View file

@ -3,7 +3,7 @@
import Document from '@layouts/Document.astro' import Document from '@layouts/Document.astro'
// Icons // Icons
import {ServerConnection,PeaceHand, SlashSquare, ClipboardCheck} from "@iconoir/vue"; import {ServerConnection,PeaceHand} from "@iconoir/vue";
--- ---
<Document ProjectCollection="minpluto"> <Document ProjectCollection="minpluto">
@ -13,21 +13,9 @@ import {ServerConnection,PeaceHand, SlashSquare, ClipboardCheck} from "@iconoir/
<PeaceHand/> <PeaceHand/>
<p>Introduction </p> <p>Introduction </p>
</a> </a>
<a href="/docs/minpluto/compatibility/">
<ClipboardCheck />
<p>Compatibility</p>
</a>
<a href="/docs/minpluto/requirements/">
<ClipboardCheck />
<p>Requirements</p>
</a>
<a href="/docs/minpluto/self-hosting/"> <a href="/docs/minpluto/self-hosting/">
<ServerConnection /> <ServerConnection />
<p>Self-Hosting</p> <p>Self-Hosting</p>
</a> </a>
<a href="/docs/minpluto/api/">
<SlashSquare />
<p>API</p>
</a>
</slot> </slot>
</Document> </Document>