Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
ae043a7ad7 |
|||
|
e8d05b2f8e |
|||
|
d5d3236e02 |
|||
|
91157ce6ae |
|||
|
d7e3d8f956 |
|||
|
a4a79fcaa7 |
|||
|
49d1a2c1d9 |
|||
|
cb777349e2 |
|||
|
25c2e5e88b |
|||
|
7b5e1ebec1 |
|||
|
9363ffebeb |
|||
|
00aebddad6 |
|||
|
2b8cef9e93 |
|||
| 8b0de515c6 | |||
| c8558f288c | |||
|
ae06940293 |
|||
|
005d7600c3 |
|||
|
3d245c0f9c |
|||
|
d84a869a55 |
|||
|
1d565fa13a |
|||
|
cab14c545d |
|||
|
70a196bf37 |
|||
|
a710594805 |
|||
|
29652f426e |
|||
| 206ecace6c | |||
|
ea88d803e9 |
|||
|
a5397b870f |
|||
|
8522e82f1e |
|||
|
e1c47189c1 |
|||
|
fc106775a0 |
|||
| 17fb77cb5d | |||
| dfae0ced19 | |||
| cca01a458d | |||
| 278164e70c | |||
| b4aaba9bd5 | |||
| 3705896a49 | |||
| d923cc4608 | |||
| d0640baa61 | |||
|
0dbcef8ce4 |
|||
|
a4e19c6bbf |
|||
|
26d925ed4a |
|||
|
5cbefaca17 |
|||
|
83b4402ff0 |
|||
|
7f600e77ad |
|||
|
9221fffcb0 |
|||
| 7660b4e07b | |||
| a96758cac5 | |||
| 80467b293a | |||
| 6ab8db87ef | |||
|
070b9e8a91 |
|||
|
a350538121 |
|||
|
1b260f9988 |
|||
| c38b6926fd | |||
| e30fcfe4f0 | |||
|
2aa3865c76 |
|||
|
aae7a06984 |
|||
|
111d337d47 |
|||
|
a2c9068b70 |
|||
|
60ffc639a1 |
|||
|
06afef032e |
|||
|
72cfca5623 |
|||
|
a3e987c327 |
|||
|
2b646d4f97 |
|||
|
477290c9a9 |
|||
|
933c8c49c5 |
|||
|
0cd2e87dcf |
|||
|
64ac9f51a2 |
|||
|
692344edfb |
|||
|
0c55b47acd |
|||
|
fac33f23b8 |
|||
|
51a5b4329e |
|||
|
72aa95c4ed |
|||
|
28551fa0e2 |
|||
|
2243e7b2e1 |
|||
|
1b6c0ceaac |
|||
|
856ef1ba88 |
|||
|
6307b03f4d |
|||
|
a4c5204d07 |
|||
|
f498fce8ed |
|||
|
d30d640df3 |
|||
|
beb284bf43 |
|||
|
4717a44f56 |
|||
|
670c6040e6 |
|||
|
ea320fb4f4 |
|||
|
291aab7ab8 |
|||
|
6b924a1c34 |
|||
|
b9393a07de |
|||
|
b2febf1b13 |
|||
|
618d72f789 |
|||
|
2a64bc0bb0 |
|||
|
5bfe6ee17b |
|||
|
359c041668 |
|||
|
ee6f7be971 |
|||
|
f89ecb0e47 |
|||
|
a4c37062d9 |
|||
|
460a20c870 |
|||
|
b9cd9dd655 |
|||
|
80edcbaa47 |
|||
|
110f3d1117 |
|||
| 5bb449db34 | |||
| 5b4952827b | |||
|
f471221618 |
|||
|
219167ea3b |
|||
|
d81f259777 |
|||
|
987c2f517b |
1
.envrc
Normal file
|
|
@ -0,0 +1 @@
|
|||
use nix -p deno
|
||||
78
.github/workflows/astro.yml
vendored
|
|
@ -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: Build with Astro
|
||||
run: deno run astro build
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
path: dist
|
||||
- name: Create artifact
|
||||
run: |
|
||||
tar \
|
||||
--dereference --hard-dereference \
|
||||
-cvf "$RUNNER_TEMP/artifact.tar" \
|
||||
-C ./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
|
||||
- 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
|
|
@ -22,3 +22,6 @@ pnpm-debug.log*
|
|||
|
||||
# jetbrains setting folder
|
||||
.idea/
|
||||
|
||||
# direnv
|
||||
.direnv/
|
||||
6
.prettierrc
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"plugins": ["prettier-plugin-astro"],
|
||||
"tabWidth": 4,
|
||||
"semi": false,
|
||||
"overrides": [{ "files": "*.astro", "options": { "parser": "astro" } }]
|
||||
}
|
||||
4
.vscode/extensions.json
vendored
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"recommendations": ["astro-build.astro-vscode"],
|
||||
"unwantedRecommendations": []
|
||||
"recommendations": ["astro-build.astro-vscode"],
|
||||
"unwantedRecommendations": []
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"imports": {
|
||||
"fs": "node:fs",
|
||||
"url": "node:url",
|
||||
"path": "node:path"
|
||||
}
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
After Width: | Height: | Size: 35 KiB |
|
|
@ -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:
|
||||

|
||||
|
||||
And of course, the actual editor, where you can compose documents in a GUI similar to Google Docs, and export as DocX or PDF.
|
||||

|
||||
|
||||
You can also add subdocuments!
|
||||

|
||||
6
src/content/docs/change-password.mdx
Normal 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
|
|
@ -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 anyone’s 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 [Mozilla’s code of conduct team](https://github.com/mozilla/inclusion).
|
||||
|
|
@ -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!
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
19
src/content/docs/privacy-policy.mdx
Normal 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.
|
||||
7
src/content/docs/services/degoog.mdx
Normal 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.
|
||||
|
||||

|
||||
29
src/content/docs/services/docs.mdx
Normal 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:
|
||||
|
||||

|
||||
|
||||
## 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:
|
||||
|
||||

|
||||
|
||||
## 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:
|
||||
|
||||

|
||||
32
src/content/docs/services/forgejo.mdx
Normal 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:
|
||||
|
||||

|
||||
|
||||
## 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:
|
||||
|
||||

|
||||
|
||||
## 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)
|
||||
55
src/content/docs/services/matrix.mdx
Normal 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.
|
||||
|
||||

|
||||
|
||||
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:
|
||||
|
||||

|
||||
|
||||
Click the notification, and you will be greeted with the invites page. Click public, which has a notification next to it.
|
||||
|
||||

|
||||
|
||||
From there, accept the invitation to the "Federated Nexus Community" room, and you're good to go!
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
21
src/content/docs/services/redlib.mdx
Normal 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.
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||

|
||||
|
||||
## 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!
|
||||
|
||||

|
||||
31
src/content/docs/tos.mdx
Normal 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
|
||||
BIN
src/images/degoog/search.png
Normal file
|
After Width: | Height: | Size: 241 KiB |
|
Before Width: | Height: | Size: 301 KiB After Width: | Height: | Size: 303 KiB |
|
Before Width: | Height: | Size: 124 KiB After Width: | Height: | Size: 162 KiB |
BIN
src/images/docs/landing.png
Normal file
|
After Width: | Height: | Size: 742 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 13 KiB |
BIN
src/images/forgejo/dashboard.png
Normal file
|
After Width: | Height: | Size: 380 KiB |
BIN
src/images/forgejo/explore.png
Normal file
|
After Width: | Height: | Size: 315 KiB |
BIN
src/images/matrix/accept.png
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
src/images/matrix/badge.png
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
src/images/matrix/homeserver.png
Normal file
|
After Width: | Height: | Size: 128 KiB |
BIN
src/images/matrix/homeserver2.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
src/images/matrix/invite.png
Normal file
|
After Width: | Height: | Size: 115 KiB |
BIN
src/images/redlib/home.png
Normal file
|
After Width: | Height: | Size: 781 KiB |
BIN
src/images/redlib/libredirect.png
Normal file
|
After Width: | Height: | Size: 198 KiB |
BIN
src/images/redlib/post.png
Normal file
|
After Width: | Height: | Size: 369 KiB |
16
src/pages/failure.astro
Normal 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>
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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>
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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"]
|
||||
}
|
||||
|
|
|
|||