main: prelim update to documention.
This commit is contained in:
parent
9d76959374
commit
07e02fa07e
99
README.md
99
README.md
@ -2,7 +2,7 @@
|
||||
|
||||
![RemnantChat logo](./public/logo/logo.svg)
|
||||
|
||||
RemnantChat is a free (as in both price and freedom) communication tool. Designed to be the simplest way to connect with others privately and securely, it is:
|
||||
RemnantChat is a free (as in both price and freedom) communication tool. It is forked from the platform ChitChatter [see the upstream project](https://github.com/jeremyckahn/chitchatter/blob/develop/README.md). Designed to be the simplest way to connect with others privately and securely, it is:
|
||||
|
||||
- Fully open source (licensed under [GPL v2](./LICENSE))
|
||||
- Peer-to-peer
|
||||
@ -15,20 +15,15 @@ RemnantChat is a free (as in both price and freedom) communication tool. Designe
|
||||
- Embeddable
|
||||
- [Self-hostable](#self-hosting)
|
||||
|
||||
<<<<<<< HEAD
|
||||
Chitchatter uses [Vite](https://vitejs.dev/). The secure networking and streaming magic would not be possible without [Trystero](https://github.com/dmotz/trystero). File transfer functionality is powered by [`secure-file-transfer`](https://github.com/jeremyckahn/secure-file-transfer).
|
||||
=======
|
||||
RemnantChat uses the [Create React App](https://github.com/facebook/create-react-app) toolchain. The secure networking and streaming magic would not be possible without [Trystero](https://github.com/dmotz/trystero). File transfer functionality is powered by [`secure-file-transfer`](https://github.com/jeremyckahn/secure-file-transfer).
|
||||
|
||||
> > > > > > > 6003270 (Main: Begin derived app rewrite into remnantchat.)
|
||||
|
||||
## Status
|
||||
|
||||
- [![Known Vulnerabilities](https://snyk.io/test/github/jeremyckahn/RemnantChat/badge.svg?targetFile=package.json)](https://snyk.io/test/github/jeremyckahn/RemnantChat?targetFile=package.json)
|
||||
TBA
|
||||
|
||||
## How to use it
|
||||
|
||||
Open https://RemnantChat.im/ and join a room to start chatting with anyone else who is in the room. By default, room names are random [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)s that are generated client-side. To privately communicate with someone, it is recommended to join one of these randomly-generated rooms and share the URL (via the "🔗" button at the top of the page) to whomever you wish to communicate with via a secure medium of your choosing (such as [Burner Note](https://burnernote.com/) or [Yopass](https://yopass.se/)). Your user name will be presented to you, and it would be good to share that with who you will be chatting with beforehand so they know they're talking to you.
|
||||
Open https://remnant.chat/ and join a room to start chatting with anyone else who is in the room. By default, room names are random [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)s that are generated client-side. To privately communicate with someone, it is recommended to join one of these randomly-generated rooms and share the URL (via the "🔗" button at the top of the page) to whomever you wish to communicate with via a secure medium of your choosing (such as [Burner Note](https://burnernote.com/) or [Yopass](https://yopass.se/)). Your user name will be presented to you, and it would be good to share that with who you will be chatting with beforehand so they know they're talking to you.
|
||||
|
||||
## Features
|
||||
|
||||
@ -52,19 +47,19 @@ Open https://RemnantChat.im/ and join a room to start chatting with anyone else
|
||||
- Messages are never persisted to disk. When you leave a peer room, messages are cleared from memory and cannot be retrieved.
|
||||
- RemnantChat is an entirely client-side communication app. It uses public WebTorrent servers to establish peer connections and STUN/TURN relay servers when direct peer-to-peer connections cannot be established, but there is no RemnantChat API server.
|
||||
- No analytics, tracking, or telemetry of any kind.
|
||||
- This is a community-driven and unfunded project that makes no money. The users come first and there is no corporate influence or financial interest involved.
|
||||
- This is a Christian community-driven project.
|
||||
|
||||
## Why another chat app?
|
||||
|
||||
There is no shortage of user-friendly chat apps available, but they rely on a central service to facilitate communication. It is difficult to trust these central services, as commercial interests and [government pressure](https://www.npr.org/2022/08/12/1117092169/nebraska-cops-used-facebook-messages-to-investigate-an-alleged-illegal-abortion) can compel service operators to work against the best interest of the users. Even when user data is handled in good faith by service operators, the possibility remains that [encrypted data held at rest may be decrypted](https://www.cbsnews.com/news/fbi-may-have-found-way-to-unlock-san-bernardino-shooters-iphone/) against the user's will.
|
||||
There is no shortage of user-friendly chat apps available, but they rely on a central service to facilitate communication. It is difficult to trust these central services. Even when user data is handled in good faith by service operators, the possibility remains that encrypted data held at rest may be decrypted against the user's will.
|
||||
|
||||
RemnantChat designs around these risks with a [web meshe architecture](https://dev.to/jeremyckahn/taking-the-power-back-with-web-meshes-omg). There is no central service operator that stores or potentially mishandles communication data. Some services are required to establish an initial connection between peers, but otherwise the app uses direct peer-to-peer communication for everything. Any services that are used by RemnantChat have no association with the project and are publicly available for all to use.
|
||||
RemnantChat designs around these risks with a web mesh architecture. There is no central service operator that stores or potentially mishandles communication data. Some services are required to establish an initial connection between peers, but otherwise the app uses direct peer-to-peer communication for everything. Any services that are used by RemnantChat have no association with the project and are publicly available for all to use.
|
||||
|
||||
## Use cases
|
||||
|
||||
RemnantChat offers a private and secure solution for:
|
||||
|
||||
- Organizing groups of people, such as unions or political movements
|
||||
- Churches
|
||||
- Conveniently moving text or data from one device to another
|
||||
- Video chatting with friends and family across operating systems (such as Android and iOS)
|
||||
- IT troubleshooting via screen sharing
|
||||
@ -78,25 +73,19 @@ RemnantChat offers a private and secure solution for:
|
||||
|
||||
### 💻️ Project status
|
||||
|
||||
I consider RemnantChat feature-complete inasmuch it does all the things I personally need it to do. I don't have specific plans to add significant functionality in the future, but I may do so if it seems fun to me at the time. **I am committed to fixing any significant bugs** that are reported, so please [open an issue](https://github.com/jeremyckahn/RemnantChat/issues/new) if you discover one! Aside from that, RemnantChat is effectively in maintenance mode for the foreseeable future.
|
||||
Please [open an issue](https://githaven.org/shiloh/RemnantChat/issues/new) if you discover a bug.
|
||||
|
||||
If you would like a feature to be implemented and are willing to pay a development cost to ensure it gets done, please file a GitHub issue describing the feature and indicate that you are willing to compensate for the work. If you are not willing to pay, please open a GitHub issue regardless. I may implement it if it seems fun to do so, but other members of the community may also step up to implement it via Pull Requests.
|
||||
If you would like a feature to be implemented please file a GitHaven issue describing the feature. If you are not able to work on it yourself other members of the community may step up to implement it via Pull Requests.
|
||||
|
||||
I will always make time support Pull Requests from others. If you're willing to put in the work to improve RemnantChat, I am willing to help shepherd that work along and get it shipped.
|
||||
We will always make time to support Pull Requests from others. If you're willing to put in the work to improve RemnantChat, we are willing to help shepherd that work along and get it shipped.
|
||||
|
||||
If you don't agree with the direction of the project, you are welcome to fork RemnantChat and take it in another one.
|
||||
|
||||
### 🏗️ Support and custom development
|
||||
|
||||
I'm willing to do paid installations and customizations of RemnantChat for your needs. If you'd like to contract me to make a version of RemnantChat that is custom built for you, please email me at jeremyckahn@gmail.com and let me know what you have in mind to get started.
|
||||
|
||||
---
|
||||
|
||||
## Veracity
|
||||
|
||||
The core of RemnantChat's security model is the fact that it is fully open source. You are free (and encouraged) to fully audit the project source code and infrastructure. Not only is the source code available under the terms of the [GPL](./LICENSE), but [all build logs are publicly accessible](https://github.com/jeremyckahn/RemnantChat/actions/workflows/pages/pages-build-deployment) as well.
|
||||
The core of RemnantChat's security model is the fact that it is fully open source. You are free (and encouraged) to fully audit the project source code and infrastructure.
|
||||
|
||||
If you would like to verify that the app hosted at https://RemnantChat.im/ is the one that is hosted on GitHub, you can use `dig`:
|
||||
If you would like to verify that the app hosted at https://remnant.chat/ is the one that is hosted on GitHaven, you can use `dig`:
|
||||
|
||||
```
|
||||
$ dig RemnantChat.im
|
||||
@ -120,24 +109,21 @@ jeremyckahn.github.io. 231 IN A 185.199.109.153
|
||||
jeremyckahn.github.io. 231 IN A 185.199.108.153
|
||||
```
|
||||
|
||||
To examine the static assets that are served to end users, you can audit the [`gh-pages` branch](https://github.com/jeremyckahn/RemnantChat/tree/gh-pages).
|
||||
|
||||
## Project roadmap
|
||||
|
||||
See the full ticket backlog [here](https://github.com/users/jeremyckahn/projects/1).
|
||||
TBA
|
||||
|
||||
## Environments
|
||||
|
||||
- Production environment: https://RemnantChat.im/
|
||||
- Mirror: https://RemnantChat.vercel.app/ (note that peers cannot connect across domains)
|
||||
- Staging: https://RemnantChat-git-develop-jeremyckahn.vercel.app/
|
||||
- Production environment: https://remnant.chat
|
||||
- Staging:
|
||||
|
||||
## SDK
|
||||
|
||||
You can use the official RemnantChat SDK to embed the app as a [Web Component](https://developer.mozilla.org/en-US/docs/Web/API/Web_components) called `<chat-room />`.
|
||||
|
||||
```html
|
||||
<script src="https://RemnantChat.im/sdk.js"></script>
|
||||
<script src="https://remnant.chat/sdk.js"></script>
|
||||
|
||||
<chat-room />
|
||||
```
|
||||
@ -174,6 +160,8 @@ This will install all of the dependencies.
|
||||
|
||||
### Available Scripts
|
||||
|
||||
Note: make sure to run 'npm install' after cloning the repo.
|
||||
|
||||
In the project directory, you can run:
|
||||
|
||||
#### `npm dev`
|
||||
@ -198,41 +186,16 @@ The build is minified and the filenames include the hashes.
|
||||
|
||||
### Self-hosting
|
||||
|
||||
<<<<<<< HEAD
|
||||
Chitchatter is designed to be forked and self-hosted. If you would like to change pairing or relay server configuration or you prefer to control your own builds and versions, [fork this repo](https://github.com/jeremyckahn/chitchatter/fork) and follow the steps below.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Chitchatter peer connections are bound to the instance's domain. So, a user of Chitchatter at https://chitchatter.im/ would not be able to connect to a user of a Chitchatter instance on another domain (such as a personal GitHub Pages-hosted fork).
|
||||
> =======
|
||||
> RemnantChat is designed to be forked and self-hosted. If you would like to change pairing or relay server configuration, or you simply prefer to control your own builds and versions, just [fork this repo](https://github.com/jeremyckahn/RemnantChat/fork) and follow the steps below.
|
||||
RemnantChat is designed to be forked and self-hosted. If you would like to change pairing or relay server configuration, or you simply prefer to control your own builds and versions, just [fork this repo](https://githaven.org/repo/fork/57) and follow the steps below.
|
||||
|
||||
#### Caveats
|
||||
|
||||
RemnantChat peer connections are bound to the instance's domain. So, a user of RemnantChat at https://RemnantChat.im/ would not be able to connect to a user of a RemnantChat instance on another domain (such as a personal GitHub Pages-hosted fork).
|
||||
|
||||
> > > > > > > 6003270 (Main: Begin derived app rewrite into remnantchat.)
|
||||
RemnantChat peer connections are bound to the instance's domain. So, a user of RemnantChat at https://remnant.chat/ would not be able to connect to a user of a RemnantChat instance on another domain.
|
||||
|
||||
#### Necessary steps after forking
|
||||
|
||||
Assuming you are hosting RemnantChat on [GitHub Pages](https://pages.github.com/):
|
||||
|
||||
<<<<<<< HEAD
|
||||
|
||||
1. Change the [`homepage` property in `package.json`](https://github.com/jeremyckahn/chitchatter/blob/1ea67e2c3a45115e054ebfe3457f2c3572c6213b/package.json#L4) to whatever URL your Chitchatter instance will be hosted from. This will be something like `https://github_user_or_org_name.github.io/chitchatter/`.
|
||||
2. Define a [`DEPLOY_KEY` GitHub Action secret](https://github.com/jeremyckahn/chitchatter/blob/e2bac732cf1288f7b5d0bec151098f18e8b1d0d6/.github/workflows/deploy.yml#L28-L31) (at `https://github.com/github_user_or_org_name/chitchatter/settings/secrets/actions`). See the docs for [`peaceiris/actions-gh-pages`](https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-set-ssh-private-key-deploy_key) for more information.
|
||||
3. If you're using GitHub Pages [without a custom domain](https://github.com/sitek94/vite-deploy-demo?tab=readme-ov-file#fix-assets-links), you'll need to define the repo name as the `base` property [in `vite.config.ts`](https://github.com/jeremyckahn/chitchatter/blob/df6d10868e12ad13036a44f959796f4da35adc28/vite.config.ts#L35-L38). Here's an example of how that might look:
|
||||
|
||||
```js
|
||||
const config = () => {
|
||||
return defineConfig({
|
||||
base: '/chitchatter/',
|
||||
build: {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
=======
|
||||
|
||||
1. Change the [`homepage` property in `package.json`](https://github.com/jeremyckahn/RemnantChat/blob/1ea67e2c3a45115e054ebfe3457f2c3572c6213b/package.json#L4) to whatever URL your RemnantChat instance will be hosted from. This will be something like `https://github_user_or_org_name.github.io/RemnantChat/`.
|
||||
2. Define a [`DEPLOY_KEY` GitHub Action secret](https://github.com/jeremyckahn/RemnantChat/blob/e2bac732cf1288f7b5d0bec151098f18e8b1d0d6/.github/workflows/deploy.yml#L28-L31) (at `https://github.com/github_user_or_org_name/RemnantChat/settings/secrets/actions`). See the docs for [`peaceiris/actions-gh-pages`](https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-set-ssh-private-key-deploy_key) for more information.
|
||||
> > > > > > > 6003270 (Main: Begin derived app rewrite into remnantchat.)
|
||||
@ -241,7 +204,11 @@ const config = () => {
|
||||
|
||||
##### On GitHub
|
||||
|
||||
When hosted on GitHub Pages and the configuration above has been done, the Production environment is updated when the remote `main` branch is updated (once GitHub Actions are enabled).
|
||||
# When hosted on GitHub Pages and the configuration above has been done, the Production environment is updated when the remote `main` branch is updated (once GitHub Actions are enabled).
|
||||
|
||||
#### Deployment After Forking
|
||||
|
||||
> > > > > > > 811c35b (main: prelim update to documention.)
|
||||
|
||||
##### On non-GitHub hosts
|
||||
|
||||
@ -257,9 +224,7 @@ Chitchatter utilizes the [MUI component library](https://mui.com/) which is [the
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
If you run into any issues with a custom RemnantChat installation, first ensure that you are using [the latest version of the code](https://github.com/jeremyckahn/RemnantChat/tree/main). If you are hosting your installation with GitHub Pages, sync your `main` branch and _not_ your `gh-pages` branch. Updating your `main` branch will trigger a proper rebuild of your `gh-pages` branch.
|
||||
|
||||
- https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork
|
||||
If you run into any issues with a custom RemnantChat installation, first ensure that you are using [the latest version of the code](https://githaven.org/shiloh/RemnantChat/tree/main).
|
||||
|
||||
#### Peers won't connect
|
||||
|
||||
@ -275,7 +240,7 @@ RemnantChat works on iOS Safari, but browser-level bugs often prevent peers from
|
||||
|
||||
##### Issues specific to Firefox
|
||||
|
||||
Per [#36](https://github.com/jeremyckahn/RemnantChat/issues/36), check your `about:config` settings and ensure that `media.peerconnection.enabled` is **enabled**.
|
||||
check your `about:config` settings and ensure that `media.peerconnection.enabled` is **enabled**.
|
||||
|
||||
#### Offered files can't be downloaded from peers
|
||||
|
||||
@ -283,16 +248,8 @@ Chitchatter uses [StreamSaver.js](https://github.com/jimmywarting/StreamSaver.js
|
||||
|
||||
### Security
|
||||
|
||||
RemnantChat undergoes [weekly security audits](https://github.com/jeremyckahn/RemnantChat/blob/develop/.github/workflows/security.yml) to identify and address potential vulnerabilities. Reports from all audits can be found in [**Issues**](https://github.com/jeremyckahn/RemnantChat/issues?q=%22Security+Report+-+%22).
|
||||
|
||||
### Contributors
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/jeremyckahn/RemnantChat/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=jeremyckahn/RemnantChat" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## ⚠️ [Disclaimer](https://RemnantChat.im/disclaimer)
|
||||
## ⚠️ [Disclaimer](https://remnant.chat/disclaimer)
|
||||
|
||||
By using RemnantChat, you agree to accept **full responsibility** for your actions related to its use. Additionally, you agree **not** to hold any contributors to the RemnantChat project responsible for any result of your use of it. The developers of RemnantChat do not endorse illegal activity.
|
||||
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "chitchatter",
|
||||
"name": "remnantchat",
|
||||
"version": "0.0.0",
|
||||
"homepage": "https://chitchatter.im/",
|
||||
"author": "Jeremy Kahn <me@jeremyckahn.com>",
|
||||
"homepage": "https://remnant.chat",
|
||||
"author": "Shiloh",
|
||||
"license": "GPL-2.0-or-later",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
|
@ -41,7 +41,7 @@ export const About = () => {
|
||||
{`
|
||||
### User Guide
|
||||
|
||||
RemnantChat is a communication tool designed to make secure and private communication accessible to all. It is a derived work from the the platform ChitChatter [see the upstream project](https://github.com/jeremyckahn/chitchatter/blob/develop/README.md) for project documentation [see the full README](https://githaven.org/shiloh/remnantchat/README.md)
|
||||
RemnantChat is a communication tool designed to make secure and private communication accessible to all. It is a derived work from the platform ChitChatter [see the upstream project](https://github.com/jeremyckahn/chitchatter/blob/develop/README.md) for project documentation [see the full README](https://githaven.org/shiloh/remnantchat/README.md)
|
||||
|
||||
#### Chat rooms
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user