Compare commits

..

44 commits

Author SHA1 Message Date
a3e987c327
remove v12 announcement 2025-09-18 21:30:17 -04:00
2b646d4f97
Add translations for the rest of the pages 2025-09-18 21:26:24 -04:00
477290c9a9
add translations to main pages (thanks Aleksei!!!) 2025-09-17 19:33:51 -04:00
933c8c49c5
commits 2025-09-17 09:43:22 -04:00
0cd2e87dcf
add Services translations 2025-09-17 09:39:35 -04:00
64ac9f51a2
copy translated files 2025-09-16 20:18:39 -04:00
692344edfb
allow translating directory name 2025-09-16 20:17:18 -04:00
0c55b47acd
initial translation support 2025-09-16 20:02:20 -04:00
fac33f23b8
add translation support 2025-09-16 18:38:00 -04:00
51a5b4329e
change to continuwuity 2025-09-14 18:12:09 -04:00
72aa95c4ed
add livekit_service_url 2025-09-03 13:56:52 -04:00
28551fa0e2
use Federated Nexus Cinny instance 2025-09-03 13:08:24 -04:00
2243e7b2e1
change old room version warning 2025-08-29 22:37:47 -04:00
1b6c0ceaac
fix image spacing 2025-08-29 22:32:38 -04:00
856ef1ba88
add more image spacing 2025-08-29 22:30:43 -04:00
6307b03f4d
some quick fixes to the matrix page 2025-08-29 22:28:59 -04:00
a4c5204d07
Change screenshots to use gradia, some fixups 2025-08-29 22:15:14 -04:00
f498fce8ed
Improve matrix documentation 2025-08-29 21:58:14 -04:00
d30d640df3
Add v12 warning 2025-08-17 18:10:27 -04:00
beb284bf43
redlib: ** -> " 2025-08-09 16:45:46 -04:00
4717a44f56
fix login 2025-08-03 17:07:31 -04:00
670c6040e6
Fix search? 2025-08-03 17:05:13 -04:00
ea320fb4f4
Add failure page 2025-08-03 11:44:18 -04:00
291aab7ab8
Add more pages 2025-08-03 00:24:24 -04:00
6b924a1c34
Add more links 2025-08-01 10:14:46 -04:00
b9393a07de
Add redlib pages 2025-07-31 22:48:21 -04:00
b2febf1b13
Use nix for launch 2025-07-31 22:30:12 -04:00
618d72f789
Update mailto 2025-07-31 10:29:53 -04:00
2a64bc0bb0
Fix removed content 2025-07-30 16:03:59 -04:00
5bfe6ee17b
Fix headers 2025-07-30 15:43:53 -04:00
359c041668
Add link to Code of Conduct 2025-07-30 15:40:31 -04:00
ee6f7be971
Add Code of Conduct 2025-07-30 15:39:36 -04:00
f89ecb0e47
Change wording 2025-07-30 12:49:43 -04:00
a4c37062d9
rm summary tags 2025-07-30 12:48:30 -04:00
460a20c870
Add another sentence to forgejo 2025-07-30 12:45:47 -04:00
b9cd9dd655
Add a Next Steps section to the Forgejo page 2025-07-30 12:32:28 -04:00
80edcbaa47
Improve the documentation for Forgejo 2025-07-30 12:26:40 -04:00
110f3d1117
init forgejo page 2025-07-30 12:09:12 -04:00
5bb449db34 Improve the documentation for LaSuite Docs 2025-07-30 12:01:52 -04:00
5b4952827b Set up prettier 2025-07-30 12:01:52 -04:00
f471221618
Change to using h2s 2025-07-30 11:57:41 -04:00
219167ea3b
Add SearXNG page 2025-07-30 11:55:23 -04:00
d81f259777
Add bridge info 2025-07-30 11:44:06 -04:00
987c2f517b
Add matrix page 2025-07-30 11:31:53 -04:00
72 changed files with 1899 additions and 214 deletions

View file

@ -1,50 +1,50 @@
name: Deploy to Pages
on:
push:
branches: ["main"]
workflow_dispatch:
push:
branches: ["main"]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
group: "pages"
cancel-in-progress: false
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Install dependencies
run: npm i
- name: Install dependencies
run: npm i
- name: Build with Astro
run: npm run astro build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: dist
- name: Build with Astro
run: npm run astro build
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: build
runs-on: ubuntu-latest
name: Deploy
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: dist
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: build
runs-on: ubuntu-latest
name: Deploy
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

6
.prettierrc Normal file
View file

@ -0,0 +1,6 @@
{
"plugins": ["prettier-plugin-astro"],
"tabWidth": 4,
"semi": false,
"overrides": [{ "files": "*.astro", "options": { "parser": "astro" } }]
}

View file

@ -1,4 +1,4 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}

2
.vscode/launch.json vendored
View file

@ -2,7 +2,7 @@
"version": "0.2.0",
"configurations": [
{
"command": "deno task dev",
"command": "nix run nixpkgs#deno task dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"

View file

@ -16,7 +16,7 @@ export default defineConfig({
social: [
{
icon: "seti:git",
label: "Source Code",
label: "Git",
href: "https://git.federated.nexus",
},
{
@ -25,6 +25,42 @@ export default defineConfig({
href: "https://wetdry.world/@QuadRadical",
},
],
sidebar: [
{ slug: "index" },
{
label: "Services",
translations: {
"ru-RU": "Услуги",
"uk-UA": "Послуги",
},
autogenerate: { directory: "services" },
},
{ slug: "code" },
{ slug: "donate" },
],
defaultLocale: "root",
locales: {
root: {
label: "English",
lang: "en",
},
"fr-fr": {
label: "Français",
lang: "fr-FR",
},
"uk-ua": {
label: "Українська",
lang: "uk-UA",
},
"ru-ru": {
label: "Русский",
lang: "ru-RU",
},
},
}),
],
image: { service: passthroughImageService() },

445
deno.lock generated
View file

@ -1,8 +1,10 @@
{
"version": "4",
"version": "5",
"specifiers": {
"npm:@astrojs/starlight@~0.34.3": "0.34.3_astro@5.1.8__vite@6.0.11__zod@3.24.1",
"npm:astro@^5.1.8": "5.1.8_vite@6.0.11_zod@3.24.1",
"npm:prettier-plugin-astro@~0.14.1": "0.14.1",
"npm:prettier@^3.6.2": "3.6.2",
"npm:sharp@~0.33.5": "0.33.5",
"npm:starlight@~0.3.9": "0.3.9"
},
@ -160,7 +162,8 @@
"integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==",
"dependencies": [
"@babel/types"
]
],
"bin": true
},
"@babel/runtime@7.27.4": {
"integrity": "sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA=="
@ -182,79 +185,129 @@
]
},
"@esbuild/aix-ppc64@0.24.2": {
"integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA=="
"integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
"os": ["aix"],
"cpu": ["ppc64"]
},
"@esbuild/android-arm64@0.24.2": {
"integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg=="
"integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
"os": ["android"],
"cpu": ["arm64"]
},
"@esbuild/android-arm@0.24.2": {
"integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q=="
"integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
"os": ["android"],
"cpu": ["arm"]
},
"@esbuild/android-x64@0.24.2": {
"integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw=="
"integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==",
"os": ["android"],
"cpu": ["x64"]
},
"@esbuild/darwin-arm64@0.24.2": {
"integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA=="
"integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==",
"os": ["darwin"],
"cpu": ["arm64"]
},
"@esbuild/darwin-x64@0.24.2": {
"integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA=="
"integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==",
"os": ["darwin"],
"cpu": ["x64"]
},
"@esbuild/freebsd-arm64@0.24.2": {
"integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg=="
"integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==",
"os": ["freebsd"],
"cpu": ["arm64"]
},
"@esbuild/freebsd-x64@0.24.2": {
"integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q=="
"integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==",
"os": ["freebsd"],
"cpu": ["x64"]
},
"@esbuild/linux-arm64@0.24.2": {
"integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg=="
"integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==",
"os": ["linux"],
"cpu": ["arm64"]
},
"@esbuild/linux-arm@0.24.2": {
"integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA=="
"integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==",
"os": ["linux"],
"cpu": ["arm"]
},
"@esbuild/linux-ia32@0.24.2": {
"integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw=="
"integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==",
"os": ["linux"],
"cpu": ["ia32"]
},
"@esbuild/linux-loong64@0.24.2": {
"integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ=="
"integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==",
"os": ["linux"],
"cpu": ["loong64"]
},
"@esbuild/linux-mips64el@0.24.2": {
"integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw=="
"integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==",
"os": ["linux"],
"cpu": ["mips64el"]
},
"@esbuild/linux-ppc64@0.24.2": {
"integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw=="
"integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==",
"os": ["linux"],
"cpu": ["ppc64"]
},
"@esbuild/linux-riscv64@0.24.2": {
"integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q=="
"integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==",
"os": ["linux"],
"cpu": ["riscv64"]
},
"@esbuild/linux-s390x@0.24.2": {
"integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw=="
"integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==",
"os": ["linux"],
"cpu": ["s390x"]
},
"@esbuild/linux-x64@0.24.2": {
"integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q=="
"integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==",
"os": ["linux"],
"cpu": ["x64"]
},
"@esbuild/netbsd-arm64@0.24.2": {
"integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw=="
"integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==",
"os": ["netbsd"],
"cpu": ["arm64"]
},
"@esbuild/netbsd-x64@0.24.2": {
"integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw=="
"integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==",
"os": ["netbsd"],
"cpu": ["x64"]
},
"@esbuild/openbsd-arm64@0.24.2": {
"integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A=="
"integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==",
"os": ["openbsd"],
"cpu": ["arm64"]
},
"@esbuild/openbsd-x64@0.24.2": {
"integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA=="
"integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==",
"os": ["openbsd"],
"cpu": ["x64"]
},
"@esbuild/sunos-x64@0.24.2": {
"integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig=="
"integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==",
"os": ["sunos"],
"cpu": ["x64"]
},
"@esbuild/win32-arm64@0.24.2": {
"integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ=="
"integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==",
"os": ["win32"],
"cpu": ["arm64"]
},
"@esbuild/win32-ia32@0.24.2": {
"integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA=="
"integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==",
"os": ["win32"],
"cpu": ["ia32"]
},
"@esbuild/win32-x64@0.24.2": {
"integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg=="
"integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==",
"os": ["win32"],
"cpu": ["x64"]
},
"@expressive-code/core@0.41.2_postcss@8.5.1": {
"integrity": "sha512-AJW5Tp9czbLqKMzwudL9Rv4js9afXBxkSGLmCNPq1iRgAYcx9NkTPJiSNCesjKRWoVC328AdSu6fqrD22zDgDg==",
@ -291,87 +344,124 @@
},
"@img/sharp-darwin-arm64@0.33.5": {
"integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==",
"dependencies": [
"optionalDependencies": [
"@img/sharp-libvips-darwin-arm64"
]
],
"os": ["darwin"],
"cpu": ["arm64"]
},
"@img/sharp-darwin-x64@0.33.5": {
"integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==",
"dependencies": [
"optionalDependencies": [
"@img/sharp-libvips-darwin-x64"
]
],
"os": ["darwin"],
"cpu": ["x64"]
},
"@img/sharp-libvips-darwin-arm64@1.0.4": {
"integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="
"integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==",
"os": ["darwin"],
"cpu": ["arm64"]
},
"@img/sharp-libvips-darwin-x64@1.0.4": {
"integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="
"integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==",
"os": ["darwin"],
"cpu": ["x64"]
},
"@img/sharp-libvips-linux-arm64@1.0.4": {
"integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="
"integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==",
"os": ["linux"],
"cpu": ["arm64"]
},
"@img/sharp-libvips-linux-arm@1.0.5": {
"integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="
"integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==",
"os": ["linux"],
"cpu": ["arm"]
},
"@img/sharp-libvips-linux-s390x@1.0.4": {
"integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="
"integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==",
"os": ["linux"],
"cpu": ["s390x"]
},
"@img/sharp-libvips-linux-x64@1.0.4": {
"integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="
"integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==",
"os": ["linux"],
"cpu": ["x64"]
},
"@img/sharp-libvips-linuxmusl-arm64@1.0.4": {
"integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="
"integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==",
"os": ["linux"],
"cpu": ["arm64"]
},
"@img/sharp-libvips-linuxmusl-x64@1.0.4": {
"integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="
"integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==",
"os": ["linux"],
"cpu": ["x64"]
},
"@img/sharp-linux-arm64@0.33.5": {
"integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==",
"dependencies": [
"optionalDependencies": [
"@img/sharp-libvips-linux-arm64"
]
],
"os": ["linux"],
"cpu": ["arm64"]
},
"@img/sharp-linux-arm@0.33.5": {
"integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==",
"dependencies": [
"optionalDependencies": [
"@img/sharp-libvips-linux-arm"
]
],
"os": ["linux"],
"cpu": ["arm"]
},
"@img/sharp-linux-s390x@0.33.5": {
"integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==",
"dependencies": [
"optionalDependencies": [
"@img/sharp-libvips-linux-s390x"
]
],
"os": ["linux"],
"cpu": ["s390x"]
},
"@img/sharp-linux-x64@0.33.5": {
"integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==",
"dependencies": [
"optionalDependencies": [
"@img/sharp-libvips-linux-x64"
]
],
"os": ["linux"],
"cpu": ["x64"]
},
"@img/sharp-linuxmusl-arm64@0.33.5": {
"integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==",
"dependencies": [
"optionalDependencies": [
"@img/sharp-libvips-linuxmusl-arm64"
]
],
"os": ["linux"],
"cpu": ["arm64"]
},
"@img/sharp-linuxmusl-x64@0.33.5": {
"integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==",
"dependencies": [
"optionalDependencies": [
"@img/sharp-libvips-linuxmusl-x64"
]
],
"os": ["linux"],
"cpu": ["x64"]
},
"@img/sharp-wasm32@0.33.5": {
"integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==",
"dependencies": [
"@emnapi/runtime"
]
],
"cpu": ["wasm32"]
},
"@img/sharp-win32-ia32@0.33.5": {
"integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="
"integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==",
"os": ["win32"],
"cpu": ["ia32"]
},
"@img/sharp-win32-x64@0.33.5": {
"integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="
"integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==",
"os": ["win32"],
"cpu": ["x64"]
},
"@jridgewell/sourcemap-codec@1.5.0": {
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
@ -426,22 +516,32 @@
"integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ=="
},
"@pagefind/darwin-arm64@1.3.0": {
"integrity": "sha512-365BEGl6ChOsauRjyVpBjXybflXAOvoMROw3TucAROHIcdBvXk9/2AmEvGFU0r75+vdQI4LJdJdpH4Y6Yqaj4A=="
"integrity": "sha512-365BEGl6ChOsauRjyVpBjXybflXAOvoMROw3TucAROHIcdBvXk9/2AmEvGFU0r75+vdQI4LJdJdpH4Y6Yqaj4A==",
"os": ["darwin"],
"cpu": ["arm64"]
},
"@pagefind/darwin-x64@1.3.0": {
"integrity": "sha512-zlGHA23uuXmS8z3XxEGmbHpWDxXfPZ47QS06tGUq0HDcZjXjXHeLG+cboOy828QIV5FXsm9MjfkP5e4ZNbOkow=="
"integrity": "sha512-zlGHA23uuXmS8z3XxEGmbHpWDxXfPZ47QS06tGUq0HDcZjXjXHeLG+cboOy828QIV5FXsm9MjfkP5e4ZNbOkow==",
"os": ["darwin"],
"cpu": ["x64"]
},
"@pagefind/default-ui@1.3.0": {
"integrity": "sha512-CGKT9ccd3+oRK6STXGgfH+m0DbOKayX6QGlq38TfE1ZfUcPc5+ulTuzDbZUnMo+bubsEOIypm4Pl2iEyzZ1cNg=="
},
"@pagefind/linux-arm64@1.3.0": {
"integrity": "sha512-8lsxNAiBRUk72JvetSBXs4WRpYrQrVJXjlRRnOL6UCdBN9Nlsz0t7hWstRk36+JqHpGWOKYiuHLzGYqYAqoOnQ=="
"integrity": "sha512-8lsxNAiBRUk72JvetSBXs4WRpYrQrVJXjlRRnOL6UCdBN9Nlsz0t7hWstRk36+JqHpGWOKYiuHLzGYqYAqoOnQ==",
"os": ["linux"],
"cpu": ["arm64"]
},
"@pagefind/linux-x64@1.3.0": {
"integrity": "sha512-hAvqdPJv7A20Ucb6FQGE6jhjqy+vZ6pf+s2tFMNtMBG+fzcdc91uTw7aP/1Vo5plD0dAOHwdxfkyw0ugal4kcQ=="
"integrity": "sha512-hAvqdPJv7A20Ucb6FQGE6jhjqy+vZ6pf+s2tFMNtMBG+fzcdc91uTw7aP/1Vo5plD0dAOHwdxfkyw0ugal4kcQ==",
"os": ["linux"],
"cpu": ["x64"]
},
"@pagefind/windows-x64@1.3.0": {
"integrity": "sha512-BR1bIRWOMqkf8IoU576YDhij1Wd/Zf2kX/kCI0b2qzCKC8wcc2GQJaaRMCpzvCCrmliO4vtJ6RITp/AnoYUUmQ=="
"integrity": "sha512-BR1bIRWOMqkf8IoU576YDhij1Wd/Zf2kX/kCI0b2qzCKC8wcc2GQJaaRMCpzvCCrmliO4vtJ6RITp/AnoYUUmQ==",
"os": ["win32"],
"cpu": ["x64"]
},
"@rollup/pluginutils@5.1.4": {
"integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==",
@ -452,61 +552,99 @@
]
},
"@rollup/rollup-android-arm-eabi@4.31.0": {
"integrity": "sha512-9NrR4033uCbUBRgvLcBrJofa2KY9DzxL2UKZ1/4xA/mnTNyhZCWBuD8X3tPm1n4KxcgaraOYgrFKSgwjASfmlA=="
"integrity": "sha512-9NrR4033uCbUBRgvLcBrJofa2KY9DzxL2UKZ1/4xA/mnTNyhZCWBuD8X3tPm1n4KxcgaraOYgrFKSgwjASfmlA==",
"os": ["android"],
"cpu": ["arm"]
},
"@rollup/rollup-android-arm64@4.31.0": {
"integrity": "sha512-iBbODqT86YBFHajxxF8ebj2hwKm1k8PTBQSojSt3d1FFt1gN+xf4CowE47iN0vOSdnd+5ierMHBbu/rHc7nq5g=="
"integrity": "sha512-iBbODqT86YBFHajxxF8ebj2hwKm1k8PTBQSojSt3d1FFt1gN+xf4CowE47iN0vOSdnd+5ierMHBbu/rHc7nq5g==",
"os": ["android"],
"cpu": ["arm64"]
},
"@rollup/rollup-darwin-arm64@4.31.0": {
"integrity": "sha512-WHIZfXgVBX30SWuTMhlHPXTyN20AXrLH4TEeH/D0Bolvx9PjgZnn4H677PlSGvU6MKNsjCQJYczkpvBbrBnG6g=="
"integrity": "sha512-WHIZfXgVBX30SWuTMhlHPXTyN20AXrLH4TEeH/D0Bolvx9PjgZnn4H677PlSGvU6MKNsjCQJYczkpvBbrBnG6g==",
"os": ["darwin"],
"cpu": ["arm64"]
},
"@rollup/rollup-darwin-x64@4.31.0": {
"integrity": "sha512-hrWL7uQacTEF8gdrQAqcDy9xllQ0w0zuL1wk1HV8wKGSGbKPVjVUv/DEwT2+Asabf8Dh/As+IvfdU+H8hhzrQQ=="
"integrity": "sha512-hrWL7uQacTEF8gdrQAqcDy9xllQ0w0zuL1wk1HV8wKGSGbKPVjVUv/DEwT2+Asabf8Dh/As+IvfdU+H8hhzrQQ==",
"os": ["darwin"],
"cpu": ["x64"]
},
"@rollup/rollup-freebsd-arm64@4.31.0": {
"integrity": "sha512-S2oCsZ4hJviG1QjPY1h6sVJLBI6ekBeAEssYKad1soRFv3SocsQCzX6cwnk6fID6UQQACTjeIMB+hyYrFacRew=="
"integrity": "sha512-S2oCsZ4hJviG1QjPY1h6sVJLBI6ekBeAEssYKad1soRFv3SocsQCzX6cwnk6fID6UQQACTjeIMB+hyYrFacRew==",
"os": ["freebsd"],
"cpu": ["arm64"]
},
"@rollup/rollup-freebsd-x64@4.31.0": {
"integrity": "sha512-pCANqpynRS4Jirn4IKZH4tnm2+2CqCNLKD7gAdEjzdLGbH1iO0zouHz4mxqg0uEMpO030ejJ0aA6e1PJo2xrPA=="
"integrity": "sha512-pCANqpynRS4Jirn4IKZH4tnm2+2CqCNLKD7gAdEjzdLGbH1iO0zouHz4mxqg0uEMpO030ejJ0aA6e1PJo2xrPA==",
"os": ["freebsd"],
"cpu": ["x64"]
},
"@rollup/rollup-linux-arm-gnueabihf@4.31.0": {
"integrity": "sha512-0O8ViX+QcBd3ZmGlcFTnYXZKGbFu09EhgD27tgTdGnkcYXLat4KIsBBQeKLR2xZDCXdIBAlWLkiXE1+rJpCxFw=="
"integrity": "sha512-0O8ViX+QcBd3ZmGlcFTnYXZKGbFu09EhgD27tgTdGnkcYXLat4KIsBBQeKLR2xZDCXdIBAlWLkiXE1+rJpCxFw==",
"os": ["linux"],
"cpu": ["arm"]
},
"@rollup/rollup-linux-arm-musleabihf@4.31.0": {
"integrity": "sha512-w5IzG0wTVv7B0/SwDnMYmbr2uERQp999q8FMkKG1I+j8hpPX2BYFjWe69xbhbP6J9h2gId/7ogesl9hwblFwwg=="
"integrity": "sha512-w5IzG0wTVv7B0/SwDnMYmbr2uERQp999q8FMkKG1I+j8hpPX2BYFjWe69xbhbP6J9h2gId/7ogesl9hwblFwwg==",
"os": ["linux"],
"cpu": ["arm"]
},
"@rollup/rollup-linux-arm64-gnu@4.31.0": {
"integrity": "sha512-JyFFshbN5xwy6fulZ8B/8qOqENRmDdEkcIMF0Zz+RsfamEW+Zabl5jAb0IozP/8UKnJ7g2FtZZPEUIAlUSX8cA=="
"integrity": "sha512-JyFFshbN5xwy6fulZ8B/8qOqENRmDdEkcIMF0Zz+RsfamEW+Zabl5jAb0IozP/8UKnJ7g2FtZZPEUIAlUSX8cA==",
"os": ["linux"],
"cpu": ["arm64"]
},
"@rollup/rollup-linux-arm64-musl@4.31.0": {
"integrity": "sha512-kpQXQ0UPFeMPmPYksiBL9WS/BDiQEjRGMfklVIsA0Sng347H8W2iexch+IEwaR7OVSKtr2ZFxggt11zVIlZ25g=="
"integrity": "sha512-kpQXQ0UPFeMPmPYksiBL9WS/BDiQEjRGMfklVIsA0Sng347H8W2iexch+IEwaR7OVSKtr2ZFxggt11zVIlZ25g==",
"os": ["linux"],
"cpu": ["arm64"]
},
"@rollup/rollup-linux-loongarch64-gnu@4.31.0": {
"integrity": "sha512-pMlxLjt60iQTzt9iBb3jZphFIl55a70wexvo8p+vVFK+7ifTRookdoXX3bOsRdmfD+OKnMozKO6XM4zR0sHRrQ=="
"integrity": "sha512-pMlxLjt60iQTzt9iBb3jZphFIl55a70wexvo8p+vVFK+7ifTRookdoXX3bOsRdmfD+OKnMozKO6XM4zR0sHRrQ==",
"os": ["linux"],
"cpu": ["loong64"]
},
"@rollup/rollup-linux-powerpc64le-gnu@4.31.0": {
"integrity": "sha512-D7TXT7I/uKEuWiRkEFbed1UUYZwcJDU4vZQdPTcepK7ecPhzKOYk4Er2YR4uHKme4qDeIh6N3XrLfpuM7vzRWQ=="
"integrity": "sha512-D7TXT7I/uKEuWiRkEFbed1UUYZwcJDU4vZQdPTcepK7ecPhzKOYk4Er2YR4uHKme4qDeIh6N3XrLfpuM7vzRWQ==",
"os": ["linux"],
"cpu": ["ppc64"]
},
"@rollup/rollup-linux-riscv64-gnu@4.31.0": {
"integrity": "sha512-wal2Tc8O5lMBtoePLBYRKj2CImUCJ4UNGJlLwspx7QApYny7K1cUYlzQ/4IGQBLmm+y0RS7dwc3TDO/pmcneTw=="
"integrity": "sha512-wal2Tc8O5lMBtoePLBYRKj2CImUCJ4UNGJlLwspx7QApYny7K1cUYlzQ/4IGQBLmm+y0RS7dwc3TDO/pmcneTw==",
"os": ["linux"],
"cpu": ["riscv64"]
},
"@rollup/rollup-linux-s390x-gnu@4.31.0": {
"integrity": "sha512-O1o5EUI0+RRMkK9wiTVpk2tyzXdXefHtRTIjBbmFREmNMy7pFeYXCFGbhKFwISA3UOExlo5GGUuuj3oMKdK6JQ=="
"integrity": "sha512-O1o5EUI0+RRMkK9wiTVpk2tyzXdXefHtRTIjBbmFREmNMy7pFeYXCFGbhKFwISA3UOExlo5GGUuuj3oMKdK6JQ==",
"os": ["linux"],
"cpu": ["s390x"]
},
"@rollup/rollup-linux-x64-gnu@4.31.0": {
"integrity": "sha512-zSoHl356vKnNxwOWnLd60ixHNPRBglxpv2g7q0Cd3Pmr561gf0HiAcUBRL3S1vPqRC17Zo2CX/9cPkqTIiai1g=="
"integrity": "sha512-zSoHl356vKnNxwOWnLd60ixHNPRBglxpv2g7q0Cd3Pmr561gf0HiAcUBRL3S1vPqRC17Zo2CX/9cPkqTIiai1g==",
"os": ["linux"],
"cpu": ["x64"]
},
"@rollup/rollup-linux-x64-musl@4.31.0": {
"integrity": "sha512-ypB/HMtcSGhKUQNiFwqgdclWNRrAYDH8iMYH4etw/ZlGwiTVxBz2tDrGRrPlfZu6QjXwtd+C3Zib5pFqID97ZA=="
"integrity": "sha512-ypB/HMtcSGhKUQNiFwqgdclWNRrAYDH8iMYH4etw/ZlGwiTVxBz2tDrGRrPlfZu6QjXwtd+C3Zib5pFqID97ZA==",
"os": ["linux"],
"cpu": ["x64"]
},
"@rollup/rollup-win32-arm64-msvc@4.31.0": {
"integrity": "sha512-JuhN2xdI/m8Hr+aVO3vspO7OQfUFO6bKLIRTAy0U15vmWjnZDLrEgCZ2s6+scAYaQVpYSh9tZtRijApw9IXyMw=="
"integrity": "sha512-JuhN2xdI/m8Hr+aVO3vspO7OQfUFO6bKLIRTAy0U15vmWjnZDLrEgCZ2s6+scAYaQVpYSh9tZtRijApw9IXyMw==",
"os": ["win32"],
"cpu": ["arm64"]
},
"@rollup/rollup-win32-ia32-msvc@4.31.0": {
"integrity": "sha512-U1xZZXYkvdf5MIWmftU8wrM5PPXzyaY1nGCI4KI4BFfoZxHamsIe+BtnPLIvvPykvQWlVbqUXdLa4aJUuilwLQ=="
"integrity": "sha512-U1xZZXYkvdf5MIWmftU8wrM5PPXzyaY1nGCI4KI4BFfoZxHamsIe+BtnPLIvvPykvQWlVbqUXdLa4aJUuilwLQ==",
"os": ["win32"],
"cpu": ["ia32"]
},
"@rollup/rollup-win32-x64-msvc@4.31.0": {
"integrity": "sha512-ul8rnCsUumNln5YWwz0ted2ZHFhzhRRnkpBZ+YRuHoRAlUji9KChpOUOndY7uykrPEPXVbHLlsdo6v5yXo/TXw=="
"integrity": "sha512-ul8rnCsUumNln5YWwz0ted2ZHFhzhRRnkpBZ+YRuHoRAlUji9KChpOUOndY7uykrPEPXVbHLlsdo6v5yXo/TXw==",
"os": ["win32"],
"cpu": ["x64"]
},
"@shikijs/core@1.29.1": {
"integrity": "sha512-Mo1gGGkuOYjDu5H8YwzmOuly9vNr8KDVkqj9xiKhhhFS8jisAtDSEWB9hzqRHLVQgFdA310e8XRJcW4tYhRB2A==",
@ -678,10 +816,12 @@
]
},
"acorn@8.14.0": {
"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="
"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
"bin": true
},
"acorn@8.14.1": {
"integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg=="
"integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
"bin": true
},
"ansi-align@3.0.1": {
"integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
@ -724,7 +864,8 @@
"integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg=="
},
"astring@1.9.0": {
"integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="
"integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==",
"bin": true
},
"astro-expressive-code@0.41.2_astro@5.1.8__vite@6.0.11__zod@3.24.1": {
"integrity": "sha512-HN0jWTnhr7mIV/2e6uu4PPRNNo/k4UEgTLZqbp3MrHU+caCARveG2yZxaZVBmxyiVdYqW5Pd3u3n2zjnshixbw==",
@ -779,7 +920,6 @@
"prompts",
"rehype",
"semver",
"sharp",
"shiki@1.29.1",
"tinyexec",
"tsconfck",
@ -793,10 +933,14 @@
"xxhash-wasm",
"yargs-parser",
"yocto-spinner",
"zod@3.24.1",
"zod-to-json-schema",
"zod-to-ts",
"zod@3.24.1"
]
"zod-to-ts"
],
"optionalDependencies": [
"sharp"
],
"bin": true
},
"axobject-query@4.1.0": {
"integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="
@ -869,12 +1013,14 @@
"dependencies": [
"anymatch",
"braces",
"fsevents",
"glob-parent",
"is-binary-path",
"is-glob",
"normalize-path",
"readdirp"
],
"optionalDependencies": [
"fsevents"
]
},
"ci-info@4.1.0": {
@ -937,7 +1083,8 @@
"integrity": "sha512-WfUcL99xWDs7b3eZPoRszWVfbNo8ErCF15PTvVROjkShGlAfjIkG6hlfj/sl6/rfo5Q9x9ryJ3VqVnAZDA+gcw=="
},
"cssesc@3.0.0": {
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"bin": true
},
"debug@4.4.0": {
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
@ -982,7 +1129,8 @@
"integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A=="
},
"direction@2.0.1": {
"integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA=="
"integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==",
"bin": true
},
"dlv@1.1.3": {
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
@ -1025,7 +1173,7 @@
},
"esbuild@0.24.2": {
"integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==",
"dependencies": [
"optionalDependencies": [
"@esbuild/aix-ppc64",
"@esbuild/android-arm",
"@esbuild/android-arm64",
@ -1051,13 +1199,16 @@
"@esbuild/win32-arm64",
"@esbuild/win32-ia32",
"@esbuild/win32-x64"
]
],
"scripts": true,
"bin": true
},
"escape-string-regexp@5.0.0": {
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="
},
"esprima@4.0.1": {
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"bin": true
},
"estree-util-attach-comments@3.0.0": {
"integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==",
@ -1166,7 +1317,9 @@
"integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ=="
},
"fsevents@2.3.3": {
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"os": ["darwin"],
"scripts": true
},
"get-east-asian-width@1.3.0": {
"integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ=="
@ -1489,7 +1642,8 @@
"integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="
},
"is-docker@3.0.0": {
"integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="
"integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
"bin": true
},
"is-extglob@2.1.1": {
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
@ -1510,7 +1664,8 @@
"integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
"dependencies": [
"is-docker"
]
],
"bin": true
},
"is-number@7.0.0": {
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
@ -1529,13 +1684,15 @@
"dependencies": [
"argparse@1.0.10",
"esprima"
]
],
"bin": true
},
"js-yaml@4.1.0": {
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dependencies": [
"argparse@2.0.1"
]
],
"bin": true
},
"kleur@3.0.3": {
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
@ -1943,8 +2100,8 @@
"micromark-extension-mdxjs@3.0.0_acorn@8.14.1": {
"integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==",
"dependencies": [
"acorn-jsx",
"acorn@8.14.1",
"acorn-jsx",
"micromark-extension-mdx-expression",
"micromark-extension-mdx-jsx",
"micromark-extension-mdx-md",
@ -2135,7 +2292,8 @@
]
},
"mime@3.0.0": {
"integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="
"integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
"bin": true
},
"mrmime@2.0.0": {
"integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw=="
@ -2144,7 +2302,8 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"nanoid@3.3.8": {
"integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w=="
"integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
"bin": true
},
"neotraverse@0.6.18": {
"integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA=="
@ -2185,16 +2344,16 @@
"integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==",
"dependencies": [
"emoji-regex-xs",
"regex-recursion@5.1.1",
"regex@5.1.1"
"regex@5.1.1",
"regex-recursion@5.1.1"
]
},
"oniguruma-to-es@4.3.3": {
"integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==",
"dependencies": [
"oniguruma-parser",
"regex-recursion@6.0.2",
"regex@6.0.1"
"regex@6.0.1",
"regex-recursion@6.0.2"
]
},
"p-limit@2.3.0": {
@ -2230,13 +2389,14 @@
},
"pagefind@1.3.0": {
"integrity": "sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==",
"dependencies": [
"optionalDependencies": [
"@pagefind/darwin-arm64",
"@pagefind/darwin-x64",
"@pagefind/linux-arm64",
"@pagefind/linux-x64",
"@pagefind/windows-x64"
]
],
"bin": true
},
"parse-entities@4.0.2": {
"integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
@ -2321,6 +2481,18 @@
"which-pm"
]
},
"prettier-plugin-astro@0.14.1": {
"integrity": "sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==",
"dependencies": [
"@astrojs/compiler",
"prettier",
"sass-formatter"
]
},
"prettier@3.6.2": {
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
"bin": true
},
"prismjs@1.29.0": {
"integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q=="
},
@ -2391,8 +2563,8 @@
"regex-recursion@5.1.1": {
"integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==",
"dependencies": [
"regex-utilities",
"regex@5.1.1"
"regex@5.1.1",
"regex-utilities"
]
},
"regex-recursion@6.0.2": {
@ -2593,6 +2765,9 @@
"rollup@4.31.0": {
"integrity": "sha512-9cCE8P4rZLx9+PjoyqHLs31V9a9Vpvfo4qNcs6JCiGWYhw2gijSetFbH6SSy1whnkgcefnUwr8sad7tgqsGvnw==",
"dependencies": [
"@types/estree"
],
"optionalDependencies": [
"@rollup/rollup-android-arm-eabi",
"@rollup/rollup-android-arm64",
"@rollup/rollup-darwin-arm64",
@ -2612,9 +2787,9 @@
"@rollup/rollup-win32-arm64-msvc",
"@rollup/rollup-win32-ia32-msvc",
"@rollup/rollup-win32-x64-msvc",
"@types/estree",
"fsevents"
]
],
"bin": true
},
"run-parallel@1.2.0": {
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
@ -2622,15 +2797,30 @@
"queue-microtask"
]
},
"s.color@0.0.15": {
"integrity": "sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA=="
},
"sass-formatter@0.7.9": {
"integrity": "sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==",
"dependencies": [
"suf-log"
]
},
"sax@1.4.1": {
"integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="
},
"semver@7.6.3": {
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A=="
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"bin": true
},
"sharp@0.33.5": {
"integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
"dependencies": [
"color",
"detect-libc",
"semver"
],
"optionalDependencies": [
"@img/sharp-darwin-arm64",
"@img/sharp-darwin-x64",
"@img/sharp-libvips-darwin-arm64",
@ -2649,11 +2839,9 @@
"@img/sharp-linuxmusl-x64",
"@img/sharp-wasm32",
"@img/sharp-win32-ia32",
"@img/sharp-win32-x64",
"color",
"detect-libc",
"semver"
]
"@img/sharp-win32-x64"
],
"scripts": true
},
"shiki@1.29.1": {
"integrity": "sha512-TghWKV9pJTd/N+IgAIVJtr0qZkB7FfFCUrrEJc0aRmZupo3D1OCVRknQWVRVA7AX/M0Ld7QfoAruPzr3CnUJuw==",
@ -2697,7 +2885,8 @@
"@types/sax",
"arg",
"sax"
]
],
"bin": true
},
"smol-toml@1.3.4": {
"integrity": "sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA=="
@ -2770,6 +2959,12 @@
"inline-style-parser"
]
},
"suf-log@2.5.3": {
"integrity": "sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==",
"dependencies": [
"s.color"
]
},
"tinyexec@0.3.2": {
"integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="
},
@ -2786,7 +2981,8 @@
"integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="
},
"tsconfck@3.1.4": {
"integrity": "sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ=="
"integrity": "sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==",
"bin": true
},
"tslib@2.8.1": {
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
@ -2795,7 +2991,8 @@
"integrity": "sha512-s6zVrxuyKbbAsSAD5ZPTB77q4YIdRctkTbJ2/Dqlinwz+8ooH2gd+YA7VA6Pa93KML9GockVvoxjZ2vHP+mu8g=="
},
"typescript@5.7.3": {
"integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw=="
"integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"bin": true
},
"ufo@1.5.4": {
"integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ=="
@ -2941,15 +3138,21 @@
"integrity": "sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==",
"dependencies": [
"esbuild",
"fsevents",
"postcss",
"rollup"
]
],
"optionalDependencies": [
"fsevents"
],
"bin": true
},
"vitefu@1.0.5_vite@6.0.11": {
"integrity": "sha512-h4Vflt9gxODPFNGPwp4zAMZRpZR7eslzwH2c5hn5kNZ5rhnKyRJ50U+yGCdc2IRaBs8O4haIgLNGrV5CrpMsCA==",
"dependencies": [
"vite"
],
"optionalPeers": [
"vite"
]
},
"web-namespaces@2.0.1": {
@ -3024,6 +3227,8 @@
"dependencies": [
"npm:@astrojs/starlight@~0.34.3",
"npm:astro@^5.1.8",
"npm:prettier-plugin-astro@~0.14.1",
"npm:prettier@^3.6.2",
"npm:sharp@~0.33.5",
"npm:starlight@~0.3.9"
]

View file

@ -9,9 +9,11 @@
"astro": "astro"
},
"devDependencies": {
"@astrojs/starlight": "^0.34.3",
"astro": "^5.1.8",
"prettier": "^3.6.2",
"prettier-plugin-astro": "^0.14.1",
"sharp": "^0.33.5",
"starlight": "^0.3.9",
"@astrojs/starlight": "^0.34.3"
"starlight": "^0.3.9"
}
}

View file

@ -4,5 +4,11 @@
"org.matrix.msc3575.proxy": {
"url": "https://matrix.federated.nexus"
}
}
},
"org.matrix.msc4143.rtc_foci": [
{
"type": "livekit",
"livekit_service_url": "https://call.federated.nexus/livekit/sfu"
}
]
}

BIN
public/images/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View file

@ -1,14 +0,0 @@
---
title: LaSuite Docs
---
LaSuite Docs is a free and open source alternative to Google Docs, designed for seamless real-time collaboration. You can find it hosted at https://docs.federated.nexus.
You have a homepage with your documents, and documents that are shared with you:
![A home page listing your documents and documents that are shared with you](../../../images/docs/home.png)
And of course, the actual editor, where you can compose documents in a GUI similar to Google Docs, and export as DocX or PDF.
![An editor with some text and images, showing options to download, share, and swap to another document](../../../images/docs/editor.png)
You can also add subdocuments!
![A screenshot showing nested documents](../../../images/docs/subdocument.png)

87
src/content/docs/code.mdx Normal file
View file

@ -0,0 +1,87 @@
---
title: Contributor Covenant 3.0
---
## Our Pledge
We pledge to make our community welcoming, safe, and equitable for all.
We are committed to fostering an environment that respects and promotes the dignity, rights, and contributions of all individuals, regardless of characteristics including race, ethnicity, caste, color, age, physical characteristics, neurodiversity, disability, sex or gender, gender identity or expression, sexual orientation, language, philosophy or religion, national or social origin, socio-economic position, level of education, or other status. The same privileges of participation are extended to everyone who participates in good faith and in accordance with this Covenant.
## Encouraged Behaviors
While acknowledging differences in social norms, we all strive to meet our community's expectations for positive behavior. We also understand that our words and actions may be interpreted differently than we intend based on culture, background, or native language.
With these considerations in mind, we agree to behave mindfully toward each other and act in ways that center our shared values, including:
1. Respecting the **purpose of our community**, our activities, and our ways of gathering.
2. Engaging **kindly and honestly** with others.
3. Respecting **different viewpoints** and experiences.
4. **Taking responsibility** for our actions and contributions.
5. Gracefully giving and accepting **constructive feedback**.
6. Committing to **repairing harm** when it occurs.
7. Behaving in other ways that promote and sustain the **well-being of our community**.
## Restricted Behaviors
We agree to restrict the following behaviors in our community. Instances, threats, and promotion of these behaviors are violations of this Code of Conduct.
1. **Harassment.** Violating explicitly expressed boundaries or engaging in unnecessary personal attention after any clear request to stop.
2. **Character attacks.** Making insulting, demeaning, or pejorative comments directed at a community member or group of people.
3. **Stereotyping or discrimination.** Characterizing anyones personality or behavior on the basis of immutable identities or traits.
4. **Sexualization.** Behaving in a way that would generally be considered inappropriately intimate in the context or purpose of the community.
5. **Violating confidentiality**. Sharing or acting on someone's personal or private information without their permission.
6. **Endangerment.** Causing, encouraging, or threatening violence or other harm toward any person or group.
7. Behaving in other ways that **threaten the well-being** of our community.
### Other Restrictions
1. **Misleading identity.** Impersonating someone else for any reason, or pretending to be someone else to evade enforcement actions.
2. **Failing to credit sources.** Not properly crediting the sources of content you contribute.
3. **Promotional materials**. Sharing marketing or other commercial content in a way that is outside the norms of the community.
4. **Irresponsible communication.** Failing to responsibly present content which includes, links or describes any other restricted behaviors.
## Reporting an Issue
Tensions can occur between community members even when they are trying their best to collaborate. Not every conflict represents a code of conduct violation, and this Code of Conduct reinforces encouraged behaviors and norms that can help avoid conflicts and minimize harm.
When an incident does occur, it is important to report it promptly. To report a possible violation, **DM me on Matrix [@quadradical:federated.nexus.](https://matrix.to/#/@quadradical:federated.nexus)**
Community Moderators take reports of violations seriously and will make every effort to respond in a timely manner. They will investigate all reports of code of conduct violations, reviewing messages, logs, and recordings, or interviewing witnesses and other participants. Community Moderators will keep investigation and enforcement actions as transparent as possible while prioritizing safety and confidentiality. In order to honor these values, enforcement actions are carried out in private with the involved parties, but communicating to the whole community may be part of a mutually agreed upon resolution.
## Addressing and Repairing Harm
---
If an investigation by the Community Moderators finds that this Code of Conduct has been violated, the following enforcement ladder may be used to determine how best to repair harm, based on the incident's impact on the individuals involved and the community as a whole. Depending on the severity of a violation, lower rungs on the ladder may be skipped.
1. Warning
1. Event: A violation involving a single incident or series of incidents.
2. Consequence: A private, written warning from the Community Moderators.
3. Repair: Examples of repair include a private written apology, acknowledgement of responsibility, and seeking clarification on expectations.
2. Temporarily Limited Activities
1. Event: A repeated incidence of a violation that previously resulted in a warning, or the first incidence of a more serious violation.
2. Consequence: A private, written warning with a time-limited cooldown period designed to underscore the seriousness of the situation and give the community members involved time to process the incident. The cooldown period may be limited to particular communication channels or interactions with particular community members.
3. Repair: Examples of repair may include making an apology, using the cooldown period to reflect on actions and impact, and being thoughtful about re-entering community spaces after the period is over.
3. Temporary Suspension
1. Event: A pattern of repeated violation which the Community Moderators have tried to address with warnings, or a single serious violation.
2. Consequence: A private written warning with conditions for return from suspension. In general, temporary suspensions give the person being suspended time to reflect upon their behavior and possible corrective actions.
3. Repair: Examples of repair include respecting the spirit of the suspension, meeting the specified conditions for return, and being thoughtful about how to reintegrate with the community when the suspension is lifted.
4. Permanent Ban
1. Event: A pattern of repeated code of conduct violations that other steps on the ladder have failed to resolve, or a violation so serious that the Community Moderators determine there is no way to keep the community safe with this person as a member.
2. Consequence: Access to all community spaces, tools, and communication channels is removed. In general, permanent bans should be rarely used, should have strong reasoning behind them, and should only be resorted to if working through other remedies has failed to change the behavior.
3. Repair: There is no possible repair in cases of this severity.
This enforcement ladder is intended as a guideline. It does not limit the ability of Community Managers to use their discretion and judgment, in keeping with the best interests of our community.
## Scope
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public or other spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
## Attribution
This Code of Conduct is adapted from the Contributor Covenant, version 3.0, permanently available at [https://www.contributor-covenant.org/version/3/0/](https://www.contributor-covenant.org/version/3/0/).
Contributor Covenant is stewarded by the Organization for Ethical Source and licensed under CC BY-SA 4.0. To view a copy of this license, visit [https://creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/)
For answers to common questions about Contributor Covenant, see the FAQ at [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). Translations are provided at [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). Additional enforcement and community guideline resources can be found at [https://www.contributor-covenant.org/resources](https://www.contributor-covenant.org/resources). The enforcement ladder was inspired by the work of [Mozillas code of conduct team](https://github.com/mozilla/inclusion).

View file

@ -0,0 +1,7 @@
---
title: Faire un don
---
Federated Nexus fonctionne grâce à des dons, donc si vous appréciez nos services, pensez à faire un don. Idéalement, nous acceptons les Interac E-Transfer à l'adresse suivante : henry@henryhiles.com. Si Interac E-Transfer ne fonctionne pas dans votre pays, rejoignez la [salle Matrix](https://matrix.to/#/#community:federated.nexus) et nous trouverons une solution. Un grand merci à nos sponsors actuels :
- @VeryLoud: CAD$100

View file

@ -0,0 +1,51 @@
---
title: Accueil
template: splash
hero:
title: Découvrez des logiciels gratuits, rapides et privés avec Federated Nexus
tagline: Federated Nexus est une ressource communautaire hébergeant plusieurs services FOSS (en particulier fédérés), notamment Matrix et Forgejo.
image:
file: ../../../images/icon.svg
actions:
- text: Postuler
icon: email
link: register
- text: Rejoignez notre salle Matrix
variant: minimal
icon: matrix
link: https://matrix.to/#/#community:federated.nexus
---
import { CardGrid, Card } from "@astrojs/starlight/components"
<CardGrid>
<Card title="Communications privées et libres" icon="comment">
Federated Nexus héberge une instance gratuite de [Matrix](https://matrix.org), en utilisant le logiciel [Continuwuity](https://continuwuity.org/). Matrix est une plateforme de communication open source qui vous permet de discuter avec les communautés de votre choix. Nous hébergeons également plusieurs ponts Matrix, notamment un pont Discord, un puppet WhatsApp et même un puppet SMS ! [En savoir plus...](services/matrix)
</Card>
<Card title="Écriture collaborative Open Source" icon="document">
Nous hébergeons [LaSuite Docs](https://github.com/suitenumerique/docs), une alternative libre et open source à Google Docs, conçue pour une collaboration fluide en temps réel. Vous pouvez rédiger des documents dans une interface graphique similaire à celle de Google Docs, puis les exporter au format DocX ou PDF. Vous pouvez également ajouter des sous-documents et partager des liens avec d'autres personnes, même celles qui ne possèdent pas de compte. [En savoir plus...](services/docs)
</Card>
<Card title="Recherche rapide et privée simplifiée" icon="magnifier">
Nous exploitons une instance [SearXNG](https://searxng.org) qui vous permet de vous connecter à l'aide de votre compte Federated Nexus et d'effectuer des recherches rapides et axées sur la confidentialité sur le Web, sans aucun suivi, profilage ou publicité intrusive. [En savoir plus...](services/searxng)
</Card>
<Card title="Maison rapide et gratuite pour votre code" icon="seti:git">
Nous hébergeons une instance gratuite de [Forgejo](https://forgejo.org) sur [git.federated.nexus](https://git.federated.nexus) ! Forgejo est un git forge open source qui, contrairement à GitHub, n'entraînera jamais d'IA sur votre code 🙃. [En savoir plus...](services/forgejo)
</Card>
<Card title="Naviguer sur Reddit en toute confidentialité" icon="reddit">
[Redlib](https://github.com/redlib-org/redlib) est une interface alternative gratuite et open source pour Reddit, conçue pour supprimer le suivi, les publicités et les distractions. Vous pouvez parcourir les publications, lire les commentaires et vous abonner à des subreddits, sans encombrement ni logiciel espion. [En savoir plus...](services/redlib)
</Card>
<Card title="Communauté amicale et inclusive" icon="heart">
Nous souhaitons maintenir une communauté amicale, diversifiée et inclusive. Dans cette optique, je n'hésiterai pas à bannir toute personne intolérante, homophobe ou hostile. Nous suivons le [Contributor Covenant](code).
</Card>
<Card title="Plus à venir bientôt" icon="approve-check">
Il nous reste encore pas mal d'espace disponible sur les serveurs Federated Nexus, nous sommes donc ouverts à l'hébergement de tout nouveau logiciel utile. Faites-le nous savoir dans notre [salle Matrix](https://matrix.to/#/#community:federated.nexus) !
</Card>
</CardGrid>

View file

@ -0,0 +1,29 @@
---
title: LaSuite Docs
---
[LaSuite Docs](https://github.com/suitenumerique/docs) est un éditeur de documents gratuit et open source, conçu pour une collaboration en temps réel fluide. Federated Nexus fournit une instance hébergée à l'adresse https://docs.federated.nexus.
## Connexion
Sur la page d'accueil déconnectée, appuyez sur le bouton « Commencer à écrire » pour vous connecter et saisir les identifiants de votre compte Federated Nexus.
Vous devriez alors être accueilli par la page d'accueil connectée, qui affiche à la fois les documents que vous avez créés et ceux qui ont été partagés avec vous :
![Une page d'accueil répertoriant vos documents et les documents qui sont partagés avec vous](../../../../images/docs/home.png)
## Création d'un document
Sélectionnez un document pour l'ouvrir ou appuyez sur le bouton « Nouveau doc(ument) » dans le coin supérieur gauche pour créer un nouveau document.
L'éditeur de documents prend en charge les styles de texte ainsi que les images :
![Un éditeur contenant du texte et des images, affichant des options pour télécharger, partager et échanger vers un autre document](../../../../images/docs/editor.png)
## Création de sous-documents
LaSuite Docs prend en charge la création de sous-documents. Pour créer un sous-document, passez la souris sur le document dans la barre latérale et appuyez sur le bouton plus.
Le sous-document devrait alors apparaître en dessous :
![Capture d'écran montrant des documents imbriqués](../../../../images/docs/subdocument.png)

View file

@ -0,0 +1,32 @@
---
title: Forgejo
---
[Forgejo](https://forgejo.org)est une forge Git gratuite et open source. Très légère et performante, Forgejo est une bonne alternative à GitHub. Nous hébergeons Forgejo à l'adresse https://git.federated.nexus.
## Connexion
Pour vous connecter, cliquez sur le bouton « Se connecter » dans le coin supérieur droit et sélectionnez « Se connecter avec Federated Nexus ». Vous serez redirigé vers la page de connexion Federated Nexus, où vous pourrez saisir les identifiants de votre compte Federated Nexus.
Vous devriez alors être accueilli par la page d'exploration :
![La page d'exploration Forgejo, affichant une liste de référentiels](../../../../images/forgejo/explore.png)
## Affichage de votre tableau de bord
Pour afficher votre tableau de bord, appuyez sur l'icône dans le coin supérieur gauche.
Le tableau de bord vous montre l'activité récente des dépôts que vous surveillez, un graphique des contributions et une liste des référentiels dont vous faites partie :
![La page du tableau de bord Forgejo, affichant l'activité récente du référentiel, un graphique des contributions et une liste des référentiels](../../../../images/forgejo/dashboard.png)
## Prochaines étapes
Nous vous recommandons de consulter le [Guide de l'utilisateur Forgejo](https://forgejo.org/docs/v12.0/user/) pour obtenir des informations plus détaillées sur l'utilisation de votre compte Forgejo.
Forgejo dispose de nombreuses fonctionnalités utiles, telles que :
- Surveiller les référentiels pour être averti lorsque le référentiel présente une activité
- Répartition des référentiels
- Suivi des problèmes
- Une API qui vous permet d'effectuer des actions automatisées sur les référentiels (comme commenter les résultats des tests sur les pull requests).

View file

@ -0,0 +1,71 @@
---
title: Matrix
---
Matrix est une plateforme de communication open source qui vous permet de discuter avec les communautés de votre choix. L'une des fonctionnalités importantes de Matrix est son chiffrement de bout en bout, qui vous permet de discuter en toute confidentialité et en toute sécurité.
## Comparaison avec Discord
Matrix présente de nombreuses similitudes avec Discord, mais aussi quelques différences importantes. Cette comparaison peut vous être utile lors de la migration :
- Au lieu des « canaux » de Discord, vous disposez de « salles » Matrix. Contrairement à Discord, les salles peuvent être rejointes au sein d'un espace (expliqué ci-dessous) ou être autonomes. Elles peuvent être configurées pour fonctionner avec un chiffrement de bout en bout, mais pour les grandes salles, il est plus fiable de ne pas utiliser le chiffrement.
- L'équivalent d'un « serveur » Discord est un « espace » Matrix. Les espaces sont essentiellement un répertoire de salles, où chaque salle est regroupée sous une icône (selon votre client). Les salles au sein de l'espace sont affichées et accessibles, mais vous n'êtes pas obligé de rejoindre toutes les salles d'un espace Matrix.
## Choisir un client
Matrix est purement un protocole, et vous pouvez utiliser n'importe quel « client » de votre choix. Les clients sont des interfaces pour Matrix, et ils vous permettent de voir les messages et de rejoindre des salles. Il existe d'innombrables clients, mais nous vous recommandons l'un des suivants pour une expérience optimale :
- [Cinny](https://cinny.in) offre une interface utilisateur similaire à Discord et dispose de fonctionnalités très utiles. Vous pouvez l'utiliser sur le Web ou comme application Tauri, et il fonctionne très bien sur les téléphones Linux.
- [FluffyChat](https://fluffychat.im) est développé avec Flutter, il offre donc une excellente compatibilité multiplateforme. Il est utilisable sur iOS, Android, Linux, le Web, etc. Il dispose également de certaines fonctionnalités que Cinny n'offre pas, mais je trouve Cinny plus intuitif.
## Comment utiliser
La procédure de connexion à votre compte Federated Nexus Matrix dépend du client que vous utilisez. Je vais vous présenter ici Cinny, mais la procédure est similaire pour tous les clients.
### Ouverture de Cinny
Cinny peut être utilisé comme site web ou comme application native.
Vous trouverez l'instance Federated Nexus ici : https://app.federated.nexus
Ou téléchargez l'application ici : https://github.com/cinnyapp/cinny-desktop/releases/latest
Sous Linux, vous pouvez également obtenir Cinny depuis [Flathub](https://flathub.org/apps/in.cinny.Cinny) ou les référentiels de votre distribution.
### Connexion
Tout d'abord, assurez-vous que `federated.nexus` est défini comme votre « Homeserver » (serveur domestique). Le champ s'affiche sous forme de liste déroulante sur le bureau, mais vous devez le saisir manuellement.
![La page de connexion de Cinny, affichant « federated.nexus » comme valeur pour « Homeserver »](../../../../images/matrix/homeserver.png)
Ensuite, entrez simplement votre nom d'utilisateur et votre mot de passe, puis cliquez sur « Se connecter » !
### Rejoindre la salle communautaire
Après vous être connecté, vous devriez voir une notification dans votre boîte de réception, dans le coin inférieur gauche de votre écran :
![Une icône de boîte de réception, avec un badge indiquant une notification](../../../../images/matrix/badge.png)
Cliquez sur la notification pour accéder à la page des invitations. Cliquez sur « Public », à côté de la notification.
![La page Invitations de Cinny, qui n'affiche aucune invitation principale, mais une invitation publique](../../../../images/matrix/invite.png)
À partir de là, acceptez l'invitation à rejoindre la salle « Federated Nexus Community », et vous êtes prêt(e) à commencer !
![La page d'invitation de Cinny, affichant une invitation de nexusbot à la salle Federated Nexus Community](../../../../images/matrix/accept.png)
## Homeserver (Serveur domestique)
Federated Nexus utilise la [Continuwuity](https://continuwuity.org/), une implémentation Rust de la spécification Matrix. Cela signifie qu'il ne dispose pas de toutes les fonctionnalités de [Synapse](https://element-hq.github.io/synapse/latest/), mais qu'il est beaucoup plus performant. Voici quelques fonctionnalités qui font défaut à Grapevine :
- Salles antérieures à la version v3 : dans Matrix, chaque salle suit une certaine version des spécifications Matrix. Continuwuity prend actuellement en charge les versions v3 à v11, qui couvrent la grande majorité des salles. La version v2 est très ancienne et ne devrait plus être utilisée, mais certaines salles l'utilisent encore. Avec Federated Nexus, vous ne pourrez pas rejoindre ces salles, désolé. Actuellement, Continuwuity ne prend pas non plus en charge la version v12 (la plus récente), mais cela devrait changer prochainement.
## Ponts (Bridges)
Federated Nexus héberge plusieurs « ponts » et « marionnettes » pour vous permettre de communiquer avec des personnes sur d'autres plateformes depuis Matrix :
- [Out of Your Element](https://gitdab.com/cadence/out-of-your-element) (OOYE, pont Discord) : vous pouvez contrôler OOYE via son interface utilisateur web : https://ooye.federated.nexus. À partir de cette interface web intuitive, les administrateurs du serveur Discord peuvent se connecter à leur compte Discord et configurer facilement un espace Matrix ponté à l'aide de l'option « Mode facile ». Les utilisateurs plus avancés peuvent également utiliser l'option « Self-service » pour contrôler manuellement le pont, plutôt que de créer un tout nouvel espace Matrix.
- [mautrix-gmessages](https://docs.mau.fi/bridges/go/gmessages/index.html) (Marionnette SMS) : Vous pouvez utiliser mautrix-gmessages pour relier les conversations SMS à Matrix, y compris pour lire et envoyer des SMS. Vous pouvez le configurer vous-même en suivant [leurs instructions](https://docs.mau.fi/bridges/go/gmessages/authentication.html).
- [mautrix-whatsapp](https://docs.mau.fi/bridges/go/whatsapp/index.html) (WhatsApp marionnette) : Avec mautrix-whatsapp, vous pouvez relier vos discussions WhatsApp à Matrix, de manière très similaire au pont SMS. Consultez [leurs instructions](https://docs.mau.fi/bridges/go/whatsapp/authentication.html) pour configurer ça.
## Authentification
[Matrix](https://matrix.org) est le centre du système Federated Nexus, tout le reste s'authentifie via Matrix. Cela signifie que lorsque vous modifiez votre mot de passe sur Matrix, vous devrez vous connecter à tous les autres services avec le nouveau mot de passe.

View file

@ -0,0 +1,21 @@
---
title: Redlib
---
[Redlib](https://github.com/redlib-org/redlib) est une interface rapide, open source et respectueuse de la vie privée pour Reddit. Elle vous permet de parcourir les subreddits, de consulter les publications et de lire les commentaires, le tout sans JavaScript, sans suivi et sans publicité. Contrairement au site officiel de Reddit, Redlib ne vous oblige pas à vous connecter, à installer une application ou à accepter les cookies. Vous pouvez accéder à notre instance à l'adresse https://redlib.federated.nexus.
![Page d'accueil de Redlib affichant les publications tendance et une interface épurée, sans distraction](../../../../images/redlib/post.png)
## Caractéristiques
Redlib offre un moyen propre, rapide et privé de naviguer sur Reddit. Il prend en charge de nombreux thèmes et paramètres, fonctionne aussi bien sur ordinateur que sur mobile, et permet de consulter facilement les publications, de prévisualiser les médias et de lire les fils de commentaires sans aucune publicité, aucun suivi ni JavaScript.
![Affichage des publications par Redlib, présentant les commentaires dans un format léger et lisible](../../../../images/redlib/home.png)
## Redirection automatique
Si vous souhaitez utiliser automatiquement Redlib chaque fois que vous visitez Reddit, vous pouvez installer l'extension de navigateur [LibRedirect](https://libredirect.github.io). LibRedirect détecte lorsque vous ouvrez un site tel que reddit.com et vous redirige vers une alternative respectueuse de la vie privée, qui dans ce cas est notre instance Redlib.
Une fois installé, ouvrez simplement les paramètres LibRedirect, sélectionnez « Reddit » dans le menu déroulant Service, puis sélectionnez « Redlib » dans le menu déroulant « Frontend ». Ensuite, sous « Ajouter vos instances préférées », entrez `https://redlib.federated.nexus`, puis cliquez sur « + ». Et voilà, c'est terminé !
![LibRedirect correctement configuré](../../../../images/redlib/libredirect.png)

View file

@ -0,0 +1,13 @@
---
title: SearXNG
---
[SearXNG](https://searxng.org) vous permet d'effectuer des recherches rapides et axées sur la confidentialité sur le Web, sans aucun suivi, profilage ou publicité intrusive. SearXNG fonctionne en regroupant les résultats de nombreux moteurs de recherche différents (vous pouvez configurer ceux qu'il interroge) sur une seule page. Vous trouverez SearXNG hébergé à l'adresse https://search.federated.nexus.
![Recherche « Federated Nexus » sur SearXNG, affichant les résultats avec liens, icônes et descriptions](../../../../images/searxng/search.png)
## Paramètres
SearXNG est très personnalisable, vous pouvez modifier de nombreux paramètres, notamment les moteurs de recherche à utiliser, le thème de l'interface utilisateur, etc.
![Page des paramètres de SearXNG, affichant plusieurs onglets de paramètres différents](../../../../images/searxng/settings.png)

View file

@ -9,52 +9,43 @@ hero:
actions:
- text: Apply to Join
icon: email
link: "mailto:henry@henryhiles.com?subject=Federated%20Nexus%20Account%20Application&body=Hello%2C%0A%0AI%20would%20like%20to%20have%20a%20Federated%20Nexus%20account%20with%20the%20following%20username%3A%0A%0AI%20agree%20not%20to%20be%20homophobic%2C%20bigoted%2C%20unfriendly%2C%20etc..."
link: register
- text: Join our Matrix room
variant: minimal
icon: matrix
link: "https://matrix.to/#/#community:federated.nexus"
link: https://matrix.to/#/#community:federated.nexus
---
import { CardGrid, Card } from "@astrojs/starlight/components"
<CardGrid>
<Card title="Private and Free Communications" icon="comment">
Federated Nexus hosts a free [Matrix](https://matrix.org) instance,
using the [Grapevine](https://grapevine.computer.surgery/) software.
Matrix is an open-source communications platform, allowing you to chat
to communities of your choice. We also host multiple matrix bridges,
including a Discord bridge, a WhatsApp puppet, and even an SMS puppet!
Federated Nexus hosts a free [Matrix](https://matrix.org) instance, using the [Continuwuity](https://continuwuity.org/) software. Matrix is an open-source communications platform, allowing you to chat to communities of your choice. We also host multiple matrix bridges, including a Discord bridge, a WhatsApp puppet, and even an SMS puppet! [Learn More...](services/matrix)
</Card>
<Card title="Open Source Collaborative Editing" icon="document">
We host [LaSuite Docs](https://github.com/suitenumerique/docs), a free and open source alternative to Google Docs, designed for seamless real-time collaboration. You can compose documents in a GUI similar to Google Docs, and export as DocX or PDF. You can also add subdocuments, and share links to others, even those without an account. [Learn More...](services/docs)
</Card>
<Card title="Open Source Collaborative Editing" icon="document">
LaSuite Docs is a free and open source alternative to Google Docs,
designed for seamless real-time collaboration. You can compose
documents in a GUI similar to Google Docs, and export as DocX or
PDF. You can also add subdocuments, and share links to others, even
those without an account. [Learn More...](/services/docs)
</Card>
<Card title="Fast & Private Search Made Simple" icon="magnifier">
We run a [SearXNG](https://searxng.org) instance that allows you to log
in using your Federated Nexus account and perform fast, privacy-focused
searches across the web—completely free from tracking, profiling, or
intrusive advertising.
We run a [SearXNG](https://searxng.org) instance that allows you to log in using your Federated Nexus account and perform fast, privacy-focused searches across the web—completely free from tracking, profiling, or intrusive advertising. [Learn More...](services/searxng)
</Card>
<Card title="A Fast and Free Home for Your Code" icon="seti:git">
We host a free instance of [Forgejo](https://forgejo.org) at
[git.federated.nexus](https://git.federated.nexus)! Forgejo is a free
and open source git forge, that (unlike GitHub) will never train an AI
on your code. 🙃
We host a free instance of [Forgejo](https://forgejo.org) at [git.federated.nexus](https://git.federated.nexus)! Forgejo is an open source git forge, that (unlike GitHub) will never train an AI on your code 🙃. [Learn More...](services/forgejo)
</Card>
<Card title="Browse Reddit Privately" icon="reddit">
[Redlib](https://github.com/redlib-org/redlib) is a free and open source alternative frontend for Reddit, designed to strip out tracking, ads, and distractions. You can browse posts, read comments, and subscribe to subreddits—without the bloat or spyware. [Learn More...](services/redlib)
</Card>
<Card title="Friendly and Inclusive Community" icon="heart">
We aim to maintain a friendly, diverse, and inclusive community, come
join us! But be aware, I'm not afraid to hoist the ban hammer against
any bigoted, homophobic, or otherwise unfriendly people.
We aim to maintain a friendly, diverse, and inclusive community. As part of this I'm not afraid to hoist the ban hammer against any bigoted, homophobic, or otherwise unfriendly people. We follow the [Contributor Covenant](code).
</Card>
<Card title="More Coming Soon" icon="approve-check">
We still have a fair bit of room on the Federated Nexus servers, so
we're open to hosting any useful new software. Let us know in our
[Matrix room](https://matrix.to/#/#community:federated.nexus)!
We still have a fair bit of room on the Federated Nexus servers, so we're open to hosting any useful new software. Let us know in our [Matrix room](https://matrix.to/#/#community:federated.nexus)!
</Card>
</CardGrid>

View file

@ -0,0 +1,7 @@
---
title: Пожертвования
---
Federated Nexus существует за счёт пожертвований, поэтому, если вам нравятся наши услуги, пожалуйста, рассмотрите возможность внести свой вклад. В идеале, мы принимаем электронные переводы Interac E-Transfer на адрес: henry@henryhiles.com. Если Interac E-Transfer не работает в вашей стране, присоединяйтесь к [комнате Matrix](https://matrix.to/#/#community:federated.nexus) и мы что-нибудь придумаем. Огромное спасибо нашим нынешним спонсорам:
- @VeryLoud: CAD$100

View file

@ -0,0 +1,51 @@
---
title: Главная
template: splash
hero:
title: Попробуйте бесплатное, быстрое и конфиденциальное программное обеспечение Federated Nexus
tagline: Federated Nexus — это ресурс сообщества, на котором размещены несколько сервисов FOSS, в особенности федеративных, включая Matrix и Forgejo.
image:
file: ../../../images/icon.svg
actions:
- text: Подать заявку
icon: email
link: register
- text: Присоединяйтесь к нашей комнате в Matrix
variant: minimal
icon: matrix
link: https://matrix.to/#/#community:federated.nexus
---
import { CardGrid, Card } from "@astrojs/starlight/components"
<CardGrid>
<Card title="Частное и бесплатное общение" icon="comment">
Federated Nexus предоставляет бесплатный экземпляр [Matrix](https://matrix.org), с использованием программного обеспечения [Continuwuity](https://continuwuity.org/). Matrix - это платформа для общения, с открытым исходным кодом, которая позволяет общаться в чатах с выбранными вами сообществами. Мы также предоставляем несколько мостов Matrix, в том числе мост для Discord, марионетку для WhatsApp и даже марионетку для SMS! [Подробнее...](services/matrix)
</Card>
<Card title="Редактор для совместной правки документов, с открытым исходным кодом" icon="document">
Мы разместили [LaSuite Docs](https://github.com/suitenumerique/docs), бесплатную альтернативу Google Docs с открытым исходным кодом, разработанную для беспрепятственного совместного использования в режиме реального времени. Вы можете создавать документы в графическом интерфейсе, похожем на Google Docs; экспортировать их в форматах DocX или PDF. Вы также можете добавлять вложенные документы и делиться ссылками с другими пользователями, даже с теми, у кого нет учётной записи. [Подробнее...](services/docs)
</Card>
<Card title="Быстрый и конфиденциальный поиск стал проще" icon="magnifier">
Мы запустили экземпляр [SearXNG](https://searxng.org) , который позволяет вам войти в систему с помощью вашей учетной записи Federated Nexus и выполнять быстрый поиск в Интернете с упором на конфиденциальность — без отслеживания, профилирования или навязчивой рекламы. [Подробнее...](services/searxng)
</Card>
<Card title="Быстрый и бесплатный дом для вашего кода" icon="seti:git">
Мы предоставляем бесплатную версию [Forgejo](https://forgejo.org) на [git.federated.nexus](https://git.federated.nexus)! Forgejo — это git-forge с открытым исходным кодом, который (в отличие от GitHub) никогда не будет обучать ИИ вашим кодом 🙃. [Подробнее...](services/forgejo)
</Card>
<Card title="Просматривайте Reddit конфиденциально" icon="reddit">
[Redlib](https://github.com/redlib-org/redlib) это бесплатный интерфейс с открытым исходным кодом для Reddit, разработанный для избавления от отслеживания, рекламы и отвлекающих факторов. Вы можете просматривать публикации, читать комментарии и подписываться на субреддиты — без лишних проблем и шпионского ПО. [Подробнее...](services/redlib)
</Card>
<Card title="Дружественное и открытое сообщество" icon="heart">
Мы стремимся поддерживать дружеское, разнообразное и открытое сообщество. В рамках этой политики я не боюсь применять меры наказания в виде бана к любым фанатикам, гомофобам или другим недружелюбным людям. Мы следуем требованиям [Contributor Covenant](code).
</Card>
<Card title="Это ещё не всё" icon="approve-check">
У нас, на серверах Federated Nexus, есть ещё достаточно места, поэтому мы готовы разместить любое полезное новое программное обеспечение. Сообщите нам об этом в нашей [комнате Matrix](https://matrix.to/#/#community:federated.nexus)!
</Card>
</CardGrid>

View file

@ -0,0 +1,29 @@
---
title: LaSuite Docs
---
[LaSuite Docs](https://github.com/suitenumerique/docs) — это бесплатный редактор документов с открытым исходным кодом, разработанный для удобного совместного редактирования в режиме реального времени. Federated Nexus предоставляет свой экземпляр по адресу: https://docs.federated.nexus.
## Вход в систему (авторизация)
Для входа систему, на главной странице услуги, нажмите кнопку "Начать творить", чтобы войти в систему и ввести данные своей учётной записи Federated Nexus.
После этого вы должны увидеть главную страницу, на которой отображаются как созданные вами документы, так и документы, которыми с вами поделились:
![Домашняя страница со списком ваших документов и документов, к которым у вас есть общий доступ](../../../../images/docs/home.png)
## Начало работы с документом
Выберите документ, чтобы открыть его, или нажмите кнопку «Новый документ» в верхнем левом углу, чтобы создать новый.
Редактор документов поддерживает форматирование для текста, а также изображения:
![Редактор с текстом и изображениями, показывающий варианты загрузки, общего доступа и перехода к другому документу](../../../../images/docs/editor.png)
## Создание вложенных документов
LaSuite Docs поддерживает создание вложенных документов. Чтобы создать такой документ, наведите указатель мыши на документ в боковой панели и нажмите кнопку «плюс».
После этого вы должны увидеть под ним вложенный документ:
![Снимок экрана, показывающий вложенные документы](../../../../images/docs/subdocument.png)

View file

@ -0,0 +1,32 @@
---
title: Forgejo
---
[Forgejo](https://forgejo.org)— это бесплатный git-forge с открытым исходным кодом. Forgejo — очень лёгкий и производительный инструмент, который может стать хорошей альтернативой GitHub. Мы размещаем Forgejo по адресу: https://git.federated.nexus.
## Вход в систему
Чтобы войти в систему, нажмите кнопку «Войти» в правом верхнем углу и выберите «Войти с помощью Federated Nexus» — вы перейдёте на страницу входа в Federated Nexus, где сможете ввести данные своей учётной записи.
Затем вы должны увидеть заглавную страницу:
![Заглавная страница Forgejo, на которой отображается список репозиториев](../../../../images/forgejo/explore.png)
## Просмотр вашей панели управления
Чтобы просмотреть панель управления, нажмите значок в верхнем левом углу.
На панели инструментов отображаются последние действия в репозиториях, за которыми вы следите, график участия и список репозиториев, в которых вы участвуете:
![Страница панели инструментов Forgejo, на которой отображаются недавняя активность репозитория, график участия и список репозиториев](../../../../images/forgejo/dashboard.png)
## Следующие шаги
Мы рекомендуем ознакомиться с [Руководством пользователя Forgejo](https://forgejo.org/docs/v12.0/user/) для получения более подробной информации об использовании вашей учётной записи.
Forgejo имеет множество полезных функций, например:
- Наблюдение за репозиториями, чтобы получать уведомления о любой активности в них
- Создание вилок репозиториев
- Отслеживание проблем
- API, который позволяет выполнять автоматические действия над репозиториями (например, комментировать результаты тестирования в pull-запросах).

View file

@ -0,0 +1,71 @@
---
title: Matrix
---
Matrix — это платформа для общения с открытым исходным кодом, позволяющая общаться в выбранных вами сообществах. Важной особенностью Matrix является сквозное шифрование, позволяющее общаться конфиденциально и безопасно.
## Сравнение с Discord
Matrix имеет много общего с Discord, но также и некоторые важные отличия. Это сравнение может быть полезно при переходе:
- Вместо «каналов» Discord у вас есть «комнаты» Matrix. В отличие от Discord, комнаты могут быть как входящими в пространство (объясняется ниже), так и автономными. Их можно настроить для работы с сквозным шифрованием, но для больших комнат более надёжно не использовать шифрование.
- Эквивалентом «сервера» Discord является «пространство» Matrix. Пространства представляют собой каталог комнат, где каждая комната сгруппирована под одним значком (в зависимости от вашего клиента). Комнаты в пространстве отображаются и доступны для входа, однако вы не обязаны входить во все комнаты в пространстве Matrix.
## Выбор клиента
Matrix — это просто протокол, и вы можете использовать любой «клиент», который захотите. Клиенты — это интерфейсы для Matrix, с помощью которых вы можете просматривать сообщения и присоединяться к чатам. Существует бесчисленное множество клиентов, но для наилучшего результата мы рекомендуем один из следующих:
- [Cinny](https://cinny.in) предоставляет интерфейс, похожий на Discord, и имеет несколько действительно полезных функций. Вы можете использовать его в веб-браузере или как приложение Tauri, и он очень хорошо работает на телефонах с Linux.
- [FluffyChat](https://fluffychat.im) создан с помощью Flutter, поэтому имеет отличную кроссплатформенную поддержку. Его можно использовать на iOS, Android, Linux, в веб-браузерах и т. д. Он также имеет некоторые функции, которых нет в Cinny, но я считаю Cinny более интуитивным.
## Как использовать
Процесс входа в вашу учетную запись Federated Nexus Matrix зависит от того, какой клиент вы используете. Здесь я покажу Cinny, но процесс не сильно отличается в разных клиентах.
### Использование Cinny
Cinny можно использовать как веб-сайт или как штатное приложение.
Вы можете найти экземпляр Federated Nexus здесь: https://app.federated.nexus
Или загрузить приложение отсюда: https://github.com/cinnyapp/cinny-desktop/releases/latest
В Linux вы также можете получить Cinny из [Flathub](https://flathub.org/apps/in.cinny.Cinny) или репозиториев вашего дистрибутива.
### Вход
Прежде всего, убедитесь, что `federated.nexus` установлен в качестве вашего «Homeserver» (Домашнего сервера). Это поле отображается в виде раскрывающегося списка на рабочем столе, но вам необходимо заполнить его вручную.
![Страница входа в систему в Cinny, на которой в качестве значения для «Homeserver» указано «federated.nexus».](../../../../images/matrix/homeserver.png)
Потом просто введите свои имя пользователя и пароль и нажмите «Войти»!
### Присоединение к комнате сообщества
После входа в систему вы должны увидеть уведомление в папке «Входящие» в левом нижнем углу экрана:
![Значок входящих сообщений с отметкой об одном уведомлении](../../../../images/matrix/badge.png)
Нажмите на уведомление, и вы окажетесь на странице приглашений. Нажмите «Публичный», рядом с которым находится уведомление.
![Страница приглашений в Cinny, на которой нет Первичных приглашений, но есть одно Публичное](../../../../images/matrix/invite.png)
Там примите приглашение в комнату "Federated Nexus Community" и готово!
![Страница приглашений в Cinny, на которой отображается приглашение от nexusbot в комнату Federated Nexus Community.](../../../../images/matrix/accept.png)
## Homeserver (домашний сервер)
Federated Nexus использует [Continuwuity](https://continuwuity.org/), реализацию спецификации Matrix на языке Rust. Это означает, что он не обладает всеми функциями [Synapse](https://element-hq.github.io/synapse/latest/), но гораздо более производителен. Некоторые функции, которых нет в Grapevine, включают:
- Комнаты старше v3: В Matrix каждая комната соответствует определенной версии спецификации Matrix. Continuwuity в настоящее время поддерживает версии комнат от v3 до v11, что охватывает подавляющее большинство комнат. Версия комнаты v2 является очень старой и не должна использоваться, но некоторые комнаты всё ещё её используют. С Federated Nexus вы не сможете присоединиться к этим комнатам, извините. В настоящее время Continuwuity также не поддерживает v12 (самую новую версию), но мы ожидаем, что это скоро изменится.
## Мосты
Federated Nexus поддерживает несколько «мостов» и «марионеток», чтобы вы могли общаться с людьми на других платформах из Matrix:
- [Out of Your Element](https://gitdab.com/cadence/out-of-your-element) (OOYE, мост для Discord): Вы можете управлять OOYE через его веб-интерфейс: https://ooye.federated.nexus. С помощью этого интуитивно понятного веб-интерфейса администраторы сервера Discord могут войти в свою учетную запись Discord и легко настроить мостовое пространство Matrix, используя опцию «Easy mode» (Простой режим). Более опытные пользователи могут воспользоваться опцией «Self-service» (Самообслуживание), чтобы вручную управлять мостом, вместо того чтобы создавать совершенно новое пространство Matrix.
- [mautrix-gmessages](https://docs.mau.fi/bridges/go/gmessages/index.html) (SMS-марионетка): Вы можете использовать mautrix-gmessages для переноса SMS-чатов в Matrix, включая как чтение, так и отправку SMS. Вы можете настроить его самостоятельно, следуя [их инструкциям](https://docs.mau.fi/bridges/go/gmessages/authentication.html).
- [mautrix-whatsapp](https://docs.mau.fi/bridges/go/whatsapp/index.html) (WhatsApp-марионетка): С помощью mautrix-whatsapp вы можете подключить свои чаты WhatsApp к Matrix, очень похожим образом, как и в случае с SMS-мостом. Инструкции по настройке см. [здесь](https://docs.mau.fi/bridges/go/whatsapp/authentication.html).
## Аутентификация
[Matrix](https://matrix.org) является центром Federated Nexus, всё остальное проходит аутентификацию через Matrix. Это означает, что при смене пароля в Matrix вам нужно будет войти во все остальные системы с новым паролем.

View file

@ -0,0 +1,21 @@
---
title: Redlib
---
[Redlib](https://github.com/redlib-org/redlib)— это быстрый, открытый и уважающий конфиденциальность интерфейс для Reddit. Он позволяет просматривать субреддиты, сообщения и комментарии — и всё это без JavaScript, отслеживания и рекламы. В отличие от официального сайта Reddit, Redlib не требует входа в систему, установки приложения или принятия файлов cookie. Вы можете получить доступ к нашему экземпляру по адресу: https://redlib.federated.nexus.
![Домашняя страница Redlib с популярными записями и лаконичным интерфейсом, не отвлекающим внимание](../../../../images/redlib/post.png)
## Особенности
Redlib предоставляет чистый, быстрый и конфиденциальный способ просмотра Reddit. Он поддерживает множество тем и настроек, хорошо работает как на настольных компьютерах, так и на мобильных устройствах, а также упрощает просмотр записей, предварительный просмотр медиафайлов и чтение комментариев без рекламы, отслеживания или JavaScript.
![Просмотр записей в Redlib с отображением комментариев в удобном для чтения формате](../../../../images/redlib/home.png)
## Автоматическое перенаправление
Если вы хотите автоматически использовать Redlib при каждом посещении Reddit, вы можете установить расширение для браузера [LibRedirect](https://libredirect.github.io). LibRedirect определяет, когда вы открываете сайт, подобный reddit.com, и перенаправляет вас на альтернативный сайт, уважающий конфиденциальность, которым в данном случае является наш экземпляр Redlib.
После установки просто откройте настройки LibRedirect, выберите «Reddit» в раскрывающемся списке «Service» и выберите «Redlib» в раскрывающемся списке «Frontend». Затем в поле «Add your favorite instances» введите `https://redlib.federated.nexus` и нажмите «+». Всё готово!
![Правильно настроенный LibRedirect](../../../../images/redlib/libredirect.png)

View file

@ -0,0 +1,13 @@
---
title: SearXNG
---
[SearXNG](https://searxng.org) позволяет выполнять быстрый поиск в Интернете с упором на конфиденциальность — без отслеживания, профилирования или навязчивой рекламы. SearXNG агрегирует результаты из многих поисковых систем (вы можете настроить, какие из них будут запрашиваться) на одной странице. SearXNG доступен по адресу: https://search.federated.nexus.
![Поиск «Federated Nexus» в SearXNG с отображением результатов со ссылками, эмблемами и описаниями](../../../../images/searxng/search.png)
## Настройки
SearXNG очень настраиваемый, есть много настроек, которые вы можете задать, включая поисковые системы, тему интерфейса и многое другое.
![Страница настроек SearXNG, на которой отображаются различные вкладки настроек](../../../../images/searxng/settings.png)

View file

@ -0,0 +1,29 @@
---
title: LaSuite Docs
---
[LaSuite Docs](https://github.com/suitenumerique/docs) is a free and open-source document editor, designed for seamless real-time collaboration. Federated Nexus provides a hosted instance at https://docs.federated.nexus.
## Logging In
On the logged out homepage, press the "Start Writing" button to log in and enter the credentials for your Federated Nexus account.
You should then be greeted by the logged in homepage, which shows both documents you have created and documents that have been shared with you:
![A home page listing your documents and documents that are shared with you](../../../images/docs/home.png)
## Creating a Document
Select a document to open it, or press the "New Doc" button in the top left corner to create a new document.
The document editor has support for Markdown, as well as images:
![An editor with some text and images, showing options to download, share, and swap to another document](../../../images/docs/editor.png)
## Creating Subdocuments
LaSuite Docs supports creating subdocuments. To create a subdocument, hover over the document on the sidebar and press the plus button.
You should then see the subdocument appear below it:
![A screenshot showing nested documents](../../../images/docs/subdocument.png)

View file

@ -0,0 +1,32 @@
---
title: Forgejo
---
[Forgejo](https://forgejo.org) is a free and open-source git forge. Very lightweight and performant, Forgejo is a good replacement for GitHub. We host Forgejo at at https://git.federated.nexus.
## Signing In
To log in, press the "Sign in" button on the top right corner and select "Sign in with Federated Nexus" - it should take you to the Federated Nexus login page, where you can enter the credentials for your Federated Nexus account.
You should then be greeted by the explore page:
![The Forgejo explore page, showing a list of repositories](../../../images/forgejo/explore.png)
## Viewing Your Dashboard
To view your dashboard, press the icon in the top left corner.
The dashboard shows you the recent activity of repositories you watch, a contribution graph, and a list of repositories you are a member of:
![The Forgejo dashboard page, showing recent repository activity, a contribution graph, and a list of repositories](../../../images/forgejo/dashboard.png)
## Next Steps
We recommend taking a look at the [Forgejo User Guide](https://forgejo.org/docs/v12.0/user/) for more detailed information on using your Forgejo account.
Forgejo has many useful features you can use, such as:
- Watching repositories to get notified when the repository has any activity
- Forking repositories
- Issue tracking
- An API which allows you to perform automated actions on repositories (such as commenting test results on pull requests)

View file

@ -0,0 +1,71 @@
---
title: Matrix
---
Matrix is an open-source communications platform, allowing you to chat to communities of your choice. An important feature of Matrix is its end to end encryption, allowing you to talk privately and securely.
## Comparison to Discord
Matrix has many parallels to Discord, but also some important differences. This comparison may be useful to you when migrating:
- Instead of Discord "channels", you have Matrix "rooms". Rooms can both be joined within a space (explained below), or standalone, unlike Discord. They can be configured to run with end to end encryption, but for large rooms it's more reliable to not use encryption.
- The equivalent of a Discord "server" is a Matrix "space". Spaces are essentially a directory of rooms, where each room is grouped under one icon (depending on your client). Rooms within the space are shown and are available to join, however, you do not have to join all rooms in a Matrix space.
## Choosing a Client
Matrix is purely a protocol, and you can use any "client" you want. Clients are front-ends for Matrix, and they are the way you actually see messages and join rooms. There are countless clients, but we recommend one of the following for the best possible experience:
- [Cinny](https://cinny.in) provides a Discord-like UI and has some really useful features. You can use it on the web, or as a Tauri app, and it works on Linux phones very well.
- [FluffyChat](https://fluffychat.im) is made with Flutter, so it has great cross-platform support. It's usable on iOS, Android, Linux, Web, etc. It also has some features that Cinny doesn't, but I find Cinny to be more intuitive.
## How to Use
The process of signing into your Federated Nexus Matrix account depends on what client you use. I will be showcasing Cinny here, but the process isn't too different between clients.
### Opening Cinny
Cinny can be used as either a website, or native app.
You can find the Federated Nexus instance here: https://app.federated.nexus
Or download the app from here: https://github.com/cinnyapp/cinny-desktop/releases/latest
On Linux, you can also get Cinny from [Flathub](https://flathub.org/apps/in.cinny.Cinny) or your distro's repositories.
### Logging In
Firstly, make sure that `federated.nexus`, is set as your "Homeserver". The field shows as a dropdown on desktop, but you must type it in manually.
![The Cinny login page, showing "federated.nexus" as the value for "Homeserver"](../../../images/matrix/homeserver.png)
Then, just enter your username and password, and hit log in!
### Joining the Community Room
After logging in, you should notice a notification in your inbox, in the bottom left corner of your screen:
![An inbox icon, with a badge that marks one notification](../../../images/matrix/badge.png)
Click the notification, and you will be greeted with the invites page. Click public, which has a notification next to it.
![The Cinny invites page, showing no Primary invites, but one Public invite](../../../images/matrix/invite.png)
From there, accept the invitation to the "Federated Nexus Community" room, and you're good to go!
![The Cinny invites page, showing an invite from nexusbot to the Federated Nexus Community room](../../../images/matrix/accept.png)
## Homeserver
Federated Nexus runs [Continuwuity](https://continuwuity.org/), a Rust implementation of the Matrix specification. This means it doesn't quite have all the features of [Synapse](https://element-hq.github.io/synapse/latest/), but it's much more performant. Some features that Grapevine lack include:
- Rooms older than v3: In Matrix, each room follows a certain version of the Matrix spec. Continuwuity currently supports room versions v3 to v11, covering the vast majority of rooms. Room version v2 is _very very_ old, and should never be used, but some rooms still use it. With Federated Nexus, you won't be able to join these rooms, sorry.
## Bridges
Federated Nexus hosts multiple "bridges" and "puppets", to let you talk to people on other platforms from Matrix:
- [Out of Your Element](https://gitdab.com/cadence/out-of-your-element) (OOYE, Discord bridge): You can control OOYE via its web UI: https://ooye.federated.nexus. From this intuitive web UI, Discord server admins can log into their Discord account, and easily set up a bridged Matrix space using the "Easy mode" option. Or, for the more advanced users, they can use the "Self-service" option to manually control the bridge, rather than creating a whole new Matrix space.
- [mautrix-gmessages](https://docs.mau.fi/bridges/go/gmessages/index.html) (SMS puppet): You can use mautrix-gmessages to bridge SMS chats over to Matrix, including both reading and sending SMS. You can set it up for yourself with [their instructions](https://docs.mau.fi/bridges/go/gmessages/authentication.html).
- [mautrix-whatsapp](https://docs.mau.fi/bridges/go/whatsapp/index.html) (WhatsApp puppet): With mautrix-whatsapp, you can bridge your WhatsApp chats to Matrix, in a very similar way to the SMS bridge. See [their instructions](https://docs.mau.fi/bridges/go/whatsapp/authentication.html) for setup.
## Authentication
[Matrix](https://matrix.org) is the hub of Federated Nexus, everything else authenticates against Matrix. This means that when you change your password on Matrix, you'll need to log into everything else with the new password.

View file

@ -0,0 +1,21 @@
---
title: Redlib
---
[Redlib](https://github.com/redlib-org/redlib) is a fast, open source, privacy respecting frontend for Reddit. It lets you browse subreddits, view posts, and read comments—all without JavaScript, tracking, or ads. Unlike the official Reddit site, Redlib doesn't nag you to log in, install an app, or accept cookies. You can access our instance at https://redlib.federated.nexus.
![Redlib homepage showing trending posts and a clean, distraction-free interface](../../../images/redlib/post.png)
## Features
Redlib provides a clean, fast, and private way to browse Reddit. It supports many themes and settings, works well on both desktop and mobile, and makes it easy to view posts, preview media, and read comment threads without any ads, tracking, or JavaScript.
![Redlib post view, showing comments in a lightweight and readable format](../../../images/redlib/home.png)
## Automatic Redirection
If you'd like to automatically use Redlib whenever you visit Reddit, you can install the [LibRedirect](https://libredirect.github.io) browser extension. LibRedirect detects when you open a site like reddit.com and redirects you to a privacy-respecting alternative, which in this case is our Redlib instance.
Once installed, just open the LibRedirect settings, select "Reddit" in the Service dropdown, and select "Redlib" in the "Frontend" dropdown. Then, under "Add your favorite instances", enter `https://redlib.federated.nexus`, and hit "+". That's it, you're done!
![Properly configured LibRedirect](../../../images/redlib/libredirect.png)

View file

@ -0,0 +1,13 @@
---
title: SearXNG
---
[SearXNG](https://searxng.org) lets you perform fast, privacy-focused searches across the web—completely free from tracking, profiling, or intrusive advertising. SearXNG works by aggregating results from many different search engines (you can configure which ones it queries) into one page. You can find SearXNG hosted at https://search.federated.nexus.
![A search for "Federated Nexus" on SearXNG, showing results with links, favicons, and descriptions](../../../images/searxng/search.png)
## Settings
SearXNG is very customizable, there are many settings you can customize, including what search engines to query, the UI theme, and more.
![SearXNG settings page, showing many different tabs of settings](../../../images/searxng/settings.png)

View file

@ -0,0 +1,7 @@
---
title: Пожертва
---
Federated Nexus працює за рахунок пожертв, тому, якщо вам подобаються наші послуги, будь ласка, розгляньте можливість зробити пожертву. В ідеалі, ми приймаємо Interac E-Transfer на адресу: henry@henryhiles.com. Якщо Interac E-Transfer не працює у вашій країні, приєднайтесь до [кімнати Matrix](https://matrix.to/#/#community:federated.nexus), і ми щось придумаємо. Щиро дякуємо нашим поточним спонсорам:
- @VeryLoud: CAD$100

View file

@ -0,0 +1,51 @@
---
title: Головна
template: splash
hero:
title: Скористайтеся безкоштовним, швидким і приватним програмним забезпеченням Federated Nexus
tagline: Federated Nexus — це ресурс спільноти, що розміщує декілька служб FOSS (особливо федеративних), включаючи Matrix і Forgejo.
image:
file: ../../../images/icon.svg
actions:
- text: Подати заявку
icon: email
link: register
- text: Приєднуйтесь до нашої кімнати Matrix
variant: minimal
icon: matrix
link: https://matrix.to/#/#community:federated.nexus
---
import { CardGrid, Card } from "@astrojs/starlight/components"
<CardGrid>
<Card title="Приватне та безкоштовне спілкування" icon="comment">
Federated Nexus розміщує безкоштовний екземпляр [Matrix](https://matrix.org), використовуючи програмне забезпечення [Continuwuity](https://continuwuity.org/). Matrix — це платформа для спілкування з відкритим кодом, яка дозволяє вам спілкуватися в чатах з обраними вами спільнотами. Ми також розміщуємо кілька мостів Matrix, включаючи міст Discord, маріонетку WhatsApp і навіть маріонетку SMS! [Докладніше...](services/matrix)
</Card>
<Card title="Спільне редагування з відкритим кодом" icon="document">
Ми розміщуємо [LaSuite Docs](https://github.com/suitenumerique/docs)— безкоштовну альтернативу Google Docs з відкритим кодом, призначену для безперебійної співпраці в режимі реального часу. Ви можете створювати документи в графічному інтерфейсі, схожому на Google Docs, та експортувати їх у форматі DocX або PDF. Ви також можете додавати вкладені документи та ділитися посиланнями з іншими, навіть тими, хто не має облікового запису. [Докладніше...](services/docs)
</Card>
<Card title="Швидкий та приватний пошук став простішим" icon="magnifier">
Ми запустили екземпляр [SearXNG](https://searxng.org), який дозволяє вам увійти за допомогою вашого облікового запису Federated Nexus і виконувати швидкий пошук в Інтернеті з акцентом на конфіденційність — без відстеження, профілювання або настирливої реклами. [Докладніше...](services/searxng)
</Card>
<Card title="Швидкий і безкоштовний дім для вашого коду" icon="seti:git">
Ми розміщуємо безкоштовну версію [Forgejo](https://forgejo.org) на [git.federated.nexus](https://git.federated.nexus)! Forgejo — це відкритий git-forge, який (на відміну від GitHub) ніколи не буде навчати штучний інтелект вашим кодом 🙃. [Докладніше...](services/forgejo)
</Card>
<Card title="Переглядайте Reddit приватно" icon="reddit">
[Redlib](https://github.com/redlib-org/redlib) — це безкоштовний інтерфейс з відкритим кодом для Reddit, призначений для усунення відстеження, реклами та відволікаючих факторів. Ви можете переглядати публікації, читати коментарі та підписуватися на субреддити без зайвих даних та шпигунського програмного забезпечення. [Докладніше...](services/redlib)
</Card>
<Card title="Дружня та відкрита спільнота" icon="heart">
Ми прагнемо підтримувати дружню, різноманітну та інклюзивну спільноту. У рамках цього я не боюся накладати заборону на будь-яких нетерпимих, гомофобних або інших недружніх людей. Ми дотримуємося [Contributor Covenant](code).
</Card>
<Card title="Незабаром буде більше" icon="approve-check">
На серверах Federated Nexus ще є достатньо місця, тому ми готові розмістити будь-яке корисне нове програмне забезпечення. Повідомте нас про це в нашій [кімнаті Matrix](https://matrix.to/#/#community:federated.nexus)!
</Card>
</CardGrid>

View file

@ -0,0 +1,29 @@
---
title: LaSuite Docs
---
[LaSuite Docs](https://github.com/suitenumerique/docs) — це безкоштовний редактор документів з відкритим кодом, призначений для безшовної співпраці в режимі реального часу. Federated Nexus надає свій примірник за адресою: https://docs.federated.nexus.
## Вхід
На головній сторінці, коли вхід ще не виконано, натисніть кнопку «Почати творити», щоб увійти до систему та ввести дані вашого облікового запису Federated Nexus.
Після цього ви маєте побачити сторінку входу до системи, а за нею ту, де відображаються як створені вами документи, так і документи, якими з вами поділилися:
![Домашня сторінка, на якій перелічені ваші документи та документи, якими з вами поділилися](../../../../images/docs/home.png)
## Початок роботи з документом
Виберіть документ, щоб відкрити його, або натисніть кнопку «Новий документ» у верхньому лівому куті, щоб створити новий.
Редактор документів підтримує форматування тексту, а також зображення:
![Редактор з текстом та зображеннями, що показує опції для завантаження, спільного використання та переходу до іншого документа](../../../../images/docs/editor.png)
## Створення вкладених документів
LaSuite Docs підтримує створення вкладених документів. Щоб створити такий документ, наведіть вказівник миші на документ у бічній панелі та натисніть кнопку «плюс».
Після цього ви побачите під ним вкладений документ:
![Знімок екрана, що показує вкладені документи](../../../../images/docs/subdocument.png)

View file

@ -0,0 +1,32 @@
---
title: Forgejo
---
[Forgejo](https://forgejo.org) — це безкоштовний git-forge з відкритим кодом. Forgejo — дуже легкий і продуктивний, він є гарною заміною GitHub. Ми розміщуємо Forgejo за адресою: https://git.federated.nexus.
## Вхід
Щоб увійти, натисніть кнопку «Увійти» у верхньому правому куті та виберіть «Увійти за допомогою Federated Nexus» — ви перейдете на сторінку входу Federated Nexus, де зможете ввести облікові дані свого облікового запису.
Після цього ви побачите головну сторінку:
![Головна сторінка Forgejo, що показує список репозиторіїв](../../../../images/forgejo/explore.png)
## Перегляд вашої Панелі інструментів
Щоб переглянути свою панель інструментів, натисніть на піктограму у верхньому лівому куті.
На панелі інструментів відображаються останні дії в репозиторіях, за якими ви стежите, графік участі та список репозиторіїв, в яких ви берете участь:
![Сторінка панелі інструментів Forgejo, що відображає останні дії в репозиторії, графік участі та список репозиторіїв](../../../../images/forgejo/dashboard.png)
## Наступні кроки
Для отримання більш детальної інформації про використання вашого облікового запису Forgejo рекомендуємо ознайомитися з [Посібником користувача Forgejo](https://forgejo.org/docs/v12.0/user/).
Forgejo має багато корисних функцій, якими ви можете скористатися, наприклад:
- Спостереження за репозиторіями, щоб отримувати сповіщення про будь-яку активність у них
- Розгалуження репозиторіїв
- Відстеження проблем
- API, що дозволяє виконувати автоматизовані дії над репозиторіями (наприклад, коментувати результати тестування у pull-запиті).

View file

@ -0,0 +1,71 @@
---
title: Matrix
---
Matrix — це платформа для спілкування з відкритим кодом, яка дозволяє вам спілкуватися в обраних вами спільнотах. Важливою особливістю Matrix є наскрізне шифрування, яке дозволяє вам спілкуватися приватно та безпечно.
## Порівняння з Discord
Matrix має багато схожих рис з Discord, але також і деякі важливі відмінності. Це порівняння може бути корисним для вас під час міграції:
- Замість «каналів» Discord у Matrix є «кімнати». На відміну від Discord, до кімнат можна приєднатися як у межах простору (пояснення див. нижче), так і окремо. Їх можна налаштувати для роботи з наскрізним шифруванням, але для великих кімнат надійніше не використовувати шифрування.
- Еквівалентом «сервера» Discord є «простір» Matrix. Простори — це, по суті, каталог кімнат, де кожна кімната згрупована під однією піктограмою (залежно від вашого клієнта). Кімнати в просторі відображаються і доступні для приєднання, однак ви не зобов'язані приєднуватися до всіх кімнат у просторі Matrix.
## Вибір клієнта
Matrix — це суто протокол, і ви можете використовувати будь-який «клієнт», який вам подобається. Клієнти — це інтерфейси для Matrix, за допомогою яких ви бачите повідомлення та приєднуєтеся до кімнат. Існує безліч клієнтів, але для найкращого досвіду ми рекомендуємо використовувати один із таких:
- [Cinny](https://cinny.in) має інтерфейс, схожий на Discord, і деякі дійсно корисні функції. Ви можете використовувати його в веб-браузері або як додаток Tauri, і він дуже добре працює на телефонах з ОС Linux.
- [FluffyChat](https://fluffychat.im) створений на базі Flutter, тому має чудову кросплатформну підтримку. Його можна використовувати на iOS, Android, Linux, у веб-браузерах тощо. Він також має деякі функції, яких немає в Cinny, але я вважаю Cinny більш інтуїтивним.
## Як користуватися
Процес входу в обліковий запис Federated Nexus Matrix залежить від того, який клієнт ви використовуєте. Я продемонструю тут Cinny, але процес не надто відрізняється між клієнтами.
### Відкриття Cinny
Cinny можна використовувати як веб-сайт або як повноцінний додаток.
Ви можете знайти екземпляр Federated Nexus тут: https://app.federated.nexus
Або завантажте додаток звідси: https://github.com/cinnyapp/cinny-desktop/releases/latest
У Linux ви також можете отримати Cinny з [Flathub](https://flathub.org/apps/in.cinny.Cinny) або у репозиторії вашого дистрибутива.
### Вхід
Спочатку переконайтеся, що `federated.nexus` встановлено як ваш «Homeserver» (Домашній сервер). Це поле відображається у вигляді випадаючого списку на робочому столі, але ви повинні вписати його вручну.
![Сторінка входу в Cinny, на якій в якості значення для «Homeserver» вказано «federated.nexus»](../../../../images/matrix/homeserver.png)
Потім просто введіть своє ім'я користувача та пароль і натисніть «Увійти»!
### Приєднання до Кімнати спільноти
Після входу до системи ви побачите повідомлення у вашій поштовій скриньці, у нижньому лівому куті екрана:
![Піктограма вхідних повідомлень із значком, що позначає одне повідомлення](../../../../images/matrix/badge.png)
Натисніть на сповіщення, і ви потрапите на сторінку запрошень. Натисніть на «публічне», поруч з яким є сповіщення.
![Сторінка запрошень у Cinny, на якій не відображаються жодні Первинні запрошення, але є одне Публічне запрошення](../../../../images/matrix/invite.png)
Звідти прийміть запрошення до кімнати «Federated Nexus Community», і все готово!
![Сторінка запрошень у Cinny, на якій відображено запрошення від nexusbot до кімнати Federated Nexus Community](../../../../images/matrix/accept.png)
## Homeserver (Домашній сервер)
Federated Nexus використовує [Continuwuity](https://continuwuity.org/), реалізацію специфікації Matrix мовою Rust. Це означає, що вона не має всіх функцій [Synapse](https://element-hq.github.io/synapse/latest/), але набагато продуктивніша. Деякі функції, яких не має Grapevine, включають:
- Кімнати старші за v3: У Matrix кожна кімната відповідає певній версії специфікації Matrix. Continuwuity наразі підтримує версії кімнат від v3 до v11, що охоплює переважну більшість кімнат. Версія кімнати v2 є дуже-дуже застарілою та не повинна використовуватися, але деякі кімнати все ще її використовують. З Federated Nexus ви не зможете приєднатися до цих кімнат, вибачте. Наразі Continuwuity також не підтримує v12 (найновішу версію), але ми очікуємо, що це скоро зміниться.
## Мости
підтримує декілька «мостів» та «маріонеток», щоб ви могли спілкуватися з людьми на інших платформах з Matrix:
- [Out of Your Element](https://gitdab.com/cadence/out-of-your-element) (OOYE, міст для Discord): Ви можете керувати OOYE через його веб-інтерфейс: https://ooye.federated.nexus. За допомогою цього інтуїтивно зрозумілого веб-інтерфейсу адміністратори сервера Discord можуть увійти до свого облікового запису Discord і легко налаштувати проміжний простір Matrix за допомогою опції «Easy mode» (Простий режим). А більш досвідчені користувачі можуть скористатися опцією «Self-service» (Самообслуговування), щоб вручну керувати проміжним простором, замість того щоб створювати повністю новий простір Matrix.
- [mautrix-gmessages](https://docs.mau.fi/bridges/go/gmessages/index.html) (SMS-маріонетка): Ви можете використовувати mautrix-gmessages для перенесення SMS-чатів у Matrix, включаючи як читання, так і надсилання SMS. Ви можете налаштувати це самостійно за допомогою [їхніх інструкцій](https://docs.mau.fi/bridges/go/gmessages/authentication.html).
- [mautrix-whatsapp](https://docs.mau.fi/bridges/go/whatsapp/index.html) (WhatsApp маріонетка): За допомогою mautrix-whatsapp ви можете підключити свої чати WhatsApp до Matrix, дуже схожим чином, як і SMS-міст. Для налаштування дивіться [їхні інструкції](https://docs.mau.fi/bridges/go/whatsapp/authentication.html).
## Аутентифікація
[Matrix](https://matrix.org) є центром Federated Nexus, все інше проходить аутентифікацію через Matrix. Це означає, що коли ви зміните свій пароль у Matrix, вам потрібно буде увійти в усі інші системи з новим паролем.

View file

@ -0,0 +1,21 @@
---
title: Redlib
---
[Redlib](https://github.com/redlib-org/redlib) — це швидкий, відкритий, конфіденційний інтерфейс для Reddit. Він дозволяє переглядати субреддити, публікації та коментарі без JavaScript, відстеження або реклами. На відміну від офіційного сайту Reddit, Redlib не вимагає входу до системи, встановлення додатка або прийняття файлів cookie. Ви можете отримати доступ до нашого примірника за адресою: https://redlib.federated.nexus.
![Головна сторінка Redlib із популярними публікаціями та зручним інтерфейсом, що не відволікає увагу](../../../../images/redlib/post.png)
## Особливості
Redlib забезпечує чистий, швидкий і приватний спосіб перегляду Reddit. Він підтримує безліч тем і налаштувань, добре працює як на настільних комп'ютерах, так і на мобільних пристроях, а також дозволяє легко переглядати публікації, попередньо переглядати медіафайли та читати коментарі без реклами, відстеження або JavaScript.
![Перегляд публікацій у Redlib, що відображає коментарі у легкому та зручному для читання форматі](../../../../images/redlib/home.png)
## Автоматичне перенаправлення
Якщо ви хочете автоматично використовувати Redlib при кожному відвідуванні Reddit, ви можете встановити розширення для браузера [LibRedirect](https://libredirect.github.io). LibRedirect виявляє, коли ви відкриваєте сайт, такий як reddit.com, і перенаправляє вас на альтернативний сайт, що поважає конфіденційність, яким у цьому випадку є наш примірник Redlib.
Після встановлення просто відкрийте налаштування LibRedirect, виберіть «Reddit» у випадаючому меню «Service» та виберіть «Redlib» у випадаючому меню «Frontend». Потім у розділі «Add your favorite instances» введіть `https://redlib.federated.nexus` та натисніть «+». Ось і все, готово!
![Правильно налаштований LibRedirect](../../../../images/redlib/libredirect.png)

View file

@ -0,0 +1,13 @@
---
title: SearXNG
---
[SearXNG](https://searxng.org) дозволяє виконувати швидкий пошук в Інтернеті з акцентом на конфіденційність — без відстеження, профілювання або настирливої реклами. SearXNG об'єднує результати з багатьох різних пошукових систем (ви можете налаштувати, які саме системи використовувати) на одній сторінці. SearXNG розміщений за адресою: https://search.federated.nexus.
![Пошук «Federated Nexus» у SearXNG, що показує результати з посиланнями, піктограмами та описами](../../../../images/searxng/search.png)
## Налаштування
SearXNG є дуже гнучким у налаштуванні, ви можете налаштувати багато параметрів, включаючи пошукові системи, тему інтерфейсу користувача та інше.
![Сторінка налаштувань SearXNG, що містить багато різних вкладок налаштувань](../../../../images/searxng/settings.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 KiB

After

Width:  |  Height:  |  Size: 303 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Before After
Before After

BIN
src/images/docs/landing.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 742 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

BIN
src/images/matrix/badge.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

BIN
src/images/redlib/home.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 781 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
src/images/redlib/post.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

16
src/pages/failure.astro Normal file
View file

@ -0,0 +1,16 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../styles/page.css"
---
<StarlightPage
frontmatter={{
title: "Registration failed",
template: "splash",
}}
>
An error occurred while we were registering you. Try again later, and if the
error persists, join our <a
href="https://matrix.to/#/#community:federated.nexus">Matrix room</a
> let me know.
</StarlightPage>

View file

@ -0,0 +1,16 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../../styles/page.css"
---
<StarlightPage
frontmatter={{
title: "Échec de l'inscription",
template: "splash",
}}
>
Une erreur s'est produite lors de votre inscription. Veuillez réessayer plus
tard. Si l'erreur persiste, rejoignez notre <a
href="https://matrix.to/#/#community:federated.nexus">salle Matrix</a
> et veuillez m'en informer.
</StarlightPage>

101
src/pages/fr-fr/login.astro Normal file
View file

@ -0,0 +1,101 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../../styles/page.css"
---
<StarlightPage
frontmatter={{ title: "Connexion à Federated Nexus", template: "splash" }}
>
<form method="post" action="https://auth.federated.nexus/login">
<input type="hidden" name="state" />
<input type="hidden" name="nonce" />
<input type="hidden" name="user_id" />
<input type="hidden" name="access_token" />
<input type="hidden" name="redirect_uri" />
<label>
Nom d'utilisateur
<input type="text" />
</label>
<label>
Mot de passe
<input type="password" />
</label>
<noscript id="error">
Ce formulaire ne fonctionnera pas sans JavaScript.
</noscript>
<span id="error"> </span>
<button type="submit"><span>Envoyer</span></button>
<a href="/register"
>Vous n'avez pas encore de compte ? Inscrivez-vous dès maintenant !</a
>
</form>
</StarlightPage>
<script>
const params = new URLSearchParams(window.location.search)
for (const name of ["redirect_uri", "state", "nonce"]) {
const input = document.querySelector(
`input[name="${name}"]`
) as HTMLInputElement
if (input && params.has(name)) input.value = params.get(name)!
}
const form = document.querySelector("form")!
const error = document.querySelector("#error")! as HTMLSpanElement
form.addEventListener("submit", async (e) => {
e.preventDefault()
error.style.display = "none"
try {
const username = (
form.querySelector('[type="text"]') as HTMLInputElement
).value
const password = (
form.querySelector('[type="password"]') as HTMLInputElement
).value
const session =
localStorage.getItem("session") ?? crypto.randomUUID()
localStorage.setItem("session", session)
const res = await fetch(
"https://matrix.federated.nexus/_matrix/client/v3/login",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
type: "m.login.password",
device_id: session,
initial_device_display_name: `Federated Nexus Login from ${navigator.userAgent}`,
identifier: { type: "m.id.user", user: username },
password,
}),
}
)
if (!res.ok) {
throw new Error((await res.json())["error"])
}
const data = await res.json()
const id = form.querySelector(
'input[name="user_id"]'
) as HTMLInputElement
id.value = data.user_id
const token = form.querySelector(
'input[name="access_token"]'
) as HTMLInputElement
token.value = data.access_token
form.submit()
} catch (err: any) {
error.textContent = err.message || "Login failed"
}
})
</script>

View file

@ -0,0 +1,27 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../../styles/page.css"
---
<StarlightPage
frontmatter={{ title: "Inscription à Federated Nexus", template: "splash" }}
>
<form method="post" action="https://register.federated.nexus">
<label>
Nom d'utilisateur (alphanumérique uniquement, sans espaces ni signes
diacritiques)
<input
name="username"
type="text"
required
pattern="^[A-Za-z0-9]+$"
/>
</label>
<label>
E-mail
<input name="email" type="email" required />
</label>
<button type="submit"><span>Envoyer</span></button>
</form>
</StarlightPage>

View file

@ -0,0 +1,15 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../../styles/page.css"
---
<StarlightPage
frontmatter={{
title: "Inscription réussie à Federated Nexus",
template: "splash",
}}
>
Une fois votre demande approuvée, vous recevrez un e-mail contenant un nom
d'utilisateur et un mot de passe. L'approbation prend généralement moins de
deux jours ouvrables.
</StarlightPage>

View file

@ -1,6 +1,6 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../styles/login.css"
import "../styles/page.css"
---
<StarlightPage
@ -28,7 +28,7 @@ import "../styles/login.css"
<span id="error"> </span>
<button type="submit"><span>Submit</span></button>
<a href="/">Don't have an account? Apply at our home page.</a>
<a href="/register">Don't have an account? Sign up now!</a>
</form>
</StarlightPage>

26
src/pages/register.astro Normal file
View file

@ -0,0 +1,26 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../styles/page.css"
---
<StarlightPage
frontmatter={{ title: "Register for Federated Nexus", template: "splash" }}
>
<form method="post" action="https://register.federated.nexus">
<label>
Username (alphanumeric only, no spaces)
<input
name="username"
type="text"
required
pattern="^[A-Za-z0-9]+$"
/>
</label>
<label>
Email
<input name="email" type="email" required />
</label>
<button type="submit"><span>Submit</span></button>
</form>
</StarlightPage>

View file

@ -0,0 +1,17 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../../styles/page.css"
---
<StarlightPage
frontmatter={{
title: "Не удалось выполнить регистрацию",
template: "splash",
}}
>
При регистрации произошла ошибка. Повторите попытку позже, и если ошибка не
исчезнет, присоединяйтесь к нашей <a
href="https://matrix.to/#/#community:federated.nexus"
>комнате в Matrix</a
> и сообщите мне об этой ошибке.
</StarlightPage>

101
src/pages/ru-ru/login.astro Normal file
View file

@ -0,0 +1,101 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../../styles/page.css"
---
<StarlightPage
frontmatter={{ title: "Вход в Federated Nexus", template: "splash" }}
>
<form method="post" action="https://auth.federated.nexus/login">
<input type="hidden" name="state" />
<input type="hidden" name="nonce" />
<input type="hidden" name="user_id" />
<input type="hidden" name="access_token" />
<input type="hidden" name="redirect_uri" />
<label>
Имя пользователя
<input type="text" />
</label>
<label>
Пароль
<input type="password" />
</label>
<noscript id="error">
Эта форма не будет работать без JavaScript.
</noscript>
<span id="error"> </span>
<button type="submit"><span>Отправить</span></button>
<a href="/register"
>У вас нет учётной записи? Зарегистрируйтесь сейчас!</a
>
</form>
</StarlightPage>
<script>
const params = new URLSearchParams(window.location.search)
for (const name of ["redirect_uri", "state", "nonce"]) {
const input = document.querySelector(
`input[name="${name}"]`
) as HTMLInputElement
if (input && params.has(name)) input.value = params.get(name)!
}
const form = document.querySelector("form")!
const error = document.querySelector("#error")! as HTMLSpanElement
form.addEventListener("submit", async (e) => {
e.preventDefault()
error.style.display = "none"
try {
const username = (
form.querySelector('[type="text"]') as HTMLInputElement
).value
const password = (
form.querySelector('[type="password"]') as HTMLInputElement
).value
const session =
localStorage.getItem("session") ?? crypto.randomUUID()
localStorage.setItem("session", session)
const res = await fetch(
"https://matrix.federated.nexus/_matrix/client/v3/login",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
type: "m.login.password",
device_id: session,
initial_device_display_name: `Federated Nexus Login from ${navigator.userAgent}`,
identifier: { type: "m.id.user", user: username },
password,
}),
}
)
if (!res.ok) {
throw new Error((await res.json())["error"])
}
const data = await res.json()
const id = form.querySelector(
'input[name="user_id"]'
) as HTMLInputElement
id.value = data.user_id
const token = form.querySelector(
'input[name="access_token"]'
) as HTMLInputElement
token.value = data.access_token
form.submit()
} catch (err: any) {
error.textContent = err.message || "Login failed"
}
})
</script>

View file

@ -0,0 +1,26 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../../styles/page.css"
---
<StarlightPage
frontmatter={{ title: "Регистрация в Federated Nexus", template: "splash" }}
>
<form method="post" action="https://register.federated.nexus">
<label>
Имя пользователя (только буквы и цифры, без пробелов)
<input
name="username"
type="text"
required
pattern="^[A-Za-z0-9]+$"
/>
</label>
<label>
E-mail
<input name="email" type="email" required />
</label>
<button type="submit"><span>Отправить</span></button>
</form>
</StarlightPage>

View file

@ -0,0 +1,14 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../../styles/page.css"
---
<StarlightPage
frontmatter={{
title: "Успешная регистрация в Federated Nexus",
template: "splash",
}}
>
После одобрения вы получите электронное письмо с именем пользователя и
паролем. Одобрение обычно занимает менее двух рабочих дней.
</StarlightPage>

14
src/pages/success.astro Normal file
View file

@ -0,0 +1,14 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../styles/page.css"
---
<StarlightPage
frontmatter={{
title: "Successfully Registered for Federated Nexus",
template: "splash",
}}
>
Once approved, you will receive an email with a username and password.
Approval usually takes less than two business days.
</StarlightPage>

View file

@ -0,0 +1,16 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../../styles/page.css"
---
<StarlightPage
frontmatter={{
title: "Реєстрація не вдалася",
template: "splash",
}}
>
Під час реєстрації сталася помилка. Спробуйте пізніше, а якщо помилка не
зникне, приєднайтеся до нашої <a
href="https://matrix.to/#/#community:federated.nexus">кімнати Matrix</a
> і повідомте мене.
</StarlightPage>

100
src/pages/uk-ua/login.astro Normal file
View file

@ -0,0 +1,100 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../../styles/page.css"
---
<StarlightPage
frontmatter={{ title: "Вхід до Federated Nexus", template: "splash" }}
>
<form method="post" action="https://auth.federated.nexus/login">
<input type="hidden" name="state" />
<input type="hidden" name="nonce" />
<input type="hidden" name="user_id" />
<input type="hidden" name="access_token" />
<input type="hidden" name="redirect_uri" />
<label>
Ім'я користувача
<input type="text" />
</label>
<label>
Пароль
<input type="password" />
</label>
<noscript id="error">
Ця форма не буде працювати без JavaScript.
</noscript>
<span id="error"> </span>
<button type="submit"><span>Надіслати</span></button>
<a href="/register">Не маєте облікового запису? Зареєструйтесь зараз!</a
>
</form>
</StarlightPage>
<script>
const params = new URLSearchParams(window.location.search)
for (const name of ["redirect_uri", "state", "nonce"]) {
const input = document.querySelector(
`input[name="${name}"]`
) as HTMLInputElement
if (input && params.has(name)) input.value = params.get(name)!
}
const form = document.querySelector("form")!
const error = document.querySelector("#error")! as HTMLSpanElement
form.addEventListener("submit", async (e) => {
e.preventDefault()
error.style.display = "none"
try {
const username = (
form.querySelector('[type="text"]') as HTMLInputElement
).value
const password = (
form.querySelector('[type="password"]') as HTMLInputElement
).value
const session =
localStorage.getItem("session") ?? crypto.randomUUID()
localStorage.setItem("session", session)
const res = await fetch(
"https://matrix.federated.nexus/_matrix/client/v3/login",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
type: "m.login.password",
device_id: session,
initial_device_display_name: `Federated Nexus Login from ${navigator.userAgent}`,
identifier: { type: "m.id.user", user: username },
password,
}),
}
)
if (!res.ok) {
throw new Error((await res.json())["error"])
}
const data = await res.json()
const id = form.querySelector(
'input[name="user_id"]'
) as HTMLInputElement
id.value = data.user_id
const token = form.querySelector(
'input[name="access_token"]'
) as HTMLInputElement
token.value = data.access_token
form.submit()
} catch (err: any) {
error.textContent = err.message || "Login failed"
}
})
</script>

View file

@ -0,0 +1,26 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../../styles/page.css"
---
<StarlightPage
frontmatter={{ title: "Реєстрація в Federated Nexus", template: "splash" }}
>
<form method="post" action="https://register.federated.nexus">
<label>
Ім'я користувача (тільки буквено-цифрові символи, без пробілів)
<input
name="username"
type="text"
required
pattern="^[A-Za-z0-9]+$"
/>
</label>
<label>
E-mail
<input name="email" type="email" required />
</label>
<button type="submit"><span>Надіслати</span></button>
</form>
</StarlightPage>

View file

@ -0,0 +1,14 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../../styles/page.css"
---
<StarlightPage
frontmatter={{
title: "Успішна реєстрація в Federated Nexus",
template: "splash",
}}
>
Після затвердження ви отримаєте електронний лист з іменем користувача та
паролем. Зазвичай затвердження займає менше двох робочих днів.
</StarlightPage>

View file

@ -3,10 +3,9 @@ body {
flex-direction: column;
align-items: center;
justify-content: center;
& form {
& main form {
& * {
display: block;
max-width: 40rem;
width: 100%;
}

View file

@ -1,5 +1,5 @@
{
"extends": "astro/tsconfigs/strict",
"include": [".astro/types.d.ts", "**/*"],
"exclude": ["dist"]
"extends": "astro/tsconfigs/strict",
"include": [".astro/types.d.ts", "**/*"],
"exclude": ["dist"]
}