Bienvenue sur l'application de chat privé quack .
Bienvenue sur quack , une application de chat gratuite et open source conçue pour un usage privé. quack offre une interface facile à utiliser et une intégration transparente avec les navigateurs Web, ce qui en fait une application Web progressive accessible depuis n'importe quelle plate-forme dotée d'un navigateur Web, telle que Chrome.
Inspiré de Slack mais plus abordable pour un usage privé, quack combine les meilleures fonctionnalités d'autres communicateurs tout en privilégiant la confidentialité et la sécurité. Les utilisateurs peuvent héberger leur propre application, garantissant ainsi un contrôle total sur leurs données.
Le moyen le plus rapide de commencer est d’utiliser Docker Compose. L’utilisation de la commande suivante démarrera l’application avec les paramètres par défaut en un rien de temps.
docker compose up -d
accédez à http://localhost:8080 et utilisez les informations d'identification par défaut pour vous connecter admin / 123
.
Pour remplacer les paramètres par défaut, le fichier chat.config.ts
peut être créé dans le répertoire racine du projet. Vous pouvez utiliser chat.config.example.ts
comme modèle. Le fichier doit exporter l'objet suivant :
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
[string] - (facultatif) lorsque la méthode de stockage gcs est utilisée
Pour démarrer le serveur :
cd ./deno/server
deno task dev
Installez les dépendances et démarrez l'application React :
cd ./app
npm install
npm run dev
Pour démarrer le livre d'histoires :
cd ./app
npm install
npm run storybook
Prend actuellement en charge Google Cloud Storage. Pour l'activer, définissez fileStorage
dans le fichier de configuration sur gcs
spécifiez gcsBucket
et définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS
.
Nous utilisons une instance MongoDB sans serveur en raison de sa fiabilité et de sa rentabilité : nous ne payons que pour ce que nous utilisons. L'option la moins chère disponible sur Mongo Atlas est suffisante pour l'application, car nous n'avons besoin d'aucune fonctionnalité pub/sub interne.
Ce serait bien d'avoir une solution sans serveur, mais pour l'instant, l'option la moins chère consiste à utiliser GCE. Je n'ai aucune idée de comment propager des messages à d'autres instances sans serveur sans service pub/sub hébergé. MongoDB, Redis et Postgres doivent être hébergés pour surveiller les messages. Peut-être que Google Cloud Pub/Sub serait une bonne option ?
Le chat a un système de plugin. Un exemple de plugin peut être trouvé dans plugins/example
. Comment utiliser les plugins et les points d'accroche des plugins à déterminer.
admin / 123
Les nouveaux utilisateurs peuvent être invités avec la commande /invite
qui générera un lien à usage unique pour l'enregistrement des utilisateurs.
Les contributions sont les bienvenues. Pour les changements majeurs, veuillez d'abord ouvrir un ticket pour discuter de ce que vous souhaitez changer. Assurez-vous de mettre à jour les tests le cas échéant.
Licence MIT
Droit d'auteur (c) 2023 CodeCat