134 lines
5.0 KiB
Markdown
134 lines
5.0 KiB
Markdown
`LinkUp` is currently in` active development` and `not fully launched`.
|
|
|
|
To launch the App in Dev Mode:
|
|
|
|
`git clone https://git.ssh.surf/snxraven/LinkUp-P2P-Chat.git`
|
|
|
|
`cd LinkUp-P2P-Chat`
|
|
|
|
`npm i; npm i pear -g;`
|
|
|
|
Lastly - run the app:
|
|
`pear dev -s /tmp/tmp_pear`
|
|
|
|
--------
|
|
|
|
# LinkUp Documentation
|
|
|
|
## Overview
|
|
LinkUp is a peer-to-peer chat application that allows users to create and join chat rooms, share files, and communicate with each other in real-time. The application uses the Hyperswarm, Hyperdrive, and Corestore libraries for decentralized networking and storage. This documentation provides a comprehensive guide to understanding, setting up, and using LinkUp.
|
|
|
|
![Screenshot](images/screenshot.png)
|
|
|
|
## Table of Contents
|
|
- [Installation](#installation)
|
|
- [Configuration](#configuration)
|
|
- [Usage](#usage)
|
|
- [Registering a User](#registering-a-user)
|
|
- [Creating a Chat Room](#creating-a-chat-room)
|
|
- [Joining a Chat Room](#joining-a-chat-room)
|
|
- [Sending Messages](#sending-messages)
|
|
- [Attaching Files](#attaching-files)
|
|
- [Recording and Sending Audio Messages](#recording-and-sending-audio-messages)
|
|
- [Commands](#commands)
|
|
- [Development](#development)
|
|
- [Project Structure](#project-structure)
|
|
- [Event Handling](#event-handling)
|
|
- [FAQs](#faqs)
|
|
|
|
## Configuration
|
|
LinkUp uses a configuration file (`config.json`) to store user information, chat room details, and registered users. This file is automatically created and managed by the application.
|
|
|
|
### Configuration File Structure
|
|
```json
|
|
{
|
|
"userName": "",
|
|
"userAvatar": "",
|
|
"rooms": [],
|
|
"registeredUsers": {}
|
|
}
|
|
```
|
|
|
|
- `userName`: The username of the registered user.
|
|
- `userAvatar`: The URL of the user's avatar image.
|
|
- `rooms`: An array of chat rooms the user has joined or created.
|
|
- `registeredUsers`: An object containing registered usernames and their avatar URLs.
|
|
|
|
## Usage
|
|
|
|
### Registering a User
|
|
1. Launch the application.
|
|
2. If the configuration file does not exist, you will be prompted to register.
|
|
3. Enter a username and optionally select an avatar image.
|
|
4. Submit the registration form to complete the process.
|
|
|
|
### Creating a Chat Room
|
|
1. Click on the "Create/Join Room" button in the sidebar.
|
|
2. Click on "Create Room".
|
|
3. A new room will be created with a random topic.
|
|
|
|
### Joining a Chat Room
|
|
1. Click on the "Create/Join Room" button in the sidebar.
|
|
2. Enter the topic of the room you wish to join in the "Topic" field.
|
|
3. Click on "Join Room".
|
|
|
|
### Sending Messages
|
|
1. Select a chat room from the sidebar.
|
|
2. Enter your message in the message input box at the bottom of the chat window.
|
|
3. Press `Enter` or click on the "Send" button to send the message.
|
|
|
|
### Attaching Files
|
|
1. Click on the "Attach File" button in the message form.
|
|
2. Select a file from your device.
|
|
3. The file will be uploaded and a download link will be shared in the chat.
|
|
|
|
### Recording and Sending Audio Messages
|
|
1. Click and hold the "Talk" button to start recording an audio message.
|
|
2. Release the button to stop recording and send the audio message.
|
|
|
|
## Commands
|
|
LinkUp supports several commands that can be entered in the chat input box:
|
|
|
|
- `~clear`: Clears the chat messages.
|
|
- `~ping`: Responds with "pong".
|
|
- `~help`: Lists available commands.
|
|
- `~join [topic]`: Joins a chat room with the specified topic.
|
|
- `~leave`: Leaves the current chat room.
|
|
- `~create [alias]`: Creates a new chat room with the specified alias.
|
|
- `~list-files`: Lists all files available in the current chat room.
|
|
|
|
## Development
|
|
|
|
### Project Structure
|
|
- `app.js`: Main application logic.
|
|
- `commands.js`: Command handling logic.
|
|
- `index.html`: HTML structure of the application.
|
|
- `style.css`: CSS for styling the application.
|
|
- `config.json`: Configuration file for storing user and room data.
|
|
|
|
### Event Handling
|
|
LinkUp uses an `EventEmitter` to handle various events such as receiving messages, joining rooms, and updating the peer count. Event listeners are set up during the initialization process.
|
|
|
|
### Key Functions
|
|
- `initialize()`: Initializes the application, sets up event listeners, and loads configuration.
|
|
- `registerUser()`: Handles user registration.
|
|
- `createChatRoom()`: Creates a new chat room.
|
|
- `joinChatRoom()`: Joins an existing chat room.
|
|
- `sendMessage()`: Sends a text message.
|
|
- `handleFileInput()`: Handles file attachments.
|
|
- `setupEventListeners()`: Sets up event listeners for UI interactions.
|
|
|
|
## FAQs
|
|
|
|
**Q: How do I change my username or avatar?**
|
|
A: Currently, changing username or avatar after registration is not supported. You would need to delete the `config.json` file and restart the application to re-register.
|
|
|
|
**Q: How can I see the list of files shared in a room?**
|
|
A: Use the `~list-files` command to see all files shared in the current chat room.
|
|
|
|
**Q: How do I leave a chat room?**
|
|
A: Click on the "Leave Room" button in the chat window.
|
|
|
|
For more information, please refer to the [Pears Documentation](https://docs.pears.com/).
|
|
|
|
Feel free to contribute to this project by submitting issues or pull requests on [Git](https://git.ssh.surf/snxraven/LinkUp-P2P-Chat). |