Finished The Vision paragraph, fixed some minor issues here and there
All checks were successful
check / test (pull_request) Successful in 5s

This commit is contained in:
Luis Hebendanz 2023-09-04 15:44:21 +02:00
parent c384eec38f
commit 23cbfa8eff
5 changed files with 54 additions and 25 deletions

View File

@ -127,6 +127,6 @@ url = "/privacy-policy/"
weight = 10
[[extra.footer.nav]]
name = "Overview"
url = "/docs/overview"
name = "The Vision"
url = "/docs/thevision"
weight = 20

View File

@ -14,7 +14,7 @@ repo_url = "https://git.clan.lol/clan/"
[[extra.menu.main]]
name = "Docs"
section = "docs"
url = "/docs/overview"
url = "/docs/thevision"
weight = 10
[[extra.menu.main]]

View File

@ -15,11 +15,10 @@ top = false
+++
# cLAN
### cLAN
cLAN envisions a new model for a decentralized network, designed to provide families, smaller groups, and small businesses a platform that's private, secure, and user-friendly. The system transcends the conventional reliance on centralized services, allowing for direct, end-to-end encrypted communication among users. Rooted in open-source software, cLAN ensures no vendor lock-in, and introduces robust features including remote management, backup functionality, user-friendly app store, and fleet management for small businesses.
## Architecture Overview
### Decentralized Network Model
@ -151,8 +150,8 @@ This modules would be build by the VM controller into a system with the followin
inputs.myNetworkFlake.nixosModules.default
./local-overrides.nix
];
}
}
};
};
}
```
@ -259,7 +258,6 @@ Our safeguards will include virtual machine isolation to mitigate the damage an
To address this, we only offer a limited set of options in our high-level modules, which either restrict or issue warnings for configurations deemed to be unsafe.
For instance, services are exposed exclusively to the internal network and not to the wider internet, thereby offering an extra layer of security.
TODO: Threats that are out-of-scope
### Trusted compute base

View File

@ -6,15 +6,37 @@ updated = 2021-05-01T19:30:00+00:00
draft = false
weight = 30
sort_by = "weight"
paginator.next = "docs/overview/index.md"
template = "docs/page.html"
+++
Our vision in this context, is how we think the final product should behave and how users will interact with it. cLAN aims to provide an alternative to the ever-increasing centralization of the internet.
Rather than relying on a centralized cloud, accessible through the clearnet, our goal is to establish an encrypted network of interconnected computers, forming a decentralized darknet—a user-driven cloud known as a cLAN.
In this context, our vision defines how we envision the behavior of the final product and how users will interact with it. cLAN aims to offer a compelling alternative to the ever-increasing centralization of the internet.
Our vision includes providing users with a seamless experience when joining one or multiple cLANs through invitation links. Clicking the link will trigger a popup that seeks confirmation to connect to the network.
### Decentralized Networking
During the joining process, the user's computer (referred to as the client hereafter) will download a file containing information about a virtual machine (VM). The client will then automatically initiate the VM setup, and upon completion, this VM will become part of the cLAN.
Instead of relying on a centralized cloud accessible via the clearnet, our objective is to establish an encrypted network of interconnected computers, essentially creating a decentralized darknet, which we affectionately call a cLAN.
Once connected, users will gain access to a dashboard showcasing all the services offered within this particular cLAN. Within this dashboard, users can easily add applications or choose to host services for other cLAN members, such as a Nextcloud instance or other services.
### Seamless Onboarding
Our vision includes providing users with a seamless experience when they join one or multiple cLANs through invitation links. Clicking the link will trigger a popup that seeks confirmation to connect to the network.
### Effortless VM Integration
During the joining process, the user's computer (referred to as the client hereafter) will download a file containing information about a virtual machine (VM). The client will then automatically set up the VM, and once complete, this VM will become part of the cLAN.
Users can also choose to seamlessly integrate the cLAN configuration into their base system, effectively allowing the cLAN admin(s) to remotely manage their system.
### Dashboard for Services
Once connected, users will have access to a dashboard displaying all the services offered within this specific cLAN. Within this dashboard, users can effortlessly add applications or decide to host services for fellow cLAN members, such as a Nextcloud instance or backup endpoints.
### Decentralization and Redundancy
The core idea is to ensure service decentralization without a single point of failure. If one service fails, another machine within the cLAN network can spin up a replacement service. VMs are designed to be lightweight, minimizing resource consumption.
### Administrative Control
Within a cLAN, administrators define the configuration file and have control over who becomes part of the network.
Go to [Technical Overview](@/docs/overview/index.md) to see more indepth details of our work.

View File

@ -1,17 +1,33 @@
// Set darkmode
document.getElementById('mode').addEventListener('click', () => {
let isDarkTheme = document.body.classList.contains('dark');
setColorTheme(!isDarkTheme);
setColorTheme(!isDarkTheme ? "dark" : "light");
});
function setColorTheme(dark) {
if (dark) {
let preferDarkTheme = prefersDarkMode();
let theme = localStorage.getItem('theme');
if (theme !== null) {
setColorTheme(theme);
} else {
setColorTheme(preferDarkTheme ? "dark" : "light");
}
// Get the media query list object for the prefers-color-scheme media feature
const colorSchemeQueryList = window.matchMedia("(prefers-color-scheme: dark)");
// Add an event listener for the change event
colorSchemeQueryList.addEventListener("change", handleColorSchemeChange);
function setColorTheme(theme) {
if (theme === "dark") {
document.body.classList.add('dark');
switchClanLogo("white");
localStorage.setItem('theme', 'dark');
} else {
document.body.classList.remove('dark');
switchClanLogo("dark");
localStorage.setItem('theme', 'light');
}
}
@ -51,21 +67,14 @@ function switchClanLogo(theme) {
}
let preferDarkTheme = prefersDarkMode();
setColorTheme(preferDarkTheme);
// Get the media query list object for the prefers-color-scheme media feature
const colorSchemeQueryList = window.matchMedia("(prefers-color-scheme: dark)");
// A function that executes some logic based on the color scheme preference
function handleColorSchemeChange(e) {
if (e.matches) {
// The user prefers dark mode
setColorTheme(true);
setColorTheme("dark");
} else {
// The user prefers light mode
setColorTheme(false);
setColorTheme("light");
}
}
// Add an event listener for the change event
colorSchemeQueryList.addEventListener("change", handleColorSchemeChange);