Willkommen bei der quack -Anwendung für privates Chatten.
Willkommen bei quack , einer kostenlosen Open-Source-Chat-Anwendung für den privaten Gebrauch. quack bietet eine benutzerfreundliche Oberfläche und eine nahtlose Integration mit Webbrowsern, was es zu einer progressiven Webanwendung macht, auf die von jeder Plattform mit einem Webbrowser wie Chrome aus zugegriffen werden kann.
Inspiriert von Slack, aber erschwinglicher für den privaten Gebrauch, kombiniert quack die besten Funktionen anderer Kommunikatoren und legt dabei besonderen Wert auf Datenschutz und Sicherheit. Benutzer können ihre eigene App hosten und so die vollständige Kontrolle über ihre Daten gewährleisten.
Der schnellste Einstieg ist die Verwendung von Docker Compose. Mit dem folgenden Befehl wird die Anwendung im Handumdrehen mit den Standardeinstellungen gestartet.
docker compose up -d
Navigieren Sie zu http://localhost:8080 und melden Sie sich mit den Standardanmeldeinformationen unter admin / 123
an.
Um die Standardeinstellungen zu überschreiben, kann die Datei chat.config.ts
im Stammverzeichnis des Projekts erstellt werden. Sie können chat.config.example.ts
als Vorlage verwenden. Die Datei sollte das folgende Objekt exportieren:
type Config = {
port ?: number // default `PORT` env otherwise `8080`
sessionSecret ?: string // auto generated on first run to `secrets.json` but can be overwritten here
trustProxy ?: bool | string | number // default `uniquelocal` ref: https://expressjs.com/en/guide/behind-proxies.html
vapid ?: { // auto generated on first run to `secrets.json` but can be overwritten here
publicKey : string
secretKey : string
} ,
databaseUrl ?: string // default `DATABASE_URL` env
cors ?: string [ ] // by default [ 'https?://localhost(:[0-9]{,4})' ],
storage ?: { // Where uploaded files should be stored
type : 'memory' | 'gcs' | 'fs' // default `fs` / `memory` in tests
directory : string // where to save files when type `fs`
bucket : string // bucket name for `gcs`
}
apiUrl ?: string // default 'http://localhost:8080' url of api
appUrl ?: string // default 'http://localhost:8081' url for frontend app
} ;
GOOGLE_APPLICATION_CREDENTIALS
[Zeichenfolge] – (optional), wenn die GCS-Speichermethode verwendet wird
So starten Sie den Server:
cd ./deno/server
deno task dev
Installieren Sie Abhängigkeiten und starten Sie die React-App:
cd ./app
npm install
npm run dev
So starten Sie das Bilderbuch:
cd ./app
npm install
npm run storybook
Unterstützt derzeit Google Cloud Storage. Um es zu aktivieren, setzen Sie fileStorage
in der Konfigurationsdatei auf gcs
geben Sie gcsBucket
an und legen Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS
fest.
Wir verwenden eine serverlose MongoDB-Instanz aufgrund ihrer Zuverlässigkeit und Kosteneffizienz – wir zahlen nur für das, was wir nutzen. Für die Anwendung reicht die günstigste auf Mongo Atlas verfügbare Option aus, da wir keine interne Pub/Sub-Funktionalität benötigen.
Es wäre schön, eine serverlose Lösung zu haben, aber derzeit ist die Verwendung von GCE die günstigste Option. Ich habe keine Ahnung, wie ich Nachrichten ohne einen gehosteten Pub/Sub-Dienst an andere serverlose Instanzen weitergeben kann. MongoDB, Redis und Postgres müssen gehostet werden, um auf Nachrichten zu achten. Vielleicht wäre Google Cloud Pub/Sub eine gute Option?
Chat verfügt über ein Plugin-System. Ein Beispiel-Plugin finden Sie unter plugins/example
. Wie man Plugins und Plugin-Hook-Points verwendet, wird noch bekannt gegeben.
admin / 123
Neue Benutzer können mit dem Befehl /invite
eingeladen werden, der einen Einmal-Link für die Benutzerregistrierung generiert.
Beiträge sind willkommen. Bei größeren Änderungen öffnen Sie bitte zunächst ein Problem, um zu besprechen, was Sie ändern möchten. Stellen Sie sicher, dass Sie die Tests entsprechend aktualisieren.
MIT-Lizenz
Copyright (c) 2023 CodeCat