diff --git a/docs/use-cases/01-self-host.md b/docs/use-cases/01-self-host.md new file mode 100644 index 000000000..5706d1188 --- /dev/null +++ b/docs/use-cases/01-self-host.md @@ -0,0 +1,43 @@ +# Self Hosting + +## General Description + +Self-hosting refers to the practice of hosting and maintaining servers, networks, storage, services, and other types of infrastructure by oneself rather than relying on a third-party vendor. This could involve running a server from a home or business location, or leasing a dedicated server at a data center. + +There are several reasons for choosing to self-host. These can include: + +1. Cost savings: Over time, self-hosting can be more cost-effective, especially for businesses with large scale needs. + +1. Control: Self-hosting provides a greater level of control over the infrastructure and services. It allows the owner to customize the system to their specific needs. + +1. Privacy and security: Self-hosting can offer improved privacy and security because data remains under the control of the host rather than being stored on third-party servers. + +1. Independent: Being independent of third-party services can ensure that one's websites, applications, or services remain up even if the third-party service goes down. + +## Stories + +### Story 1: Private mumble server hosted at home + +Alice wants to self-host a mumble server for her family. + +- She visits to the cLAN website, and follows the instructions on how to install cLAN-OS on her server. +- Alice logs into a terminal on her server via SSH (alternatively uses cLAN GUI app) +- Using the cLAN CLI or GUI tool, alice creates a new private network for her family (VPN) +- Alice now browses a list of curated cLAN modules and finds a module for mumble. +- She adds this module to her network using the cLAN tool. +- After that, she uses the clan tool to invite her family members to her network +- Other family members join the private network via the invitation. +- By accepting the invitation, other members automatically install all required software to interact with the network on their machine. + +### Story 2: Adding a service to an existing network + +Alice wants to add a photos app to her private network + +- She uses the clan CLI or GUI tool to manage her existing private cLAN family network +- She discovers a module for photoprism, and adds it to her server using the tool +- Other members who are already part of her network, will receive a notification that an update is required to their environment +- After accepting, all new software and services to interact with the new photoprism service will be installed automatically. + +## Challenges + +... diff --git a/docs/use-cases/02-join-network.md b/docs/use-cases/02-join-network.md new file mode 100644 index 000000000..d8fa30f94 --- /dev/null +++ b/docs/use-cases/02-join-network.md @@ -0,0 +1,37 @@ +# Joining a cLAN network + +## General Description + +Joining a self-hosted infrastructure involves connecting to a network, server, or system that is privately owned and managed, instead of being hosted by a third-party service provider. This could be a business's internal server, a private cloud setup, or any other private IT infrastructure that is not publicly accessible or controlled by outside entities. + +## Stories + +### Story 1: Joining a private network + +Alice' son Bob has never heard of cLAN, but receives an invitation URL from Alice who already set up private cLAN network for her family. + +Bob opens the invitation link and lands on the cLAN website. He quickly learns about what cLAN is and can see that the invitation is for a private network of his family that hosts a number of services, like a private voice chat and a photo sharing platform. + +Bob decides to join the network and follows the instructions to install the cLAN tool on his computer. + +Feeding the invitation link to the cLAN tool, bob registers his machine with the network. + +All programs required to interact with the network will be installed and configured automatically and securely. + +Optionally, bob can customize the configuration of these programs through a simplified configuration interface. + +### Story 2: Receiving breaking changes + +The cLAN family network which Bob is part of received an update. + +The existing photo sharing service has been removed and replaced with another alternative service. The new photo sharing service requires a different client app to view and upload photos. + +Bob accepts the update. Now his environment will be updated. The old client software will be removed and the new one installed. + +Because Bob has customized the previous photo viewing app, he is notified that this customization is no longer valid, as the software has been removed (deprecation message).l + +Optionally, Bob can now customize the new photo viewing software through his cLAN configuration app or via a config file. + +## Challenges + +... diff --git a/docs/use-cases/03-maintaining-clan-modules.md b/docs/use-cases/03-maintaining-clan-modules.md new file mode 100644 index 000000000..5f26aa273 --- /dev/null +++ b/docs/use-cases/03-maintaining-clan-modules.md @@ -0,0 +1,25 @@ +# cLAN module maintaining + +## General Description + +cLAN modules are pieces of software that can be used by admins to build a private or public infrastructure. + +cLAN modules should have the following properties: + +1. Documented: It should be clear what the module does and how to use it. +1. Self contained: A module should be usable as is. If it requires any other software or settings, those should be delivered with the module itself. +1. Simple to deploy and use: Modules should have opinionated defaults that just work. Any customization should be optional + +## Stories + +### Story 1: Maintaining a shared folder module + +Alice maintains a module for a shared folder service that she uses in her own infra, but also publishes for the community. + +By following clan module standards (Backups, Interfaces, Output schema, etc), other community members have an easy time re-using the module within their own infra. + +She benefits from publishing the module, because other community members start using it and help to maintain it. + +## Challenges + +... diff --git a/docs/use-cases/_template.md b/docs/use-cases/_template.md new file mode 100644 index 000000000..8c16ba853 --- /dev/null +++ b/docs/use-cases/_template.md @@ -0,0 +1,17 @@ +# (TITLE) + +## General Description + +## Stories + +### Story 1: Some Description + +Alice... + +### Story 2: Some Description + +Bob... + +## Challenges + +...