├── .yarnrc
├── web
├── src
│ ├── components
│ │ ├── reusable
│ │ │ ├── LinkOpener.css
│ │ │ ├── WysiwygEditor.css
│ │ │ ├── SuspenseFallback.css
│ │ │ ├── README.md
│ │ │ ├── SuspenseFallback.tsx
│ │ │ ├── Loading.tsx
│ │ │ ├── RegionEditor.css
│ │ │ ├── GoBoard.css
│ │ │ ├── MeetingScreen.css
│ │ │ ├── ErrorFallback.tsx
│ │ │ ├── TalkyStarter.tsx
│ │ │ ├── GitHubCorner.css
│ │ │ ├── TalkyStarter.css
│ │ │ ├── MediaShare.css
│ │ │ ├── Loading.css
│ │ │ ├── FaceCard.css
│ │ │ ├── Landing.css
│ │ │ ├── LinkOpener.tsx
│ │ │ ├── GitHubCorner.tsx
│ │ │ ├── WysiwygEditor.tsx
│ │ │ ├── MomentaryChat.css
│ │ │ ├── FaceCard.tsx
│ │ │ ├── Landing.tsx
│ │ │ ├── MeetingScreen.tsx
│ │ │ ├── RegionEditor.tsx
│ │ │ ├── MomentaryChat.tsx
│ │ │ ├── MediaShare.tsx
│ │ │ └── GoBoard.tsx
│ │ ├── MySetting.css
│ │ ├── SingleRoom.css
│ │ ├── App.css
│ │ ├── FaceList.css
│ │ ├── SingleRoomEntrance.css
│ │ ├── App.test.tsx
│ │ ├── MemberList.css
│ │ ├── App.tsx
│ │ ├── SingleRoom.tsx
│ │ ├── ControlPanel.css
│ │ ├── GatherArea.css
│ │ ├── FaceList.tsx
│ │ ├── MySetting.tsx
│ │ ├── MemberList.tsx
│ │ ├── SingleRoomEntrance.tsx
│ │ └── ControlPanel.tsx
│ ├── vite-env.d.ts
│ ├── utils
│ │ ├── sleep.ts
│ │ ├── __mocks__
│ │ │ └── crypto.ts
│ │ ├── excalidraw.ts
│ │ ├── types.ts
│ │ ├── emoji.ts
│ │ ├── base64.ts
│ │ ├── storage.ts
│ │ ├── url.ts
│ │ └── crypto.ts
│ ├── setupTests.ts
│ ├── index.tsx
│ ├── index.css
│ ├── media
│ │ ├── screen.ts
│ │ ├── audio.ts
│ │ ├── video.ts
│ │ ├── devices.ts
│ │ ├── capture.ts
│ │ └── imagePresets.ts
│ ├── network
│ │ ├── ipfs-pubsub-room.d.ts
│ │ ├── room.ts
│ │ ├── common.ts
│ │ ├── pubsubUtils.ts
│ │ ├── trackUtils.ts
│ │ ├── ipfsUtils.ts
│ │ └── peerjsUtils.ts
│ ├── hooks
│ │ ├── useNotification.ts
│ │ ├── useInputAvatar.ts
│ │ ├── useNicknameMap.ts
│ │ ├── useAvailableDevices.ts
│ │ ├── useGoBoard.ts
│ │ ├── useMomentaryChat.ts
│ │ ├── useMediaShare.ts
│ │ ├── useFaceImages.ts
│ │ ├── useGatherArea.ts
│ │ └── useFaceVideos.ts
│ └── states
│ │ ├── global.ts
│ │ └── roomMap.ts
├── public
│ ├── favicon.ico
│ ├── logo192.png
│ ├── logo512.png
│ ├── robots.txt
│ ├── manifest.json
│ ├── stream_viewer.html
│ ├── audio-decoder.js
│ └── audio-encoder.js
├── vite.config.ts
├── tsconfig.json
├── index.html
├── .eslintrc.json
└── package.json
├── images
├── logo.png
└── screen01.png
├── electron
├── build
│ ├── icon.icns
│ ├── icon.ico
│ └── icon.svg
├── src
│ ├── preload.js
│ ├── prompt-polyfill.js
│ ├── get-display-media-polyfill.js
│ └── main.js
└── package.json
├── .gitignore
├── .gitmodules
├── package.json
├── .github
└── workflows
│ ├── ci.yml
│ └── cd.yml
├── LICENSE
├── libopus
└── Makefile
├── CONTRIBUTING.md
├── ckeditor5
├── webpack.config.js
├── package.json
└── src
│ └── ckeditor.js
└── README.md
/.yarnrc:
--------------------------------------------------------------------------------
1 | ignore-engines true
2 |
--------------------------------------------------------------------------------
/web/src/components/reusable/LinkOpener.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/web/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
Will auto reload in {waitSec} sec.
27 |
14 | {children}
15 | 19 | The key feature of this app is to share webcam still images to see 20 | each other. Images are just 72px square and only updated every two 21 | minutes. They are so small that you can place the window all the time 22 | near the left edge of your desktop. Images are sent each other in a 23 | peer-to-peer manner and not stored anywhere. The link represents a 24 | virtual room and all room members can see each other. Be careful not 25 | to leak the link to unwanted person. 26 |
27 |31 | On the left of the screen, you will see faces in a column, which we 32 | call face list and the rest is what we call gather area. In the gather 33 | area, you can drag your avatar, and the location is shared with 34 | others. We can define regions in the gather area. Regions can be just 35 | background or add some features. There is a preset you can choose when 36 | creating a new room. 37 |
38 |42 | One of the regions is called "Meeting" in which you can talk 43 | with others in the same meeting region. The face becomes a small video 44 | in the meeting region. We can create as many meeting regions as we 45 | want. There is another region called "Media", with which we 46 | can share screens and videos in high resolution. "Chat" 47 | region is to text. The chat texts are not stored anywhere other than 48 | all connected peers. 49 |
50 |