Compare commits

...
Sign in to create a new pull request.
Author SHA1 Message Date
ae043a7ad7
show ToS in sidebar 2026-07-25 20:24:20 -04:00
e8d05b2f8e
update placeholder user count 2026-07-25 20:19:26 -04:00
d5d3236e02
add ToS 2026-07-25 20:18:20 -04:00
91157ce6ae
update donate page 2026-07-25 19:33:18 -04:00
d7e3d8f956
add how to change your password page 2026-07-06 11:08:36 -04:00
a4a79fcaa7
remove translations
We are doing this because our main contributor to translations is busy right now. This could be re-added in the future.
2026-07-02 20:25:22 -04:00
49d1a2c1d9
searxng -> degoog 2026-07-02 20:23:35 -04:00
cb777349e2
update matrix page 2026-07-02 20:16:20 -04:00
25c2e5e88b
Add istalri to donators 2026-05-23 11:20:29 -04:00
7b5e1ebec1
remove "More Coming Soon" section from federated nexus site 2026-05-11 14:57:23 -04:00
9363ffebeb
replace outdated grapevine mention 2026-04-08 16:23:52 -04:00
00aebddad6
Revert "remove liberapay for now"
This reverts commit a710594805.
2026-03-17 18:00:32 -04:00
2b8cef9e93
fix action 2026-03-16 22:33:53 -04:00
8b0de515c6 Update translations
Attention. We're trying to add a translation :-)
Alexey.

Reviewed-on: federated-nexus/website#7
Co-authored-by: aleksei <support@digiology.org>
Co-committed-by: aleksei <support@digiology.org>
2026-03-16 21:29:57 -04:00
c8558f288c Merge pull request 'Add privacy policy' (#6) from policy into main
Reviewed-on: federated-nexus/website#6
2026-03-16 17:39:25 -04:00
ae06940293
bump versions 2026-03-14 17:28:04 -04:00
005d7600c3
fix missing bracket 2026-03-14 17:25:27 -04:00
3d245c0f9c
trailing slashes strike again! 2026-03-14 17:19:47 -04:00
d84a869a55
use deno in action 2026-03-14 17:08:35 -04:00
1d565fa13a
bump stuff 2026-03-14 16:41:41 -04:00
cab14c545d
bump deps 2026-03-14 16:38:22 -04:00
70a196bf37
add privacy policy 2026-03-14 16:34:25 -04:00
a710594805
remove liberapay for now 2026-03-09 13:23:29 -04:00
29652f426e
update hardcoded user count 2026-03-03 17:18:16 -05:00
206ecace6c update translations
Alexey. Localization update. I recommend checking the edits before merging :-)

Reviewed-on: federated-nexus/website#5
Reviewed-by: Henry Hiles <henry@henryhiles.com>
Co-authored-by: aleksei <support@digiology.org>
Co-committed-by: aleksei <support@digiology.org>
2026-02-28 09:52:16 -05:00
ea88d803e9
fix matrix info 2026-02-27 14:13:16 -05:00
a5397b870f
fix room version 2026-02-27 14:11:06 -05:00
8522e82f1e
live updating user count 2026-02-23 12:08:20 -05:00
e1c47189c1
remove some unneeded stuff 2026-02-10 14:38:32 -05:00
fc106775a0
fix service url 2026-02-10 14:07:27 -05:00
17fb77cb5d Merge pull request 'main' (#4) from aleksei/website:main into main
Reviewed-on: federated-nexus/website#4
2025-12-31 17:44:35 -05:00
dfae0ced19 Обновить src/content/docs/fr-fr/index.mdx 2025-12-31 17:27:47 -05:00
cca01a458d Обновить src/content/docs/uk-ua/index.mdx 2025-12-31 17:27:07 -05:00
278164e70c Обновить src/content/docs/ru-ru/index.mdx 2025-12-31 17:25:37 -05:00
b4aaba9bd5 Обновить src/content/docs/fr-fr/donate.mdx 2025-12-31 17:21:41 -05:00
3705896a49 Обновить src/content/docs/uk-ua/donate.mdx 2025-12-31 17:16:36 -05:00
d923cc4608 Обновить src/content/docs/ru-ru/donate.mdx 2025-12-31 17:14:55 -05:00
d0640baa61 Обновить src/content/docs/ru-ru/donate.mdx 2025-12-31 17:13:11 -05:00
0dbcef8ce4
Add liberapay back 2025-12-31 16:52:40 -05:00
a4e19c6bbf
add hexa 2025-12-31 16:29:10 -05:00
26d925ed4a
Try to fix err message 2025-11-25 13:10:09 -05:00
5cbefaca17
Fix error messages 2025-11-25 12:37:34 -05:00
83b4402ff0
use direnv 2025-11-09 16:16:20 -05:00
7f600e77ad
use spaces not tabs 2025-10-31 16:16:11 -04:00
9221fffcb0
fix indentation 2025-10-31 16:07:31 -04:00
7660b4e07b Merge pull request 'main' (#3) from aleksei/website:main into main
Reviewed-on: federated-nexus/website#3
2025-10-30 22:25:58 -04:00
a96758cac5 Обновить src/content/docs/fr-fr/index.mdx
Add status
2025-10-30 22:14:45 -04:00
80467b293a Обновить src/content/docs/uk-ua/index.mdx 2025-10-30 22:13:29 -04:00
6ab8db87ef Обновить src/content/docs/ru-ru/index.mdx
add status
2025-10-30 22:11:49 -04:00
070b9e8a91
add status page 2025-10-30 20:59:16 -04:00
a350538121
update translations 2025-10-29 10:40:24 -04:00
1b260f9988
add honeypot 2025-10-29 10:39:41 -04:00
c38b6926fd Merge pull request 'Обновить src/pages/ru-ru/login.astro' (#2) from aleksei/website:aleksei-patch-1 into main
Reviewed-on: federated-nexus/website#2
2025-10-27 11:47:26 -04:00
e30fcfe4f0 Обновить src/pages/ru-ru/login.astro 2025-10-27 11:34:06 -04:00
2aa3865c76
update translations 2025-10-27 11:19:48 -04:00
aae7a06984
rm ooye 2025-10-24 13:00:47 -04:00
111d337d47
update translations 2025-09-27 13:07:30 -04:00
a2c9068b70
change i -> we 2025-09-27 12:53:57 -04:00
60ffc639a1
update translations 2025-09-27 12:34:11 -04:00
06afef032e
Translation fixes 2025-09-20 18:28:57 -04:00
72cfca5623
update translations 2025-09-20 16:50:48 -04:00
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
45 changed files with 1835 additions and 1082 deletions

1
.envrc Normal file
View file

@ -0,0 +1 @@
use nix -p deno

View file

@ -1,50 +1,56 @@
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@v6
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
- uses: denoland/setup-deno@v2.0.3
with:
cache: true
- name: Install dependencies
run: npm i
- name: Install dependencies
run: deno 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: deno 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: Create artifact
run: |
tar \
--dereference --hard-dereference \
-cvf "$RUNNER_TEMP/artifact.tar" \
-C ./dist .
- uses: actions/upload-artifact@v4
with:
name: github-pages
path: ${{ runner.temp }}/artifact.tar
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.0.5

3
.gitignore vendored
View file

@ -22,3 +22,6 @@ pnpm-debug.log*
# jetbrains setting folder
.idea/
# direnv
.direnv/

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": []
}

View file

@ -2,7 +2,7 @@ import { defineConfig, passthroughImageService } from "astro/config"
import starlight from "@astrojs/starlight"
export default defineConfig({
trailingSlash: "never",
trailingSlash: "always",
build: { format: "directory" },
integrations: [
starlight({
@ -16,7 +16,7 @@ export default defineConfig({
social: [
{
icon: "seti:git",
label: "Source Code",
label: "Git",
href: "https://git.federated.nexus",
},
{
@ -25,6 +25,18 @@ export default defineConfig({
href: "https://wetdry.world/@QuadRadical",
},
],
sidebar: [
{ slug: "index" },
{
label: "Services",
autogenerate: { directory: "services" },
},
{ slug: "donate" },
{ slug: "change-password" },
{ slug: "tos" },
{ slug: "code" },
{ slug: "privacy-policy" },
],
}),
],
image: { service: passthroughImageService() },

7
deno.json Normal file
View file

@ -0,0 +1,7 @@
{
"imports": {
"fs": "node:fs",
"url": "node:url",
"path": "node:path"
}
}

2178
deno.lock generated

File diff suppressed because it is too large Load diff

View file

@ -9,9 +9,11 @@
"astro": "astro"
},
"devDependencies": {
"astro": "^5.1.8",
"@astrojs/starlight": "^0.34.8",
"astro": "^5.18.1",
"prettier": "^3.8.1",
"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

@ -1,8 +1,11 @@
{
"m.homeserver": {
"base_url": "https://matrix.federated.nexus",
"org.matrix.msc3575.proxy": {
"url": "https://matrix.federated.nexus"
"base_url": "https://matrix.federated.nexus"
},
"org.matrix.msc4143.rtc_foci": [
{
"type": "livekit",
"livekit_service_url": "https://lk-jwt.call.federated.nexus"
}
}
]
}

View file

@ -4,6 +4,10 @@
"matrix_id": "@quadradical:federated.nexus",
"email_address": "henry@henryhiles.com",
"role": "m.role.admin"
},
{
"matrix_id": "@hexaheximal:federated.nexus",
"role": "m.role.admin"
}
]
}

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)

View file

@ -0,0 +1,6 @@
---
title: How to Change Your Password
---
You can change your account's password at https://matrix.federated.nexus/_continuwuity/account/password/change, or your favorite Matrix client.
Any other page will not correctly change your password.

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

@ -3,10 +3,18 @@ title: Donate
---
Federated Nexus runs off of donations, so if you're enjoying our
services please consider donating. Ideally, we take Interac E-Transfer
to: henry@henryhiles.com. If Interac E-Transfer doesn't work in your
country, join the [Matrix
room](https://matrix.to/#/#community:federated.nexus) and we'll work
something out. A huge thank you to our current sponsors:
services please consider donating through one of the following methods:
- @VeryLoud: CAD$100
- Interac E-Transfer: If you are Canadian, you should be able to send an Interac E-Transfer from your bank to the address henry@henryhiles.com to donate. This is preferred, as there are no fees.
- [Liberapay](https://liberapay.com/QuadRadical/donate) is the other option for donating, and should work from any country. Liberapay as a platform is primarily for recurring donations, but you can choose "Manual renewal" for a one-time donation.
A huge thank you to our weekly sponsors:
- @istalri
And also to our one-time donators:
- @VeryLoud
- @Aristarchus of Samos
- @nexy7574
You are helping keep Federated Nexus running, thank you!

View file

@ -3,58 +3,60 @@ title: Home
template: splash
hero:
title: Experience free, fast, and private software with Federated Nexus
tagline: Federated Nexus is a community resource hosting multiple FOSS (especially federated) services, including Matrix and Forgejo.
tagline: Federated Nexus is a community resource hosting multiple FOSS (especially federated) services, including Matrix and Forgejo. We currently have <span id="user-count">850</span> users.
image:
file: ../../images/icon.svg
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
- text: Donate
icon: seti:shell
link: donate/
banner:
content: If you are experiencing issues, check <a href="https://status.federated.nexus">our status page.</a>
---
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. [Learn More...](services/matrix/)
</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 an open source git forge, that (unlike GitHub) will never train an AI on your code 🙃. [Learn More...](services/forgejo/)
</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 [Degoog](https://github.com/degoog-org/degoog) instance that allows you to perform fast, privacy-focused searches across the web, completely free from tracking, profiling, or intrusive advertising. [Learn More...](services/degoog/)
</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. 🙃
<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.
</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 aim to maintain a friendly, diverse, and inclusive community. As part of this, we are not afraid to hoist the ban hammer against any bigoted, homophobic, or otherwise unfriendly people. We follow the [Contributor Covenant](code).
</Card>
</CardGrid>
<script>
{`
(async () => {
const response = await fetch("https://matrix.federated.nexus/_continuwuity/local_user_count")
const json = await response.json();
document.querySelector("#user-count").innerText = json["count"]
})()
`}
</script>

View file

@ -0,0 +1,19 @@
---
title: Privacy Policy
---
Federated Nexus is operated by Henry Hiles (QuadRadical).
Federated Nexus collects and stores account email addresses and usernames indefinitely for spam prevention and account management.
Due to limitations of the Matrix protocol, it is not possible to remove sent messages when an account is deactivated. Messages sent through this server may therefore persist indefinitely.
Because Federated Nexus participates in the Matrix federation network, messages and account identifiers may be transmitted to and stored by other Matrix homeservers outside our control.
We keep logs of requests made to our servers for operational and security purposes. These logs include IP addresses, and are automatically deleted at the start of each month.
Federated Nexus may use essential cookies for authentication and session management when accessing web services. These cookies are required for the service to function and are not used for tracking or advertising.
We do not sell personal data.
For privacy inquiries or data requests, contact: info@federated.nexus.

View file

@ -0,0 +1,7 @@
---
title: Degoog
---
[Degoog](https://github.com/degoog-org/degoog) lets you perform fast, privacy-focused searches across the web—completely free from tracking, profiling, or intrusive advertising. Degoog works by aggregating results from many different search engines (you can configure which ones it queries in the [settings](https://search.federated.nexus/settings)) into one page. You can find Degoog hosted at https://search.federated.nexus.
![A search for "Degoog" on Degoog, showing results with links, favicons, and descriptions](../../../images/degoog/search.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,55 @@
---
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:
- [Sable](https://sable.moe) provides a Discord-like UI and has some really useful features. You can use it on the web, or as a PWA.
- [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 Sable doesn't, but I find Sable 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 Sable here, but the process isn't too different between clients. You can find the Federated Nexus instance of Sable here: https://app.federated.nexus
### 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 Sable 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 Sable 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 Sable 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 Continuwuity 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 v12, 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.
## 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)

31
src/content/docs/tos.mdx Normal file
View file

@ -0,0 +1,31 @@
---
title: Terms of Service
---
## Eligibility
You must be at least 13 years old to create an account or use the Service. By creating an account or using the Service, you represent and warrant that you are at least 13 years of age.
## Code of Conduct
You agree to comply with the Federated Nexus Code of Conduct. Violations may result in warnings, suspension, or termination of your account.
## Matrix Federation
Federated Nexus participates in the Matrix federation network. Messages, media, and account identifiers you send may be transmitted to and stored by other Matrix homeservers, which operate independently and under their own policies.
## Account Suspension and Termination
We may suspend or terminate accounts that violate these Terms, the Code of Conduct, or applicable law, or where necessary to protect the security and operation of the service.
## Disclaimer
The Service is provided "as is" and "as available" without warranties of any kind, to the fullest extent permitted by applicable law.
## Changes to These Terms
We may update these Terms from time to time. Continued use of the Service after changes take effect constitutes acceptance of the revised Terms.
## Contact
For questions about these Terms, contact: info@federated.nexus

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

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

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

@ -1,6 +1,6 @@
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"
import "../styles/login.css"
import "../styles/page.css"
---
<StarlightPage
@ -22,13 +22,13 @@ import "../styles/login.css"
<input type="password" />
</label>
<noscript id="error">
<noscript class="error">
This form will not function without JavaScript.
</noscript>
<span id="error"> </span>
<span id="error" class="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>
@ -36,7 +36,7 @@ import "../styles/login.css"
const params = new URLSearchParams(window.location.search)
for (const name of ["redirect_uri", "state", "nonce"]) {
const input = document.querySelector(
`input[name="${name}"]`
`input[name="${name}"]`,
) as HTMLInputElement
if (input && params.has(name)) input.value = params.get(name)!
}
@ -72,7 +72,7 @@ import "../styles/login.css"
identifier: { type: "m.id.user", user: username },
password,
}),
}
},
)
if (!res.ok) {
@ -82,17 +82,18 @@ import "../styles/login.css"
const data = await res.json()
const id = form.querySelector(
'input[name="user_id"]'
'input[name="user_id"]',
) as HTMLInputElement
id.value = data.user_id
const token = form.querySelector(
'input[name="access_token"]'
'input[name="access_token"]',
) as HTMLInputElement
token.value = data.access_token
form.submit()
} catch (err: any) {
error.style = ""
error.textContent = err.message || "Login failed"
}
})

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

@ -0,0 +1,44 @@
---
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>
<div class="honeypot">
<input
type="text"
name="honeypot"
tabindex="-1"
autocomplete="off"
/>
</div>
<label>
Email
<input name="email" type="email" required />
</label>
<label class="checkbox">
<input name="agreement" type="checkbox" required />
I confirm that I am at least 13 years of age and agree to the
<a href="../tos/">Terms of Service</a>,
<a href="../privacy-policy/">Privacy Policy</a>, and
<a href="../code/">Code of Conduct</a>.
</label>
<button type="submit"><span>Submit</span></button>
</form>
</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

@ -1,12 +1,16 @@
body {
& .honeypot {
display: none;
}
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
& form {
& main form {
& * {
display: block;
max-width: 40rem;
width: 100%;
}
@ -18,6 +22,11 @@ body {
margin-top: 0.3rem;
}
& .checkbox * {
width: auto;
display: inline;
}
& button {
margin: 1.4rem 0;
cursor: pointer;
@ -33,7 +42,7 @@ body {
padding: 1rem 1.25rem;
}
& #error {
& .error {
margin-top: 1rem;
color: var(--sl-color-red);
}

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"]
}