Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/iamnanjo/encrypted-chat-app
End-to-end encrypted realtime chat app made using Nuxt 3, Websockets and the Web Crypto API
https://github.com/iamnanjo/encrypted-chat-app
chat-application encryption end-to-end-encryption nuxt3 web-crypto-api websocket
Last synced: about 1 month ago
JSON representation
End-to-end encrypted realtime chat app made using Nuxt 3, Websockets and the Web Crypto API
- Host: GitHub
- URL: https://github.com/iamnanjo/encrypted-chat-app
- Owner: IamNanjo
- Created: 2023-12-20T00:56:46.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-16T11:28:06.000Z (7 months ago)
- Last Synced: 2024-10-17T08:02:15.270Z (2 months ago)
- Topics: chat-application, encryption, end-to-end-encryption, nuxt3, web-crypto-api, websocket
- Language: TypeScript
- Homepage: https://chat.nanjo.tech
- Size: 2.06 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Encrypted Chat App
This chat app uses end-to-end-encryption with RSA-OAEP.
The encryption is done on the client using the Web Crypto API.
The encrypted messages and public keys are saved on the server and they are then sent to users.New chats and messages are sent to clients using Websockets.
This means that only the new messages need to be decrypted and there will be no need to constantly poll the server for updates.
This makes the chat app far more performant efficient.## Screenshots
![Login page](public/screenshots/login.png)
![User profile](public/screenshots/user-profile.png)
![User search](public/screenshots/user-search.png)
![Chat with messages](public/screenshots/chat-with-messages.png)
## Database
This app uses Drizzle ORM with better-sqlite3 adapter for the database connection.
![Database EER diagram](db-diagram.svg)
## Setup
Make sure to install the dependencies:
```bash
# npm
npm install# yarn
yarn install# bun
bun install
```### Database Setup
```bash
# npm
npm run dbmigrate
npm run dbpush# yarn
yarn dbmigrate
yarn dbpush# bun
bun dbmigrate
bun dbpush
```### Development Server
Start the development server on `http://localhost:3000`:
```bash
# npm
npm run dev# yarn
yarn dev# bun
bun dev
```### Production
Build the application for production:
```bash
# npm
npm run build# yarn
yarn build# bun
bun run build
```Locally preview production build:
```bash
# npm
npm run preview# yarn
yarn preview# bun
bun preview
```Serve the production build using PM2:
```bash
# npm
npm run start# yarn
yarn start# bun
bun start
```