120 lines
4.0 KiB
Markdown
120 lines
4.0 KiB
Markdown
<img src="./images/icon.png" width="100" height="100">
|
|
|
|
|
|
# Toju / Zoracord
|
|
|
|
Desktop chat app with four parts:
|
|
|
|
- `src/` Angular client
|
|
- `electron/` desktop shell, IPC, and local database
|
|
- `server/` directory server, join request API, and websocket events
|
|
- `website/` Toju website served at toju.app
|
|
|
|
## Install
|
|
|
|
1. Run `npm install`
|
|
2. Run `cd server && npm install`
|
|
3. Copy `.env.example` to `.env`
|
|
|
|
## Config
|
|
|
|
Root `.env`:
|
|
|
|
- `SSL=true` uses HTTPS for Angular, the server, and Electron dev mode
|
|
- `PORT=3001` changes the server port in local development and overrides the server app setting
|
|
|
|
If `SSL=true`, run `./generate-cert.sh` once.
|
|
|
|
Server files:
|
|
|
|
- `server/data/variables.json` holds `klipyApiKey`
|
|
- `server/data/variables.json` also holds `releaseManifestUrl` for desktop auto updates
|
|
- `server/data/variables.json` can now also hold optional `serverHost` (an IP address or hostname to bind to)
|
|
- `server/data/variables.json` can now also hold `serverProtocol` (`http` or `https`)
|
|
- `server/data/variables.json` can now also hold `serverPort` (1-65535)
|
|
- When `serverProtocol` is `https`, the certificate must match the configured `serverHost` or IP
|
|
|
|
## Main commands
|
|
|
|
- `npm run dev` starts Angular, the server, and Electron
|
|
- `npm run electron:dev` starts Angular and Electron
|
|
- `npm run server:dev` starts only the server
|
|
- `npm run build` builds the Angular client
|
|
- `npm run build:electron` builds the Electron code
|
|
- `npm run build:all` builds client, Electron, and server
|
|
- `npm run lint` runs ESLint
|
|
- `npm run lint:fix` formats templates, sorts template props, and fixes lint issues
|
|
- `npm run test` runs Angular tests
|
|
|
|
## Server project
|
|
|
|
The code in `server/` is a small Node and TypeScript service.
|
|
It handles the public server directory, join requests, websocket updates, and Klipy routes.
|
|
|
|
Inside `server/`:
|
|
|
|
- `npm run dev` starts the server with reload
|
|
- `npm run build` compiles to `dist/`
|
|
- `npm run start` runs the compiled server
|
|
|
|
# Images
|
|
<img src="./website/src/images/screenshots/gif.png" width="700" height="400">
|
|
<img src="./website/src/images/screenshots/screenshare_gaming.png" width="700" height="400">
|
|
|
|
## Main Toju app Structure
|
|
|
|
| Path | Description |
|
|
|------|-------------|
|
|
| `src/app/` | Main application root |
|
|
| `src/app/core/` | Core utilities, services, models |
|
|
| `src/app/domains/` | Domain-driven modules |
|
|
| `src/app/features/` | UI feature modules |
|
|
| `src/app/infrastructure/` | Low-level infrastructure (DB, realtime, etc.) |
|
|
| `src/app/shared/` | Shared UI components |
|
|
| `src/app/shared-kernel/` | Shared domain contracts & models |
|
|
| `src/app/store/` | Global state management |
|
|
| `src/assets/` | Static assets |
|
|
| `src/environments/` | Environment configs |
|
|
|
|
---
|
|
|
|
### Domains
|
|
|
|
| Path | Link |
|
|
|------|------|
|
|
| Attachment | [app/domains/attachment/README.md](src/app/domains/attachment/README.md) |
|
|
| Auth | [app/domains/auth/README.md](src/app/domains/auth/README.md) |
|
|
| Chat | [app/domains/chat/README.md](src/app/domains/chat/README.md) |
|
|
| Screen Share | [app/domains/screen-share/README.md](src/app/domains/screen-share/README.md) |
|
|
| Server Directory | [app/domains/server-directory/README.md](src/app/domains/server-directory/README.md) |
|
|
| Voice Connection | [app/domains/voice-connection/README.md](src/app/domains/voice-connection/README.md) |
|
|
| Voice Session | [app/domains/voice-session/README.md](src/app/domains/voice-session/README.md) |
|
|
| Domains Root | [app/domains/README.md](src/app/domains/README.md) |
|
|
|
|
---
|
|
|
|
### Infrastructure
|
|
|
|
| Path | Link |
|
|
|------|------|
|
|
| Persistence | [src/app/infrastructure/persistence/README.md](src/app/infrastructure/persistence/README.md) |
|
|
| Realtime | [src/app/infrastructure/realtime/README.md](src/app/infrastructure/realtime/README.md) |
|
|
|
|
---
|
|
|
|
### Shared Kernel
|
|
|
|
| Path | Link |
|
|
|------|------|
|
|
| Shared Kernel | [src/app/shared-kernel/README.md](src/app/shared-kernel/README.md) |
|
|
|
|
---
|
|
|
|
### Entry Points
|
|
|
|
| File | Link |
|
|
|------|------|
|
|
| Main | [main.ts](src/main.ts) |
|
|
| Index HTML | [index.html](src/index.html) |
|
|
| App Root | [app/app.ts](src/app/app.ts) |
|